是否可以将物体放在高30或50米的人上方?
当我尝试放置链接到 anchor 的对象时,它在20米内可见,而在40米内不可见?
为什么会发生这种情况,我该如何配置?
最佳答案
这是ARCore中的frustum culling
问题–不在视锥台可见区域内的对象将不会被渲染。通常,Android设备中的FoV
(视场)在水平方向上约为60度(垂直孔径取决于纵横比)。 Viewing frustum culling
是从渲染过程中删除完全位于视锥范围之外的对象的过程,从而显着减少了CPU和GPU的计算负担。并且不要忘记,远近裁剪平面也是平截头体的一部分。
要返回用于渲染内容的投影矩阵,请使用以下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())
希望这可以帮助。