其他分享
首页 > 其他分享> > android – 如何将对象始终放在相机前面

android – 如何将对象始终放在相机前面

作者:互联网

我正在申请,我正在渲染360图像,我想在相机前面添加一个物体或十字架,即(广告牌概念).

所以我从堆栈溢出本身已经厌倦了很多东西,但我不知道我怎么能做到这一点下面是我正在尝试做的代码.

Vector3 position;
    float[] newPosition4 = new float[4];
    position = obj.getPosition();
    float[] posVec4 = {0, 0, -8, 0.0f};
    float[] HeadViewMatrix_inv = new float[16];
    Matrix4 HeadViewMatrix4 = new Matrix4();
    HeadViewMatrix4.setAll(getCurrentCamera().getViewMatrix());
    HeadViewMatrix4 = HeadViewMatrix4.inverse();

    //Copy matrix to HeadViewMatrix array,
    HeadViewMatrix4.toFloatArray(HeadViewMatrix_inv);

    //Translation of viewMatrix 
    Matrix.multiplyMV(newPosition4, 0, HeadViewMatrix_inv, 0, posVec4, 0);
    obj.setPosition(newPosition4[0], newPosition4[1], newPosition4[2]);

所以任何人都可以帮助我解决这个问题.

解决方法:

如果我理解你要求的东西,这几乎是最简单的事情.您需要构造一个新矩阵或简单地删除当前的矩阵(使用标识).

通过从A(-0.5,0.0,0.0)到B(0.5,0.0,0.0)绘制一条线的同一性,将在屏幕中间绘制一条直线垂直线.这将占用屏幕中间一半的屏幕尺寸.

我建议您使用带有屏幕坐标的正交投影矩阵,并将对象放在中间,就像使用恒定大小的另一个视图(宽度/ 2,高度/ 2)一样.

但是,如果要使其始终可见,请确保在绘制此元素时禁用深度缓冲区.

如果由于某种原因你想要使用视锥体矩阵将对象保持在你面前,甚至可能保持深度测试,那么你只需要保持相同的投影矩阵(视锥体部分)并将视图矩阵设置为标识(来自相机).设置完成后,您需要做的就是将对象放在绝对零(.0f,.0f,distanceToObject)之前.

标签:android,3d,opengl-es,virtual-reality
来源: https://codeday.me/bug/20190527/1163819.html