2011-04-27 31 views
1

这似乎是一个问题,答案应该很容易在网络或书籍上找到,但我对于答案的追求使我到目前为止只能看到那些变成死胡同的盲人小巷。用透视投影去除表面的深度插值

我试图通过隐藏表面去除(线条是实体对象的边缘)来实时绘制3D线条。

所以我有两个三维点投影到二维点使用透视投影。对于每个点我计算了点的深度。现在我想绘制连接2个点的线段,并且为了使隐藏表面去除起作用,我必须计算2D线上每个中间2D点(由投影产生的结果)相应3D点的深度(投影在中间2D点上的3D点)。

我的问题是,由于深度函数在进行透视投影时不是线性的,因此我无法插入2个原始3D点的深度来计算中间点的深度。

那么如何用兼容实时渲染约束的方法计算线上每个点的深度?

在此先感谢您的帮助。

+0

可能重复的(http://stackoverflow.com/questions/5805992/finding-projection-and -z-distance) – Alnitak 2011-04-27 20:29:00

+0

答案是随时可用的 - 这是在5个小时前这里问的... – Alnitak 2011-04-27 20:29:26

回答

1

使用齐次坐标,其可在屏幕空间中线性插值:[寻找投影和z距离] http://www.cs.unc.edu/~olano/papers/2dh-tri/

+0

仍然没有得到它:我所知道的唯一深度定义是坐标平方和的平方根如果中心或投影在原点。鉴于这个定义,我没有看到这个深度函数(或其倒数1 /深度)如何可以是线性的,因此可以插入 – 2011-05-14 18:45:42

+0

这是距离原点的距离。计算机图形学术语中的深度是Z. 1/Z是可线性插入的。 – 2011-05-15 20:16:47

+0

好的,但要做隐藏的表面去除(使用透视投影时),距离投影中心的距离是多少?距离投影中心的距离是我在光线追踪环境中进行隐藏表面去除时使用的,并且工作正常。对于大多数情况,1/Z是否足够好? – 2011-05-15 21:52:08