在 3d 视图中显示时如何在设备屏幕中适合 3D 模型

How to fit 3D models in device screen when display it in 3d view

在我的演示项目中(3D 视图)。显示模型时,有些模型显示大尺寸(屏幕外),有些模型尺寸太小。适合设备屏幕的模型的最佳比例是多少。

我的代码是..

     private fun createRenderAble() {
        ModelRenderable.builder().setSource(
            this, RenderableSource.builder()
                .setSource(this, Uri.parse(model?.modelUri), RenderableSource.SourceType.GLB)
                .setRecenterMode(RenderableSource.RecenterMode.CENTER)
                .build()
        ).setRegistryId(model?.modelUri)
         .build()
         .thenAccept { renderable ->
                hideProgress()
                addNodeToScene(renderable)
            }
            .exceptionally {
                showToast(it.localizedMessage)
                hideProgress()
                null
            }
}

 private fun addNodeToScenee(renderable: ModelRenderable?) {
    val tempNode = Node()
    tempNode.renderable = renderable

    val collisionShape: Box = tempNode.collisionShape as Box
   // var radius = 1f

  //  if (collisionShape.size.x > 2.0) {
 //       radius = 3f
  //  }
  //  if (collisionShape.size.y > 1.3) {
   //     radius = 2f
   // }

     radius=collisionShape.size.x
    val node = DragTransformableNode(radius, transformationSystem).apply {
        setParent(sceneView.scene)
        this.renderable = renderable
        select()
    }

    sceneView.scene.addChild(node)
}

您可以通过检查可渲染对象的大小来控制它。 以下是可帮助您解决问题的代码。 将 renderable 设置为节点后,执行以下操作。

        val collisionShape: Box = node.collisionShape as Box
        var radius = 1f
        if (collisionShape.size.x > 2.0) {
            radius = 3f
        }
        if (collisionShape.size.y > 1.3) {
            radius = 2f
        }

val collisionShape: Box = node.collisionShape as Box
 radius=collisionShape.size.x

说明:我在这里做的是检查可渲染对象的宽度是否超​​过 2.0 米我将相机的半径设置为 3f。这将帮助我们将完整的模型容纳到屏幕中。高度也一样(collisionShape.size.y)。