如何用ARcore场景(非AR)识别旋转手势?

时间:2019-04-04 15:52:43

标签: android kotlin arcore

我想在非AR场景中旋转渲染对象。 TransformableNode只允许我水平旋转节点,但是我想在Y和Z轴上旋转它们。

我的布局中有一个SceneView,并在他的场景上设置了一个onTouchListener来管理手势。

我该如何管理这些手势?

private fun addNode(model: ModelRenderable?){
    val ts = TransformationSystem(resources.displayMetrics, FootprintSelectionVisualizer())

    model.let {
        node = TransformableNode(ts)
        node.setParent(scene)
        node.localPosition = Vector3(0f, -2f, -7f)
        node.localScale = Vector3(3f, 3f, 3f)
        node.worldScale = Vector3(5f, 5f, 5f)
        node.renderable=it
        node.rotationController.isEnabled = true
        node.scaleController.maxScale = 2f
        node.scaleController.minScale = 0.1f
        node.translationController.isEnabled = true
        scene.addChild(node)

        scene.setOnTouchListener { hitTestResult, motionEvent ->
            Log.d("ontouchScene", motionEvent.toString())

            ts.onTouch(hitTestResult, motionEvent )
            true
        }
    }
}

1 个答案:

答案 0 :(得分:1)

想象一下旋转手势。您将两个手指放在屏幕上,并以相反的方式移动它们。因此,要实现类似的功能,您需要同时获得两个接触点,并检查它们的移动是否为圆形并且方向相反。

如何做到这一点的好例子,您将在Android Two finger rotation

中找到