我已经成功使用ARCore显示了3D模型,但是如何将模型直接放置在飞机顶部?
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;
});
});
答案 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)
}