sceneview-android
sceneview-android copied to clipboard
Unable to place a ModelNode inside an AnchorNode with Instant Placement On
Configuration and codes:
configureSession { _, config ->
config.instantPlacementMode = Config.InstantPlacementMode.LOCAL_Y_UP
}
override fun onSingleTapUp(e: MotionEvent, node: Node?) {
val hitResults = frame?.hitTestInstantPlacement(
e.x,
e.y,
1.0F
)
val anchor = hitResults?.firstOrNull {
it.isValid(depthPoint = false, point = false, instantPlacementPoint = true)
}?.createAnchorOrNull()
if (anchor != null) {
createNode(anchor)
}
}
private fun createNode(anchor: Anchor) {
val anchorNode = AnchorNode(
engine = engine,
anchor = anchor
)
anchorNode.addChildNode(
ModelNode(
modelInstance = modelLoader.createInstance(
modelLoader.createModel(
R.raw.file
)
)!!
)
)
}
ARSceneView is placed in a fragment
Steps to reproduce:
- Go to the fragment that contains ARSceneView
- Trigger onSingleTapUp event
- App crashed Logcat:
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onWorldTransformChanged(Node.kt:830)
at io.github.sceneview.node.Node.onTransformChanged(Node.kt:811)
at io.github.sceneview.node.Node.setChildNodes(Node.kt:359)
at io.github.sceneview.node.Node.setParent(Node.kt:336)
at io.github.sceneview.node.ModelNode.<init>(ModelNode.kt:108)
at io.github.sceneview.node.ModelNode.<init>(ModelNode.kt:36)
You should try to load your model in advance before setting it on the Anchor, maybe load it in onCreate and use it like this
private fun loadModel() {
lifecycleScope.launch {
sceneView.modelLoader.loadModelInstance("models/model.glb")?.let {
model = it
}
}
}
private fun createNode(anchor: Anchor) {
val anchorNode = AnchorNode(
engine = engine,
anchor = anchor
)
anchorNode.addChildNode(
ModelNode(
modelInstance = model
)
)
}
Hi akhatriST,
Thanks for the reply I think there is a problem with the texture of my model, I loaded it without texture and then load it with color and it works