【发布时间】:2020-02-04 08:12:01
【问题描述】:
我正在尝试在我的 android 应用程序中添加 3D 模型,该应用程序运行良好(将 3D 模型放置在屏幕上,用手指手势旋转它并通过捏合进行缩放)。我正在尝试使用按钮使这个手指缩放和旋转。
【问题讨论】:
标签: android 3d arcore sceneform
我正在尝试在我的 android 应用程序中添加 3D 模型,该应用程序运行良好(将 3D 模型放置在屏幕上,用手指手势旋转它并通过捏合进行缩放)。我正在尝试使用按钮使这个手指缩放和旋转。
【问题讨论】:
标签: android 3d arcore sceneform
您可以通过获取模型当前位置来做到这一点。以下方法可用于您的按钮单击。希望对你有帮助
private void modleMovement(TransformableNode node, String moveMent) {
Vector3 currentPosition = new Vector3();
Vector3 move = new Vector3();
try {
currentPosition = Objects.requireNonNull(node.getLocalPosition());
if (moveMent.equals("down")) {
move.set(currentPosition.x, (float) (currentPosition.y - 0.1), currentPosition.z);
localPosition = move;
}
if (moveMent.equals("up")) {
move.set(currentPosition.x, (float) (currentPosition.y + 0.1), currentPosition.z);
localPosition = move;
}
if (moveMent.equals("right_move")) {
move.set((float) (currentPosition.x + 0.1), currentPosition.y, currentPosition.z);
localPosition = move;
}
if (moveMent.equals("left_move")) {
move.set((float) (currentPosition.x - 0.1), currentPosition.y, currentPosition.z);
localPosition = move;
}
if (moveMent.equals("rotate_left")) {
localPosition = currentPosition;
rotateLeft(node, objAxis, currentPosition);
}
if (moveMent.equals("rotate_right")) {
localPosition = currentPosition;
rotateRight(node, objAxis, currentPosition);
}
if (moveMent.equals("zoom_in")) {
move.set(currentPosition.x, currentPosition.y, (float) (currentPosition.z + 0.1));
localPosition = move;
}
if (moveMent.equals("zoom_out")) {
move.set(currentPosition.x, currentPosition.y, (float) (currentPosition.z - 0.1));
localPosition = move;
}
node.setLocalPosition(move);
} catch (Exception e) {
e.printStackTrace();
}
}
【讨论】: