我在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。
并且,我不知道如何存储这些更改,然后在插入后将它们重新应用于对象。例如,我想记录一个已缩放的对象,将比例保持为某种值,然后能够将该比例值重新应用于该对象,使其返回到场景中的缩放大小。我看到我可以使用像object.getScaleController()
这样的代码检索ScaleController。但是,它提供的界面似乎提供了规模交互的指导,而不是在发生规模事件时检索实际值或建立处理程序。
更具体地说,我想进入一个场景,然后在setOnTapArPlaneListener
处理程序中,当检测到平面时,我将添加该对象。然后我将对其进行转换,并捕获这些转换值。然后,我将离开场景,保存那些变换值。如果我重新进入场景,我想再次等待setOnTapArPlaneListener
检测一个平面,然后添加对象和之前捕获的变换值。我知道我可能正在探测不同的飞机,但我对此很好。