繁体   English   中英

将2D位图放置在ARCore锚点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度并放置新的对象时,由于它与帧的起始位置成90度,因此它将看起来很平坦。

也许可以在openGL的屏幕UI上放置2D对象?

您要问两个问题。 首先,如何旋转对象以始终看着相机。

通过使用框架的旋转与锚点的旋转,我能够做到这一点。 在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”在您四处走动时总是看着您。

绘制2D图像的第二部分需要更多代码。 在高层次上:

  1. 使用围绕(0,0,0)的顶点创建一个矩形
  2. 使用UVMap将纹理映射到四边形。
  3. 使用顶点着色器将位置乘以MVP矩阵

一个有效的示例在QuadRenderer.java中 在该示例中,就像使用ObjectRenderer类一样使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM