我'm adding objects to my scene in ARCore. I'm使用来自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 .

并且,我没有看到如何存储这些更改,然后在插入后将它们重新应用于对象 . 例如,我想记录一个已缩放的对象,将比例保持为某种值,然后能够将该比例值重新应用于该对象,使其返回到场景中的缩放大小 . 我看到我可以使用像这样的 object.getScaleController() 代码检索ScaleController . 但是,它提供的界面似乎提供了规模交互的指导,而不是在发生规模事件时检索实际值或 Build 处理程序 .

更具体地说,我想进入一个场景,然后在 setOnTapArPlaneListener 处理程序中,当检测到平面时,我将添加该对象 . 然后我将对其进行转换,并捕获这些转换值 . 然后,我将离开场景,保存那些变换值 . 如果我重新进入场景,我想再次等待 setOnTapArPlaneListener 检测到一个平面,然后添加对象和之前捕获的变换值 . 我知道我可能正在检测另一架飞机,但我对此很好 .