2013-04-14 75 views
1

我正在處理類項目的掃描線渲染。渲染器工作到目前爲止,它讀取模型(主要使用猶他州茶壺),計算頂點/表面法線,並可以做平坦和phong陰影。我現在正在處理添加紋理映射,這是我遇到問題的地方(除了實際繪製屏幕上的點外,我不能使用任何OpenGL方法)。用圓柱體中間表面手動進行紋理貼圖

所以,我讀了一個紋理到我的應用程序,並有一個二維數組的RGB值。我知道這個概念是將紋理從2D紋理空間映射到簡單的3D對象(在我的情況下是圓柱體)。然後,我們現在可以將中間表面映射到物體表面上。

但是,我實際上並不知道如何做這些事情:)。我發現了一些將紋理映射到圓柱體的公式,但他們似乎總是會留下細節,例如使用哪些值。然後我也不知道如何獲取我的對象的頂點座標並獲得該點的柱面值。還有一些關於映射到柱面的其他StackOverflow帖子,但他們1)使用着色器等處理較新的OpenGL以及2)不處理中間曲面,所以我不知道如何從它們翻譯知識。

因此,任何關於使用圓柱體作爲中間表面將紋理映射到3D對象上的僞碼的幫助都將不勝感激。

+0

紋理映射不以「中間面」工作。從技術上講,紋理爲插值函數定義採樣點,並且根據紋理座標沿原始光柵化器對插值函數進行採樣。紋理座標明確給出或從頂點位置計算。我知道這不是一個非常令人滿意的答案,因此我將它寫爲評論。 – datenwolf

回答

2

您一直使用短語「中間表面」,它沒有正確描述過程,但卻暗示着你腦子裏有什麼。

基本上,你要求一種方法將茶壺表面上的每個點映射到圓柱體上(假設紋理將被「包裹」在圓柱體上)。

只需將您的麪點轉換成圓柱座標([RTHETA高度),然後用THETA作爲u高度v(texcoords)。

這是你想達到什麼目的:

+0

以爲我有這個想法,但繼續在圈子(壞笑話)。那麼我怎樣才能將表面點轉換成圓柱座標呢?不知道'x,y,z'點如何轉換爲'r,theta和height'。 – chrismanderson

+0

我無法在此評論中對該數學進行格式和排版。我將不得不向你推薦維基百科,以獲得[從笛卡兒座標轉換爲圓柱座標](http://en.wikipedia.org/wiki/Cylindrical_coordinate_system)的實際數學。查看「座標系統轉換」部分。具體而言,使用** arcsin **(這是math.h中的asin)的公式。 –