2

我有一个非常笼统的问题。我希望确定多个对象的边界点(包括 30-50 个封闭多边形 (z),每个具有大约 300 个点 (x,y,z))。我正在使用一个固定的视口,它围绕多边形坐标系的 x、y 和 z 轴(alpha、beta、gamma)旋转。

在我看来,有两种可能性:透视投影或光线追踪。透视投影似乎需要对每个点进行大量矩阵运算来确定其位置是否在视口内。或者考虑到大量的点,我会更好地将视口像素光线追踪到对象吗?即确定是否存在交叉点,然后确定交叉点是否发生在对象内或对象外。无论哪种情况,我都会将此结果写为 0(外部)或 1(内部)到 200x200 表示视口的整数矩阵

谢谢你的期待

4

2 回答 2

6

透视投影(然后扫描转换​​图像坐标中的多边形)将快得多

透视投影所需的矩阵变换(本质上是世界到相机的矩阵)在光线追踪时需要以完全相同的方式进行。但是,使用透视投影时,您只是在变换角点,而使用光线跟踪时,您正在变换图像中的所有点。

于 2009-10-08T11:16:40.060 回答
0

您应该能够使用透视投影和透视投影矩阵来计算屏幕空间中顶点的位置吗?很难理解你真正想要做什么。如果您想创建该 3D 场景的图像,那么只有少数多边形,如果您的代码经过优化,那么无论如何都很难看到光线追踪和光栅化之间的任何区别(您仍然需要为光线追踪方法使用加速结构),但是无论如何,光栅化可能会更快。

现在,如果您需要计算眼睛(相机的原点)与通过相机视图可见的几何形状之间的距离,我不明白为什么您不能将任何样本的深度值用于图像中的任何像素并使用透视投影矩阵的逆来找到它在相机空间中的距离。

为什么速度是您的问题中的一个问题?否则确实使用RT。

大部分信息可以在 www.scratchapixel.com 上找到

于 2014-12-29T23:51:48.507 回答