将物体放置在人的上方30米处

问题描述 投票:4回答:1

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

当我试图放置一个与锚相关联的物体时,它在20米处可见,在40米内不可见?

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

java kotlin augmented-reality arcore frustum
1个回答
3
投票

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

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

enter image description here

要了解更多有关frustum culling的信息,请阅读this useful article

要返回用于呈现内容的投影矩阵,请使用以下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())

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.