2014-01-24 44 views
0

我們正在研究產品設計師項目。設計師準備好了。紋理映射three.js中的不同對象

我想用three.js做3D預覽結果。

我們如何構造手機外殼的一面?或者我們可以邊界紋理映射?

OBJLoader版本: http://www.shopilife.com/baskiburada/viewer/viewer_4.html

有些OBJ文件不能紋理。錯誤是「GL_INVALID_OPERATION:glDrawElements:嘗試訪問屬性2中的範圍頂點」 http://www.shopilife.com/baskiburada/viewer/viewer2.html

+0

您的幾何體需要在faceVertexUvs [0]中使用UV來避免錯誤。 – WestLangley

回答

0

首先,關於重新紋理背面與手機外殼的正面。這裏的方法是分離模型本身的UV座標。這樣你有兩組材料/紋理/ UV。當要切換一個看看您會抓住網格和改變映射到所需的側面東西

materialArray.push(THREE.BasicMeshMaterial({color: 0xff0000})); //use whatever Material type you'd like of course 
materialArray.push(THREE.BasicMeshMaterial({color: 0x0000ff})); 
var multipleMaterial = new THREE.MeshFaceMaterial(materialArray); 
phoneCaseMesh= new THREE.Mesh(geometry, multipleMaterial); 

然後:然後在運行時期間使用MeshFaceMaterial加載他們兩個加載兩種材料中的陣列,像這樣像:

phoneCaseMesh.material.materials[1].map = THREE.ImageUtils.loadTexture('newtexture.jpg'); 

第二,關於你的第二個錯誤樣本,WestLangley是正確的OBJ文件沒有UV座標映射到,所以指數是出界,當你申請一個紋理。如果你查看兩個OBJ文件,你的iphone4.obj有vt實體,而untitled.obj只是vf。希望有幫助