2012-06-16 74 views
0

我有一个3D场景,我想要“乱丢”它与随机放置在视锥内的X数量的对象。均匀分布在一个平截头体内的随机点

我尝试使用3个随机量:X + Ý(视口0..1),然后Ž从照相机的距离,然后使用摄像机的距离突出。然而,这不会产生均匀的分布,靠近相机的物体太多,离得太远。

可以选择在立方体内生成一个随机点并过滤视锥体外的那些点,但是我生成了这些点的一部分,我担心性能。

如何以均匀分布的方式在平截头体内生成一个随机点?

回答

0

在NDC空间中分配点并使用逆平截头体变换和w-划分到视图空间向后投影它们。

+0

对不起你失去了我......我明白剪辑空间部分和背投影,但是如果我到目前为止,我没有弄错,会产生不一致的结果?我不明白w-划分视图空间是什么意思? –

+0

@AmirAbiri:看看典型的转型渠道。首先将视图空间坐标乘以投影矩阵P:'r_clip = P * r',然后引入w分割应用于达到NDC'r_NDC的视角效果。{x,y,z,w} = r_clip 。{x,y,z,w}/r_clip.w'。你必须走完全相反的方向。我建议看看'gluUnProject'的源代码(你可以在Mesa3D源代码中找到它)。 – datenwolf

+0

所以如果我理解正确,我们基本上会选取{0..1,0..1,0..1}中的随机点,其中X和Y代表标准化的屏幕坐标,Z分量是近剪辑和远剪辑,然后将其反向投影到世界坐标? –