ARCore - отображение 3D-модели над плоскостью - PullRequest
0 голосов
/ 23 апреля 2020

Я успешно отобразил 3D-модель, используя ARCore, но как бы я поместил модель прямо поверх плоскости?

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 голосов
/ 24 апреля 2020

Вы можете сделать самолет визуализируемым с помощью 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)
}
...