0

Sceneform Android SDKを使用して、ユーザーの に基づいて X 軸上でa を回転させるためのソリューションhereに従いました。ただし、ARCore SceneViewer と同様に、Y 軸と Z 軸も回転させたいと考えています。TransformableNodeDragGesture

どうすればそれを達成できますか?

私が現在持っているものは左側にあり (X 軸でのみ回転)、必要なものは右側にあります (ARCore Scene Viewer のように、すべての軸で回転します)。

class DragRotationController(transformableNode: BaseTransformableNode, gestureRecognizer: DragGestureRecognizer) :
    BaseTransformationController<DragGesture>(transformableNode, gestureRecognizer) {

    // Rate that the node rotates in degrees per degree of twisting.
    var rotationRateDegrees = 0.5f

    public override fun canStartTransformation(gesture: DragGesture): Boolean {
        return transformableNode.isSelected
    }

    public override fun onContinueTransformation(gesture: DragGesture) {

        var localRotation = transformableNode.localRotation

        val rotationAmountX = gesture.delta.x * rotationRateDegrees
        val rotationDeltaX = Quaternion(Vector3.up(), rotationAmountX)
        localRotation = Quaternion.multiply(localRotation, rotationDeltaX)

        // *** this only rotates on X axis. How do I rotate on all axes? ***

        transformableNode.localRotation = localRotation
    }

    public override fun onEndTransformation(gesture: DragGesture) {}
}
4

1 に答える 1