如何解决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 举报,一经查实,本站将立刻删除。