【问题标题】:Adding buttons in ARCore Sceneform for the rotation and zooming?在 ARCore Sceneform 中添加用于旋转和缩放的按钮?
【发布时间】:2020-02-04 08:12:01
【问题描述】:

我正在尝试在我的 android 应用程序中添加 3D 模型,该应用程序运行良好(将 3D 模型放置在屏幕上,用手指手势旋转它并通过捏合进行缩放)。我正在尝试使用按钮使这个手指缩放和旋转。

【问题讨论】:

    标签: android 3d arcore sceneform


    【解决方案1】:

    您可以通过获取模型当前位置来做到这一点。以下方法可用于您的按钮单击。希望对你有帮助

    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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 2019-07-27
      • 1970-01-01
      相关资源
      最近更新 更多