2012-06-08 70 views
1

所以我需要一個紋理球體從CG的像素/片段着色器內映射紋理化一個球體。在CG渲染

我必須在每通「輸入」什麼是笛卡爾座標x,y,z計算上,我想紋理進行採樣球點。然後我改變這些座標轉換成球面座標,並使用角披和Theta如U和V座標,分別,例如:

u = atan2(y, z) 
v = acos(x/sqrt(x*x + y*y + z*z)) 

我知道,這個簡單的映射將在球體的但在兩極產生接縫那一刻,我的問題是紋理在整個球體上重複數次。我想要和需要的是整個紋理被包裹在球體上一次。

我擺弄着色器和四處搜尋了幾個小時,但我不能找到一個解決方案。我想我需要在某個地方應用某種縮放,但是在哪裏?或者,也許我完全在錯誤的軌道上,我對Cg和着色器編程非常陌生...感謝您的幫助!

+0

歡迎StackOverflow的,我希望大家閱讀[常見問題](http://stackoverflow.com/faq#howtoask)。 –

回答

0

由於反三角函數結果的角度,他們會在[-Pi, Pi]u[0, Pi]v(雖然你不能搜索過小時trigonometrics至少基本知識,從學校獲得的)。所以你只需要適當地擴展它們。 u /= 2*Piv /= Pi應該做的,假設你有GL_REPEAT(或相當於D3D)的紋理座標包裝模式(你的描述聽起來像)。

+0

只是爲了澄清:我居然沒有發現任何東西指着我這個答案,可能是因爲它是如此簡單。 (我有三角學的知識;猜測我看不到樹的樹林......) – Campusanis