在 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
)。
在我的演示项目中(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
)。