java - 将物体放置在人上方 30 米处
问题描述
是否可以将物体放在高于 30 或 50 米的人的正上方?
当我尝试放置一个链接到锚点的对象时,它在 20 米内可见,在 40 米内不可见?
为什么会发生这种情况,我该如何配置?
解决方案
这是frustum culling
ARCore 中的问题——不在相机视锥体可视区域内的对象将不会被渲染。通常FoV
,Android 设备中的(视野)水平约为 60 度(垂直孔径取决于纵横比)。Viewing frustum culling
是从渲染过程中移除完全位于视锥体之外的对象的过程,从而显着降低 CPU 和 GPU 的计算负担。并且不要忘记近和远剪裁平面也是平截头体的一部分。
要正确设置对象的可见性,只需使用您可以在HERE和HERE找到的以下建议。
要了解更多信息,
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())
希望这可以帮助。
推荐阅读
- c - 创建没有结构的电话簿
- c# - C# dll 注入不加载 dll
- python-3.x - 在简单代码上运行 tensorflow 时发生错误
- r - 无法在 R 中安装“lodown”
- amazon-web-services - AWS Step Functions 中的 Docker 映像
- javascript - 如何从按钮 HTML 调用活动 Android?
- javascript - “HTMLElement”类型上不存在属性“bar”
- sql-server - 如何比较sql server中xml属性中的日期
- dask - Dask 分布式 ImportError: Please 'pip install zict' with Python 2.7 on Centos 7
- python - python regex - 查找具有特定类的html标签