我在 ARCore 中将对象添加到我的场景中。我正在使用 HelloSceneForm 存储库中的相同代码(或多或少)(https://github.com/google-ar/sceneform-android-sdk/blob/master/hellosceneform/app/src/main/java/com /google/ar/sceneform/samples/hellosceneform/HelloSceneformActivity.java )
Anchor anchor = hitResult.createAnchor();
AnchorNode anchorNode = new AnchorNode(anchor);
anchorNode.setParent(arFragment.getArSceneView().getScene());
TransformableNode object = new TransformableNode(arFragment.getTransformationSystem());
ScaleController scaleController = object.getScaleController();
scaleController.setMinScale(0.0F);
object.setParent(anchorNode);
object.setRenderable(loadedRenderable);
object.select();
添加对象后,我将对其进行一些转换。如何注册一个处理程序,通知我对象的更改(旋转、平移、缩放)?
我看到了GestureDetector.OnGestureListener()界面,但看不到如何将它连接到 TransformableNode。
而且,我看不到如何存储这些更改,然后在插入对象后将其重新应用到对象。例如,我想记录一个已缩放的对象,将缩放保留为某种值,然后能够将该缩放值重新应用于对象,使其返回到场景中的缩放大小。我看到我可以使用这样的代码检索 ScaleController object.getScaleController()。但是,它提供的接口似乎为规模交互提供了指导,而不是在规模事件发生时检索实际值或建立处理程序。
更具体地说,我想进入一个场景,然后在setOnTapArPlaneListener处理程序中,当检测到平面时,我将添加对象。然后我将对其进行转换,并捕获这些转换值。然后,我将离开场景,保存这些变换值。如果我重新进入场景,我想再次等待setOnTapArPlaneListener检测平面,然后添加对象和之前捕获的变换值。我知道我可能正在检测另一架飞机,但我对此很好。