我是这个ARCore的新手,我一直在关注SDK中提供的HelloAR Java Android Studio项目.
Everthing工作正常并且非常酷,但是,即使没有检测到飞机,我也想在触摸屏幕时放置/放下物体.让我解释一下......
据我所知,它将检测水平平面,并且只在那些水平平面上,我可以放置3D物体进行运动跟踪.
有没有办法(可能使用PointCloud信息)能够在场景中放置一个对象,即使没有检测到水平面?有点像这些例子吗? https://experiments.withgoogle.com/ar/flight-paths https://experiments.withgoogle.com/ar/arcore-drawing
我知道他们正在使用Unity和openFrameworks,但这可以用Java完成吗?
另外,我看过 如何将物体放在空中? 以及 如何在ARCore中检查与对象的光线交集
但我不认为我理解Ancor的概念(我设法将对象放在场景中,但它要么立即消失,要么只是一个普通的OpenGL对象,不了解现实世界.
我想要了解的是: - 如何以及是否可以创建自定义/用户定义的平面,即ARCore不会自动检测到的平面? - 我怎样才能创建一个Ancor(我想这个样本在PlaneAttachment类中完成),它没有链接到任何连接到某个PointCloud点的平面OR? - 如何绘制对象并将其放置在先前创建的Ancor中?
我认为这个问题太多了,但是查看API文档根本没有帮助我
谢谢!
编辑:
这是我添加到HelloArActivity.java的代码(除了//*****之后和之前的行之外,Everything与原始文件相同...
@Override
public void onDrawFrame(GL10 gl) {
...
MotionEvent tap = mQueuedSingleTaps.poll();
// I added this to use screenPointToWorldRay function in the second link I posted... I am probably using this wrong
float[] worldXY = new float[6];
...
if (tap != null && frame.getTrackingState() == TrackingState.TRACKING) {
// ***** I added this to use …Run Code Online (Sandbox Code Playgroud)