簡體   English   中英

將Wavefront .obj的vt映射到OpenGL紋理坐標

[英]Mapping Wavefront .obj's vt to OpenGL texture coordinates

一位藝術家朋友發給我一個由3DS Max 2009導出的.obj文件,該文件包含三個紋理坐標作為vt命令的參數。 根據.obj規范,這是正確的。 但是,我不確定如何映射為常規2D .jpg紋理提供的UVW坐標。

這對我來說相對重要,因為我玩3DS Max試圖弄清楚如何強制它只導出UV坐標,但似乎沒有直接的方式。 在這種情況下,這只是一個天空盒,但在其他情況下,它可能更復雜,而不是手動固定。

謝謝!

文章“ 什么是UVW映射”中有一節 這解釋了:

您可能會質疑為什么需要像2D平面那樣的深度坐標。 一個原因是因為相對於幾何圖形而言,能夠翻轉地圖的方向有時是有用的。 為此,您需要第三個坐標。 W坐標對三維程序材料也有意義。

在您的情況下,您可以簡單地忽略W坐標,只讀取以vt開頭的前兩行浮點數。 這假設您並不十分擔心W坐標占用的額外空間,因為.obj是一種非常低效的文件格式。

我個人不喜歡在OpenGL中使用.obj,因為它提供了每個面而不是每個頂點的頂點法線。 要正確照亮對象,您必須復制頂點或通過平均面中的周圍頂點法線來計算法線。 如果您想探索更有效的替代方案,請查看二進制格式,例如完整記錄的.md2格式。 如果你還沒有使用它,也可以考慮使用glDrawElements。

對不起,如果我誤解了你的問題。 但是你不能簡單地忽略第三個參數嗎? 據我了解,w只是垂直於u和v描述的平面的平面中的坐標,因此簡單的2d紋理映射很少需要它。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM