首页 > 解决方案 > 将物体放置在人上方 30 米处

问题描述

是否可以将物体放在高于 30 或 50 米的人的正上方?

当我尝试放置一个链接到锚点的对象时,它在 20 米内可见,在 40 米内不可见?

为什么会发生这种情况,我该如何配置?

标签: javaandroidkotlinaugmented-realityarcore

解决方案


这是frustum cullingARCore 中的问题——不在相机视锥体可视区域内的对象将不会被渲染。通常FoV,Android 设备中的(视野)水平约为 60 度(垂直孔径取决于纵横比)。Viewing frustum culling是从渲染过程中移除完全位于视锥体之外的对象的过程,从而显着降低 CPU 和 GPU 的计算负担。并且不要忘记近和远剪裁平面也是平截头体的一部分。

要正确设置对象的可见性,只需使用您可以在HEREHERE找到的以下建议。

在此处输入图像描述

要了解更多信息,frustum culling请阅读这篇有用的文章

要返回用于呈现内容的投影矩阵,请使用以下 java 方法:

public void getProjectionMatrix (float[] dest, 
                                 int offset, 
                                 float near, 
                                 float far);

我可以在MainActivity.java文件中以这种方式使用它:

// Getting Projection Matrix
float[] projectionMtx = new float[16];
arSession.getProjectionMatrix(projectionMtx, 0, 0.5f, 201.0f);

// Setting Projection Matrix
arRenderer.setProjectionMatrix(projectionMtx);

...或以这种方式在MainActivity.kt文件中:

// Getting Projection Matrix
private fun computeProjectionMatrix(): FloatArray {
    val projectionMtx = FloatArray(16)
    session.getProjectionMatrix(projectionMtx, 0, 0.5f, 201.0f)
    return projectionMtx
}

// Setting Projection Matrix
renderer.setProjectionMatrix(computeProjectionMatrix())

希望这可以帮助。


推荐阅读