如何使用sceneform android更改三维模型特定部分的颜色
我正在尝试使用sceneform SDK创建示例应用程序。我已经成功地将3d模型应用到应用程序中。现在我想更改特定部分的3D对象的颜色,而不是整个对象 这就是我试过的如何使用sceneform android更改三维模型特定部分的颜色,android,sceneform,Android,Sceneform,我正在尝试使用sceneform SDK创建示例应用程序。我已经成功地将3d模型应用到应用程序中。现在我想更改特定部分的3D对象的颜色,而不是整个对象 这就是我试过的 private fun renderLocalObject() { skuProgressBar.setVisibility(View.VISIBLE) ModelRenderable.builder() .setSource(this, Uri.parse(localModel))
private fun renderLocalObject() {
skuProgressBar.setVisibility(View.VISIBLE)
ModelRenderable.builder()
.setSource(this, Uri.parse(localModel))
.setRegistryId(localModel)
.build()
.thenAccept { modelRenderable: ModelRenderable ->
skuProgressBar.setVisibility(View.GONE)
addNodeToScene(modelRenderable)
}
.exceptionally { throwable: Throwable? ->
var message: String?
message = if (throwable is CompletionException) {
skuProgressBar.setVisibility(View.GONE)
"Internet is not working"
} else {
skuProgressBar.setVisibility(View.GONE)
"Can't load Model"
}
val mainHandler = Handler(Looper.getMainLooper())
val finalMessage: String = message
val myRunnable = Runnable {
AlertDialog.Builder(this)
.setTitle("Error")
.setMessage(finalMessage + "")
.setPositiveButton("Retry") { dialogInterface: DialogInterface, _: Int ->
renderLocalObject()
dialogInterface.dismiss()
}
.setNegativeButton("Cancel") { dialogInterface, _ -> dialogInterface.dismiss() }
.show()
}
mainHandler.post(myRunnable)
null
}
}
private fun addNodeToScene(模型:ModelRenderable){
if(sceneView!=null){
val renderableCopy=model.makeCopy()
val changedMaterial=renderableCopy.material.makeCopy()
changedMaterial.setFloat4(
MaterialFactory.MATERIAL\u颜色,
com.google.ar.sceneform.rendering.Color(Color.rgb(0,51,0))
)
renderableCopy.material=changedMaterial
val transformationSystem=makeTransformationSystem()
var DragTransformalNode=DragTransformalNode(1f,转换系统)
dragTransformableNode?.renderable=renderableCopy
for(DragTransformalNode.children中的子对象){
Log.d(“支票”,“儿童$child”)
}
sceneView.getScene().addChild(DragTransformalNode)
DragTransformalNode?.select()
sceneView.getScene()
.addOnPeekTouchListener{hitTestResult:hitTestResult?,motionEvent:motionEvent?->
transformationSystem.onTouch(
点击测试结果,
运动事件
)
}
}
}
Hi-any soution for this?有解决方案吗?Hi-any soution for this?有解决方案吗?
val renderableCopy = model.makeCopy()
val changedMaterial = renderableCopy.material.makeCopy()
changedMaterial.setFloat4(
MaterialFactory.MATERIAL_COLOR,
com.google.ar.sceneform.rendering.Color(Color.rgb(0, 51, 0))
)
renderableCopy.material = changedMaterial
val transformationSystem = makeTransformationSystem()
var dragTransformableNode = DragTransformableNode(1f, transformationSystem)
dragTransformableNode?.renderable = renderableCopy
for (child in dragTransformableNode.children) {
Log.d("<>check","child $child")
}
sceneView.getScene().addChild(dragTransformableNode)
dragTransformableNode?.select()
sceneView.getScene()
.addOnPeekTouchListener { hitTestResult: HitTestResult?, motionEvent: MotionEvent? ->
transformationSystem.onTouch(
hitTestResult,
motionEvent
)
}
}
}