首页 > 解决方案 > 如何在具有所有手势的 SceneView 中使用 TransformableNode?

问题描述

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 中使用的手势进行旋转和缩放。

标签: androidarcoresceneform

解决方案


transformableNode.select()创建节点后尝试调用(或简单地调用select()应用块)。


推荐阅读