- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试放置一个 anchor 并将其显示在用户点击屏幕的位置,这会返回 X 和 Y 坐标。
tapX = tap.getX();
tapY = tap.getY();
我想使用这些信息为我的模型创建一个矩阵。 (即,将我的 3D 模型放在用户点击的位置)
现在我尝试了:
float sceneX = (tap.getX()/mSurfaceView.getMeasuredWidth())*2.0f - 1.0f;
float sceneY = (tap.getY()/mSurfaceView.getMeasuredHeight())*-2.0f + 1.0f; //if bottom is at -1. Otherwise same as X
Pose temp = frame.getPose().compose(Pose.makeTranslation(sceneX, sceneY, -1.0f)).extractTranslation();
我现在只是将 3D 对象放在前面 1 米处。我没有得到正确的位置。
有没有办法将本地坐标转换为世界坐标?
最佳答案
屏幕上的点击与现实世界没有一对一的映射。它为您提供无限数量的可能 (x, y, z)
位置,这些位置沿着从相机延伸的光线。例如,如果我点击屏幕中央,这可能对应于一个漂浮在离我一米远、两米远、在地板上、穿过地板等的物体。
因此,您需要一些额外的约束来告诉 ARCore 沿着这条射线在何处放置 anchor 。在示例应用程序中,这是通过将此射线与 ARCore 检测到的平面相交来完成的。与平面相交的射线描述了一个点,所以你已经准备好了。这是他们在示例应用程序中的做法:
MotionEvent tap = mQueuedSingleTaps.poll();
if (tap != null && frame.getTrackingState() == TrackingState.TRACKING) {
for (HitResult hit : frame.hitTest(tap)) {
// Check if any plane was hit, and if it was hit inside the plane polygon.
if (hit instanceof PlaneHitResult && ((PlaneHitResult) hit).isHitInPolygon()) {
// Cap the number of objects created. This avoids overloading both the
// rendering system and ARCore.
if (mTouches.size() >= 16) {
mSession.removeAnchors(Arrays.asList(mTouches.get(0).getAnchor()));
mTouches.remove(0);
}
// Adding an Anchor tells ARCore that it should track this position in
// space. This anchor will be used in PlaneAttachment to place the 3d model
// in the correct position relative both to the world and to the plane.
mTouches.add(new PlaneAttachment(
((PlaneHitResult) hit).getPlane(),
mSession.addAnchor(hit.getHitPose())));
// Hits are sorted by depth. Consider only closest hit on a plane.
break;
}
}
}
特别是对于您的情况,我会看一下 the rendering code适用于 AR 绘图应用程序。它们的函数 GetWorldCoords()
假定距屏幕的距离已知,从屏幕坐标到世界坐标。
关于android - ARCore 屏幕坐标到世界坐标 openGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47140190/
我想使用 ARCore 开发应用。我有几个问题: 是否需要安装 arcore-preview.apk 才能运行此 ARCore 应用程序? 为什么 arcore-preview.apk 出现在我设备的
如何在android studio中获取使用arcore SDK渲染的3D物体的点击事件?我的要求是单击该 3D 对象并显示弹出对话框。 最佳答案 这与 ARCore 无关。您使用的游戏引擎/框架实际
ARCore什么时候从预览版变成Version 1.0,大概什么时候?如果某处有信息,请告诉我。 最佳答案 2018年2月23日发布1.0.0版本。更多信息: https://developers.g
TL; 博士; 谷歌新AR animals看起来好像它们是网络上的 AR(如 AR.js 或 8thWall),但实际上是原生的 ARCore应用程序。技巧是浏览器中的链接(实际上是一个带有非常模糊的
当我在 Android Studio 中构建“hellosceneform”示例时,我收到来自 Gradle 的“Error converting asset”错误。谁能告诉我如何构建示例?谢谢! 最
我探索了 Google 提供的 ARCore 演示,它允许在 Android 和 iOS 设备之间传输 AR 对象。 如何在 iOS 上实现这样的事情。 我尝试过 Google 的 ARCore 库和
我正在尝试使用 ARcore 构建应用。一切正常,但我无法在 Android Native 应用程序中实现某些要求,因此我们为此选择了 Unity。我们已经在 Unity library Projec
Arcore 未能从目标图像中获取足够的关键点。图片是黑色背景上的文字....这个问题有解决方案吗? 最佳答案 我设法通过将图像的大小增加到至少 300x300 像素来解决这个问题,在 this ar
我有一个问题,最近在研究Google ARCore,我想实现检测垂直平面,并且像水平面一样,也可以渲染一个平面,我觉得ARCore也有垂直检测,但是如何显示出来并使用? 最佳答案 目前在 ARCore
似乎 HitResult 只为我们提供了与表面(平面)或点云的交集。如何通过单击在空气中间获得一个点,从而使物体漂浮在空中? 最佳答案 这真的取决于你所说的“在空中”是什么意思。我看到了两种可能性:
根据 this question ARCore 以米为单位工作。但是,由于无法使用单个摄像头来猜测所查看内容的大小——这是单目 SLAM 的一个已知现象,它也会导致尺度漂移,而 TANGO 设备通过使
我使用 ArCore 库开发了一个 Android 应用程序。我需要做两点,在它们之间画一条线,并在每条线附近设置一个文本标签。 文本标签需要面向相机旋转,并沿线定位。 1) 在两点之间添加一条线:
我想访问我在我的应用程序中记录的跟踪数据和自定义数据。 有人可以提供不同数据轨道保存在 mp4 中的格式吗? 使用这个例子https://github.com/google-ar/arcore-and
我试图将一个物体放在脸上。但是不明白如何设置对象的深度。 就像我在脸上添加像眼镜框这样的 3d 对象时。 它不显示在 correct depth . 最佳答案 当您使用 Augmented Faces
我正在将Flutter用于AR应用程序。这是创建球体的代码的一部分: void _addSphere(ArCoreController controller) { final materia
我在 Android Studio 中使用 ARCore。我的应用程序将提供 X , Y , Z坐标。我想要在确定的位置渲染 3D 图像。 我怎样才能做到这一点? 当检测到平面并点击它时,我是否能够渲
我想在检测到图像时在相框中播放视频,有人使用 ARCore 这样做过吗?将会有很大的帮助 谢谢 最佳答案 我认为您的意思是您希望在检测到图像时将视频添加为 ARCore 中的可渲染内容。 实际上(在撰
我正在寻找一种方法来查找 ARCore sceneform SDK 中一个节点与其他节点的距离。我研究了 overlapTestAll() 和 overlapTest() ,它们只返回彼此冲突的列表节
我是 AR 的新手。我想知道是否有一种方法可以使用 ARCore for android 将保存在手机上的图片显示到表面上。就像我能够将 Sceneform 示例与预编码图像一起使用,但现在我想将图片
是否有类似于 ARKit 的 WorldAlignment for ARCore 的选项来从相机更改为重力和航向?或者我是否需要相应地更改每个对象的位置? https://developer.appl
我是一名优秀的程序员,十分优秀!