簡體   English   中英

圖像處理使用 ARCore 和 Android Studio 使用 ArFragment 在圖像上放置 3D 模型

[英]Image Processing place 3D model on image by using ArFragment using ARCore and Android Studio

我已經通過檢測圖像成功地實現了 3D 模型,但問題是我必須旋轉和放大並縮小該模型。我也通過使用 transformabel 方法實現了它,但問題是每當我觸摸該模型時,它都會變倍。

          AnchorNode anchorNode = new AnchorNode(anchor);
          arFragment.getArSceneView().getScene().addChild(anchorNode);
          TransformableNode transformableNode = new TransformableNode(arFragment.getTransformationSystem());
          transformableNode.setParent(anchorNode);
          transformableNode.setRenderable(modelRenderable);
          transformableNode.select();

在此處輸入圖片說明 ] 1

移動可渲染對象的一種常用方法(可能是撰寫本文時的主要方法)是實際刪除它,然后在新位置或姿勢中創建它 - 例如:

  1. 刪除現有的可渲染對象並從場景中移除
  2. 創建一個新的錨點並將其放置在您想要的姿勢/位置
  3. 將可渲染對象添加到您剛剛創建的新錨點

在代碼中:

private AnchorNode moveRenderable(AnchorNode markAnchorNodeToMove, Pose newPoseToMoveTo) {
        //Move a renderable to a new pose
        if (markAnchorNodeToMove != null) {
            arFragment.getArSceneView().getScene().removeChild(markAnchorNodeToMove);
        } else {
            Log.d(TAG,"moveRenderable - markAnchorNode was null");
            return null;
        }
        Frame frame = arFragment.getArSceneView().getArFrame();
        Session session = arFragment.getArSceneView().getSession();
        Anchor markAnchor = session.createAnchor(newPoseToMoveTo.extractTranslation());
        AnchorNode newMarkAnchorNode = new AnchorNode(markAnchor);
        newMarkAnchorNode.setRenderable(andyRenderable);
        newMarkAnchorNode.setParent(arFragment.getArSceneView().getScene());

        return newMarkAnchorNode;
    }

以上是示例應用程序的編輯摘錄 - 您可以在此處找到完整的源代碼並對其進行修改等: https : //github.com/mickod/LineView

另一個注意事項 - 在 AR 環境中放大和縮小可渲染對象可能會有些混亂。 可渲染對象就像現實世界中的一個對象,因此您可以談論放大和縮小整個相機視圖,或者使可渲染對象本身更大或更小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM