【问题标题】:arcore the displaying image is perpendicular to the planearcore 显示图像垂直于平面
【发布时间】:2020-02-14 21:32:52
【问题描述】:

这就是我想要的->

这里有一些重要的代码部分,我想在书的顶部显示书的作者,但正如您看到的那样,显示的图像垂直于书。帮帮我,这就是我得到的->

  private void OnUpdateFrame(FrameTime frameTime){
                    Frame frame=arFragment.getArSceneView().getArFrame();
            
                    Collection<AugmentedImage> augmentedImages=frame.getUpdatedTrackables(AugmentedImage.class);
                    for(AugmentedImage augmentedImage: augmentedImages){
                        
                        if(augmentedImage.getTrackingState()== TrackingState.TRACKING ){
                            
                            if(augmentedImage.getName().equals("arimage") && shouldAddModel){
                                placeObject(arFragment,
                                        augmentedImage.createAnchor(augmentedImage.getCenterPose()),
                                        Uri.parse("author.jpg"));
                                shouldAddModel=false;
                            }
                    }}
                }
        
          private void placeObject(ArFragment fragment, Anchor anchor, Uri model){
                ViewRenderable.builder().
                        setView(this,R.layout.lol)
                        .setVerticalAlignment(ViewRenderable.VerticalAlignment.BOTTOM)
                        .build()
                        .thenAccept(viewRenderable -> addNodeToScene(fragment,anchor,viewRenderable))
                        .exceptionally(throwable -> {
                        AlertDialog.Builder builder=new AlertDialog.Builder(this);
                        builder.setMessage(throwable.getMessage())
                                .setTitle("Error!");
                        AlertDialog dialog=builder.create();
                        dialog.show();
                        return null;
                        });
            }
    
      private void addNodeToScene(ArFragment fragment, Anchor anchor, ViewRenderable viewRenderable) {
    
            AnchorNode anchorNode=new AnchorNode(anchor);
    
            anchorNode.setLocalScale(new Vector3(0.5f, 0.5f, 0.5f));
        
            TransformableNode node=new TransformableNode(fragment.getTransformationSystem());
        
            node.setRenderable(viewRenderable);
    
            node.setParent(anchorNode);
            fragment.getArSceneView().getScene().addChild(anchorNode);
            node.select();
    
        }

【问题讨论】:

  • 你能缩小问题的范围吗?
  • 嘿伙计,我编辑了问题,并添加了一张关于我想要什么的图片。我希望它很清楚

标签: arcore


【解决方案1】:

节点的简单本地旋转应该可以解决问题。一旦您将节点的父节点设置为这样。

 node.setParent(anchorNode);
 node.setLocalRotation(Quaternion.axisAngle(new Vector3(0, 0, 1f), 180));
 fragment.getArSceneView().getScene().addChild(anchorNode);

玩转四元数的值。你应该得到它。

【讨论】:

  • 谢谢老兄。我之前在anchorNode上尝试过相同的代码是我的错误:)
  • 很高兴这有帮助!
猜你喜欢
  • 2018-02-09
  • 2021-01-18
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多