【问题标题】:How to reset a transformable node added to sceneview?如何重置添加到场景视图的可变形节点?
【发布时间】:2020-05-14 12:33:27
【问题描述】:

我想知道如何在按钮单击时重置节点的缩放比例, 我添加了一个 TransformableNode,它具有根据用户手势旋转和缩放的功能

我需要的是在所有事务之后,如果用户单击一个按钮,我需要将模型重置为其初始大小和旋转,

旋转正常,但缩放没有任何效果,我们该怎么做? 以下是我用来重置节点的方法

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

将节点添加到场景视图的方法

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】:

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

    modelDragTransformableNode.getScaleController().setEnabled(false)
    

    如果它不起作用,您始终可以使用带有公开setScale 方法 (see example) 的自定义缩放控制器。

    【讨论】:

      猜你喜欢
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      相关资源
      最近更新 更多