2014-01-24 45 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。希望有帮助