2012-06-16 73 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分量是近剪輯和遠剪輯,然後將其反向投影到世界座標? –