java - ARCore 虚拟物体移动
问题描述
所以我开始在 Java 中的 Android Studio 中使用 ARCore,并测试了他们的演示 HelloAR,它可以工作。
现在我想添加简单的东西,例如将对象移动到滚动方向。
在 TapHelper 我需要为 GestureDetector 添加 onScroll
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
}
但这就是我现在卡住的地方,虚拟对象是基于锚点渲染的?那么我需要更新锚点位置还是虚拟对象的位置?我该怎么做,锚没有任何更新它的位置的方法,我是销毁它并创建一个新的,还是我错过了什么?
解决方案
如果您只想旋转可渲染对象本身,则不需要创建新锚点,但是如果您想将可渲染对象移动到“世界”中的新位置,那么此时的标准方法似乎是删除锚点并重新创建它。
以下是您可以如何执行此操作的示例:
private AnchorNode moveRenderable(AnchorNode myAnchorNodeToMove, Pose newPoseToMoveTo) {
//Move a renderable to a new pose
if (myAnchorNodeToMove != null) {
arFragment.getArSceneView().getScene().removeChild(myAnchorNodeToMove);
} else {
Log.d(TAG,"moveRenderable - myAnchorNode was null");
return null;
}
Frame frame = arFragment.getArSceneView().getArFrame();
Session session = arFragment.getArSceneView().getSession();
Anchor myAnchor = session.createAnchor(newPoseToMoveTo.extractTranslation());
AnchorNode newMyAnchorNode = new AnchorNode(myAnchor);
newMyAnchorNode.setRenderable(andyRenderable);
newMyAnchorNode.setParent(arFragment.getArSceneView().getScene());
return newMyAnchorNode;
}
上面是从一个工作示例修改的,使其在此处更具可读性 - 完整源代码在这里:https ://github.com/mickod/LineView
推荐阅读
- python - 在python中创建一个通用字典,从多对列表中获取键值对
- javascript - AngularJS - 如何在按钮单击时获取对象
- reactjs - 从道具添加动态本地图像到src
- angular - 角度 7.0 更新后
- php - 双循环foreach laravel 5.5刀片
- php - Yii2 - 如何在数据库中上传和存储图像
- python - Python 入口点因依赖冲突而失败
- javascript - Mongoose (mongodb) $push 数据作为子文档,验证唯一吗?
- r - sql按池查询不读哈萨克字母
- laravel - 从动态添加的文件上传器 Laravel 将图像保存到数据库