如何将2D位图放置在始终面向用户(相机)的ARCore锚位置? 我想在用户点击的位置放置一个标记。
您是否必须将模型,视图,投影矩阵相乘以实现此目的?
目前我尝试使用andy_shadow.obj来显示位图,因为它是一个扁平的3D对象。但是我无法面向用户(旋转)并将其放置在用户点击的位置。
Matrix.rotateM(mModelMatrix, 0, 90.0f, 1.0f, 0.0f, 0.0f);
这会将物体旋转到面向相机,但是当您向左/向右转45度并放置一个新物体时,它将看起来很平坦,因为它从帧开始的位置是90度。
也许可以在OpenGL中的屏幕UI上放置2D对象?
答案 0 :(得分:3)
您有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"当你四处走动时,总要看着你。
绘制2D图像的第二部分需要更多代码。在高层:
一个工作示例位于QuadRenderer.java。在示例中,使用它就像使用ObjectRenderer类一样。