如何解决使用Sceneform Android在3D模型上绘制可渲染形状
我正在使用SceneForm Android SDK在Android APP中渲染3D模型。
要显示3D模型,我在下面使用此代码,该代码还支持3D模型中的旋转和缩放功能
private fun renderLocalObject(position: Int) {
ModelRenderable.builder()
.setSource(appCompatActivity,Uri.parse(models.get(position)))
.setRegistryId(models.get(position))
.build()
.thenAccept { modelRenderable: ModelRenderable ->
addNodeToScene(modelRenderable)
}
.exceptionally { throwable: Throwable? ->
var message: String?
message = if (throwable is CompletionException) {
Logger.DebugLog("ERROR LOADING 3D",throwable.message)
"Internet is not working"
} else {
Logger.DebugLog("ERROR LOADING 3D","FAILED TO LOAD")
"Can't load Model"
}
null
}
}
private fun addNodeToScene(model: ModelRenderable) {
if (sceneView != null) {
val transformationSystem = makeTransformationSystem()
val dragTransformableNode = DragTransformableNode(5f,transformationSystem)
dragTransformableNode.renderable = model
sceneView!!.scene.addChild(dragTransformableNode)
dragTransformableNode.select()
sceneView!!.getScene()
.addOnPeekTouchListener { hitTestResult: HitTestResult?,motionEvent: MotionEvent? ->
transformationSystem.onTouch(
hitTestResult,motionEvent
)
when (motionEvent?.action) {
MotionEvent.ACTION_UP ->
if (hitTestResult != null) {
addDot(hitTestResult)
}
}
}
}
}
我想直接在3d模型上绘制球形可渲染形状,但Node不会卡住模型。
以下是必需的输出
下面是我的代码的最终输出
这是我添加节点的代码
private fun addDot(hitTestResult: HitTestResult){
val color = Color(.8f,0f,0f)
MaterialFactory.makeOpaqueWithColor(appCompatActivity,color)
.thenAccept { material->
// The sphere is in local coordinate space,so make the center 0,0
val sphere = ShapeFactory.makeSphere(0.05f,Vector3.zero(),material)
val indicatorModel = Node()
indicatorModel.setParent(hitTestResult.node)
indicatorModel.worldPosition = hitTestResult.point
// indicatorModel.localPosition = Vector3(0f,-1f)
indicatorModel.renderable = sphere
// sceneView!!.getScene().addChild(indicatorModel)
}
}
有什么方法可以直接在3d模型上绘制形状。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。