在 ARCore 锚点上放置 2D 位图 Android openGL ES 2.0
Place 2D Bitmap on ARCore anchor Android openGL ES 2.0
如何将 2D 位图放置在始终面向用户(相机)的 ARCore 锚点位置?
我想在用户点击的地方放置一个标记。
你必须乘以模型、视图、投影矩阵才能实现吗?
目前我尝试使用 andy_shadow.obj 来显示位图,因为它是平面 3D 对象。但是我无法让它面向用户(旋转)并将其放置在用户点击的位置。
Matrix.rotateM(mModelMatrix, 0, 90.0f, 1.0f, 0.0f, 0.0f);
这会旋转对象以面向相机,但是当您将对象旋转 45 度到 left/right 并放置一个新对象时,它看起来会是平的,因为它与框架开始的位置成 90 度。
也许可以在屏幕上放置 2D 对象 UI 在 openGL 中?
您要问 2 个问题。首先,如何旋转物体以始终注视相机。
我能够通过使用框架的旋转与锚点的旋转来做到这一点。在 HelloArActivity.onDrawFrame() 中更改
planeAttachment.getPose().toMatrix(mAnchorMatrix, 0);
成为
float translation[] = new float[3];
float rotation[] = new float[4];
planeAttachment.getPose().getTranslation(translation,0);
frame.getPose().getRotationQuaternion(rotation,0);
Pose rotatedPose = new Pose(translation,rotation);
rotatedPose.toMatrix(mAnchorMatrix,0);
这将使 "Andy" 在你四处走动时总是看着你。
绘制二维图像的第二部分需要更多代码。高级别:
- 使用 (0,0,0) 周围的顶点创建一个矩形
- 使用 UVMap 将纹理映射到四边形上。
- 使用将位置乘以 MVP 矩阵的顶点着色器
工作示例位于 QuadRenderer.java。在示例中,就像使用 ObjectRenderer class 一样使用它。
如何将 2D 位图放置在始终面向用户(相机)的 ARCore 锚点位置? 我想在用户点击的地方放置一个标记。
你必须乘以模型、视图、投影矩阵才能实现吗?
目前我尝试使用 andy_shadow.obj 来显示位图,因为它是平面 3D 对象。但是我无法让它面向用户(旋转)并将其放置在用户点击的位置。
Matrix.rotateM(mModelMatrix, 0, 90.0f, 1.0f, 0.0f, 0.0f);
这会旋转对象以面向相机,但是当您将对象旋转 45 度到 left/right 并放置一个新对象时,它看起来会是平的,因为它与框架开始的位置成 90 度。
也许可以在屏幕上放置 2D 对象 UI 在 openGL 中?
您要问 2 个问题。首先,如何旋转物体以始终注视相机。
我能够通过使用框架的旋转与锚点的旋转来做到这一点。在 HelloArActivity.onDrawFrame() 中更改
planeAttachment.getPose().toMatrix(mAnchorMatrix, 0);
成为
float translation[] = new float[3];
float rotation[] = new float[4];
planeAttachment.getPose().getTranslation(translation,0);
frame.getPose().getRotationQuaternion(rotation,0);
Pose rotatedPose = new Pose(translation,rotation);
rotatedPose.toMatrix(mAnchorMatrix,0);
这将使 "Andy" 在你四处走动时总是看着你。
绘制二维图像的第二部分需要更多代码。高级别:
- 使用 (0,0,0) 周围的顶点创建一个矩形
- 使用 UVMap 将纹理映射到四边形上。
- 使用将位置乘以 MVP 矩阵的顶点着色器
工作示例位于 QuadRenderer.java。在示例中,就像使用 ObjectRenderer class 一样使用它。