2013-01-25 77 views
0

我有幾個帶有關聯的mipmap紋理文件的OBJ文件。我將mipmap作爲紋理加載並將其映射到加載每個OBJ文件後產生的3D對象。 3D對象一起渲染時會形成更大的3D對象的各個部分。使用Three.js將紋理(x,y)映射到3D對象(x,y)

而不是使用mipmap,我想使用2D圖像作爲紋理並將其「放」在3D對象的頂部,以便3D對象中每個(x,y)的顏色對應於顏色在紋理的(x,y)位置(z不重要 - 拉伸/扭曲的紋理可以)。

基本上,我不是將紋理映射到對象中的(x,y,z)頂點,而是將它映射到具有相同(x,y)的任何頂點。有沒有辦法與Three.js做到這一點,而無需閱讀畫布中的圖像數據?

回答

0

當然,你只需要改變你的網LIK所以每個頂點的烏布蘇:

uv.x = C * (vertex.x + A) 
uv.y = C * (vertex.y + A) 

然後紋理分配給你的網,你應該得到你想要的。

如上所述,您必須適當地應用比例/平移因子,以便UV最終在[0,1]的範圍內。

+0

非常感謝!完美的作品! –

+0

對不起,快速跟進:我的網格座標不是(0,1)x(0,1),所以我在創建時對它們進行了規範化(通過在所有頂點上調用.normalize())。現在,不是我的3d對象,所有的網格頂點都摺疊成半球形。關於爲什麼會發生這種情況的想法?有沒有辦法將非標準化的座標傳遞給faceVertexUvs? –

+0

不要更改網格頂點座標。相反,如上所述應用仿射變換。我編輯了這篇文章。 – WestLangley

相關問題