如何使用所有手势在SceneView中使用TransformableNode?

时间:2019-07-08 13:15:31

标签: android arcore sceneform

TransformableNode手势不适用于SceneView中的对象。

我正在SceneView上显示3D对象。当我将TransformableNode作为SceneView场景的第一个孩子提供时,则没有任何手势起作用。但是,当用ArFragment做同样的事情时,一切都会起作用。

private fun createNode() {
    val transformationSystem = makeTransformationSystem()
    val transformableNode = TransformableNode(transformationSystem).apply {
        rotationController.isEnabled = true
        scaleController.isEnabled = true
        translationController.isEnabled = false // not support
        setParent(sceneView.scene)
        this.renderable = myRenderable // Build using CompletableFuture
    }

    sceneView.scene.addOnPeekTouchListener { hitTestResult, motionEvent ->
        transformationSystem.onTouch(hitTestResult, motionEvent)
    }
}

private fun makeTransformationSystem(): TransformationSystem {
    val selectionVisualizer = FootprintSelectionVisualizer()
    return TransformationSystem(resources.displayMetrics, selectionVisualizer)
}

我希望SceneView中的3D对象能够使用TransformabelNode中使用的手势进行旋转和缩放。

1 个答案:

答案 0 :(得分:1)

在创建节点后尝试调用transformableNode.select()(或在apply块中简单调用select())。