ARCore-在平面上显示3D模型

时间:2020-04-23 12:26:47

标签: android arcore

我已经成功使用ARCore显示了3D模型,但是如何将模型直接放置在飞机顶部?

enter image description here

     mArFragment = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.ar_fragment);
     mArFragment.setOnTapArPlaneListener((hitResult, plane, motionEvent) -> {
     Anchor anchor = hitResult.createAnchor();

     ModelRenderable.builder()
           .setSource(this, Uri.parse("ArcticFox_Posed.sfb"))
           .build()
           .thenAccept(modelRenderable -> addModelToScene(anchor, modelRenderable))
           .exceptionally(throwable -> {
                    AlertDialog.Builder builder = new AlertDialog.Builder(this);
                    builder.setMessage(throwable.getMessage())
                    .show();
                    return null;
               });
           });

1 个答案:

答案 0 :(得分:0)

您可以使用ShapeFactory使平面可渲染,并使狐狸可渲染为平面对象的子对象,如下所示:

private fun addModelToScene(anchor: Anchor, renderable: Renderable) {    
    val anchorNode = AnchorNode(anchor)
    val node = TransformableNode(fragment.transformationSystem)
    node.renderable = renderablePlane //create plane renderable
    node.setParent(anchorNode)
    val nodeFox = Node()
    nodeFox.renderable = renderable
    //edit localPosition to fit on the plane with nodeFox.localPosition
    nodeFox.setParent(node)
    fragment.arSceneView.scene.addChild(anchorNode)
}