确定3d坐标是否在平截头体内

时间:2013-11-22 06:55:54

标签: c++ 3d coordinates

我正在尝试为我注入应用程序的特定屏幕保护程序实现覆盖。 此屏幕保护程序使用3d对象和动态相机。

我有相机位置和方向以及3d对象位置和fov值,我想创建一个基于音频的叠加层,为对象添加图标。

我有2d覆盖到位,并且可以成功迭代对象,但我无法计算如何用我拥有的数据计算平截头体。

基本上:如何从相机方向创建一个截头体?是否需要创建截锥体的屏幕矩阵世界?我没有w2s矩阵,那么这会使问题无法解决吗?

1 个答案:

答案 0 :(得分:0)

http://web.archive.org/web/20120531231005/http://crazyjoke.free.fr/doc/3D/plane%20extraction.pdf有一个很好的资源,可以解释你需要的一切,并概述了如何使用视图和模型矩阵提取视锥体。

关于世界屏幕(W2S)矩阵,您可以使用以下变体即时计算:

ScreenPosition = (ProjectionMatrix* (ViewMatrix * WorldPosition))

你可以根据需要随时计算它。

Lighthouse还有一个针对截头剔除的截然不同的教程,但很好地解释了实现。