如何重置添加到sceneview的可变换节点?

问题描述 投票:0回答:1

我想知道如何才能重置一个节点在点击按钮时的缩放比例,我已经添加了一个TransformableNode,其功能是根据用户的手势进行旋转和缩放。

我需要的是在所有的交易之后,如果用户点击了一个按钮,我需要重置模型到它的初始尺寸和旋转。

旋转工作正常,但缩放没有任何效果,怎么办呢?以下是我用来重置节点的方法。

private fun resetModel(){
    modelDragTransformableNode.localRotation = Quaternion.axisAngle(Vector3(0f, 0f, 0f), 00f)
    modelDragTransformableNode.localScale = Vector3(1f, 1f, 1f)
}

用于将节点添加到sceneview的方法。

private fun addNodeToScene(model: ModelRenderable) {
    if (sceneView != null) {


        val transformationSystem = makeTransformationSystem()
         modelDragTransformableNode = NewDragTransformableNode(transformationSystem)


        modelDragTransformableNode.localPosition = Vector3(0f, -0.3f, -2.0f)
        modelDragTransformableNode?.renderable = model

        val collisionShape: Box = modelDragTransformableNode.collisionShape as Box
        sceneView.getScene().addChild(modelDragTransformableNode)

        val collisionShape2: Box = modelDragTransformableNode.collisionShape as Box
        modelDragTransformableNode.select()

        sceneView.getScene()
            .addOnPeekTouchListener { hitTestResult: HitTestResult?, motionEvent: MotionEvent? ->
                transformationSystem.onTouch(
                    hitTestResult,
                    motionEvent
                )
            }

    }
}
android transformation arcore sceneview
1个回答
0
投票

缩放比例没有更新,因为它是由ScaleController的控制的。onUpdated 方法。尝试在设置比例尺之前禁用比例尺控制器,然后再次启用。

modelDragTransformableNode.getScaleController().setEnabled(false)

如果不行的话,你可以使用带有暴露的自定义比例控制器 setScale 方法 (例证).

© www.soinside.com 2019 - 2024. All rights reserved.