将线段投影到多边形网格上

时间:2013-10-10 14:42:25

标签: graphics 3d geometry computational-geometry projection

我正在研究一个3d应用程序,目前正在寻找一种方法,将由屏幕空间中的两个点定义的线段投影到三维多边形网格上(在我的例子中是三角形网格)。目标是在线段的世界空间中找到与网格边缘的交点。

我只能想到两种方法,但两种方法都不理想。第一种是以较小的间隔对线段(在屏幕空间中)进行采样,并以这些间隔对光线进行跟踪,以找到光线击中网格的世界空间坐标,但这并不容易给出线的交点。带网格边的线段。

我能想到的另一种方法是以某种方式将网格反投影到屏幕空间,找到那里的交叉点(在2d中),然后将这些交叉点投影回3d。这个问题是屏幕空间坐标系可能会在选择线段的第一个和第二个端点之间发生变化(由于移动相机)。

如果其中任何一个令人困惑,那么这里的图像大致显示我正在尝试做的事情(白点表示我想要找到的点)。但是,就我而言,黄色曲线只是一个线段。

enter image description here [Yunjin Lee,et al。 “具有最小规则和部分显着性的网状剪刀。” 2005]

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这是我的建议:

  1. 将屏幕线投影到世界空间(在世界空间中获取平面)。

  2. 将平面与网格中的三角形相交,得到一组边。

  3. 将边添加到数据结构中,该数据结构仅保留最靠近相机平面的边缘部分(请参见下图,其中红线段及其端点是我们要保留的部分)。这就像通过Z缓冲区构建图像一样,除了因为我们知道这个集合是分段线性的,我们不必对它进行栅格化,我们可以只维护一个有序的端点列表。

  4. enter image description here