Untitled

 avatar
unknown
plain_text
5 months ago
3.2 kB
5
Indexable
 onSessionUpdated = { session, updatedFrame ->
                    frame = updatedFrame

//                    if (childNodes.isEmpty()) {
//                        updatedFrame.getUpdatedPlanes().firstOrNull { it.type == Plane.Type.HORIZONTAL_UPWARD_FACING }
//                            ?.let { it.createAnchorOrNull(it.centerPose) }?.let { anchor ->
//                                childNodes += createAnchorNode(
//                                    engine = engine,
//                                    modelLoader = modelLoader,
//                                    materialLoader = materialLoader,
//                                    anchor = anchor
//                                )
//                            }
//                    }
                    val earth = session.earth
                    if (earth?.earthState == Earth.EarthState.ENABLED) {

                            val latitude = destinationLatLng!!.latitude
                            val longitude = destinationLatLng.longitude
                            val altitude = 0.0 // Set desired altitude
                        Log.d("tag", "ARSceneContent: "+longitude)
                            val anchor = earth.createAnchor(
                                longitude,
                                altitude,
                                latitude,
                                0.0f,  // Quaternion x
                                0.0f,  // Quaternion y
                                0.0f,  // Quaternion z
                                1.0f   // Quaternion w (no rotation)
                            )
                        childNodes += createAnchorNode(
                            engine = engine,
                            modelLoader = modelLoader,
                            materialLoader = materialLoader,
                            anchor = anchor
                        )

                    }

  fun createAnchorNode(
        engine: Engine,
        modelLoader: ModelLoader,
        materialLoader: MaterialLoader,
        anchor: Anchor
    ): AnchorNode {
        val anchorNode = AnchorNode(engine = engine, anchor = anchor)
        val modelNode = ModelNode(
            modelInstance = modelLoader.createModelInstance(kModelFile),
            // Scale to fit in a 0.5 meters cube
            scaleToUnits = 0.5f
        ).apply {
            // Model Node needs to be editable for independent rotation from the anchor rotation
            isEditable = true
            editableScaleRange = 0.2f..0.75f
        }
        val boundingBoxNode = CubeNode(
            engine,
            size = modelNode.extents,
            center = modelNode.center,
            materialInstance = materialLoader.createColorInstance(Color.White.copy(alpha = 0.5f))
        ).apply {
            isVisible = false
        }
        modelNode.addChildNode(boundingBoxNode)
        anchorNode.addChildNode(modelNode)

        listOf(modelNode, anchorNode).forEach {
            it.onEditingChanged = { editingTransforms ->
                boundingBoxNode.isVisible = editingTransforms.isNotEmpty()
            }
        }
        return anchorNode
    }
Editor is loading...
Leave a Comment