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

问题描述 投票:0回答:1

我已经使用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;
               });
           });
android arcore
1个回答
0
投票

你可以用ShapeFactory制作一个可渲染的平面,并使你的fox可渲染成为一个平面对象的子对象,像这样 。

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)
}
© www.soinside.com 2019 - 2024. All rights reserved.