GODOT:从相机的角度对简单 3D 模型的 AABB 进行有效计算是什么

问题描述

我试图想出一种快速有效的方法将 3d 网格转换为投影的 AABB。最后,我想完成类似于图 1 的事情,其中​​只有立方体覆盖的屏幕区域位于以红色突出显示的边界框内。 ((如果可能的话,让区域尽可能小,以蓝色突出显示,会提高效率。)

图 1.https://i.imgur.com/pd0E20C.png

目前,我已经尝试过:

  • 使用 camera.unproject_position() 计算屏幕上的点位置。这主要是因为我无法将头环绕在趋向无穷大的像素位置上。我知道这与 Tan 有关系,但坦率地说,我的大脑再运作为时已晚。
  • 获取视锥体和网格实例的 AABB 之间的碰撞区域。这种方法看起来很复杂,为了获得可用的格式,我需要再次将结果投影到二维坐标中。
  • 使用 MeshInstance VisualInstance 创建一个纹理,其中一个像素如果包含网格实例则为白色,否则为黑色。视觉实例通常只是让我感到困惑,我不认为有另一个视口只是为了输出这个纹理会很有效。

我在找什么:

  • 可以传递给着色器的输出,通知在哪里完成某些计算。现在它被设置为使用边界框,但它可以很容易地重写为也使用纹理。它也可以被重写以使用多边形,但我试图将着色器中的计算保持在最低限度。

我之前尝试过的某些解决方案稍微有效,但这必须是可靠的。与 3d 对象接口的相机将能够完全围绕并穿过它,这意味着有时视图将完全被 3d 模型包围,前后都有点。

感谢您提供的任何帮助。 如果需要,我会尽力用信息更新这篇文章。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...