2010-07-30 148 views
3

我已經編寫了一個3d地形引擎,在它上面有一個簡單的模型引擎。紋理模型

我爲我的地形使用矩形高度貼圖,因此紋理化這些三角形非常簡單。

但是,紋理我的模型我有點卡住了。

我使用自定義的模型格式,所以喜歡使用攪拌機的答案或使用3DS不會有幫助。

這樣做的原因是,我開始了這個愛好項目來教自己的OpenGL編程,因爲我已經從一個真正舊的Turbo Pascal軟件渲染我的一個朋友在1999年寫了準備的車型,我只是不停使用它們。

我的問題是:

是否有一個著名的算法來爲我的模型由三角形的紋理座標?如果不是,我應該遵循什麼策略?

回答

4

有很多方法可以自動生成紋理座標,但我不知道有什麼簡單的方法可以做到這一點,這樣可以使座標沒有明顯的失真或過多的不連續性。

我會說最簡單的方法是編寫一個小程序,將您的當前模型格式轉換爲更標準的格式。過去我已經完成了這個工作,並且我發現XNA .x格式非常易於轉換。我認爲你嘗試的任何事情最終都會花費更長的時間,比做這個更困難,然後使用3D建模軟件包中提供的工具。

如果您完全確定您不想進行轉換,那麼我的建議是瞄準簡單的東西,並接受結果不會太好。一種簡單的方法是球面投影 - 基本上,您可以根據與從模型中心到頂點的矢量對應的「緯度」和「經度」將紋理座標分配給頂點。

同樣容易,但通常對於像角色這樣的東西更好,是將所有面向前方的多邊形投影到它們的x和y座標上,並且對於後面的多邊形也是如此,除了將它們抵消以使兩組彼此相鄰。

進一步你可以嘗試圓柱投影也。這些投影中的每一個都適用於某些形狀。但是,一般來說,它們會比Blender等適當的紫外線打包更差。

1

您也可以編寫一個小攪拌機導入程序和相應的導出程序。每個人都應該不會超過100行的Python(模型格式看似簡單),並自動UV映射算法是很多比2X 100 LOC

另一種解決方案是下降的支持更復雜的舊格式,並使用您找到的第一個.obj加載器(或任何其他)。