在three.js中将纹理应用于立方体内部

在three.js中将纹理应用于立方体内部,three.js,texture-mapping,Three.js,Texture Mapping,我试图在立方体的每个面上,在内部应用不同的图像 我这里有一个工作示例: 我像这样加载图像: var material = [ new THREE.MeshLambertMaterial({ map: THREE.ImageUtils.loadTexture('http://placehold.it/512x512', {}, function(){ webGLRenderer.render(scene, camera); }) }),

我试图在立方体的每个面上,在内部应用不同的图像

我这里有一个工作示例:

我像这样加载图像:

var material = [
                new THREE.MeshLambertMaterial({
map: THREE.ImageUtils.loadTexture('http://placehold.it/512x512', {}, function(){ webGLRenderer.render(scene, camera); })
}),
                new THREE.MeshLambertMaterial({
map: THREE.ImageUtils.loadTexture('http://placehold.it/512x512', {}, function(){ webGLRenderer.render(scene, camera); })
}),
                new THREE.MeshLambertMaterial({
map: THREE.ImageUtils.loadTexture('http://placehold.it/512x512', {}, function(){ webGLRenderer.render(scene, camera); })
}),
                new THREE.MeshLambertMaterial({
map: THREE.ImageUtils.loadTexture('http://placehold.it/512x512', {}, function(){ webGLRenderer.render(scene, camera); })
}),
                new THREE.MeshLambertMaterial({
map: THREE.ImageUtils.loadTexture('http://placehold.it/512x512', {}, function(){ webGLRenderer.render(scene, camera); })
}),
                new THREE.MeshLambertMaterial({
map: THREE.ImageUtils.loadTexture('http://placehold.it/512x512', {}, function(){ webGLRenderer.render(scene, camera); })
})
];

var mesh = THREE.SceneUtils.createMultiMaterialObject(geom, new THREE.MeshFaceMaterial(material));

mesh.doubleSided = true;
但它不起作用。在代码中,它从第82行开始。
在第107行,有一个注释部分用颜色而不是纹理来构建立方体,这是可行的。

您需要的是在材质中定义
3。背面
。例如:

var material = new THREE.MeshBasicMaterial({ map: texture, side: THREE.BackSide });
编辑

更新了您的代码:

请看下面的说明

此外,守则:

var mesh = THREE.SceneUtils.createMultiMaterialObject(geom, new THREE.MeshFaceMaterial(material));
应该是:

var mesh = THREE.SceneUtils.createMultiMaterialObject(geom, material);

你需要的是在你的材料中定义
3.BackSide
。例如:

var material = new THREE.MeshBasicMaterial({ map: texture, side: THREE.BackSide });
编辑

更新了您的代码:

请看下面的说明

此外,守则:

var mesh = THREE.SceneUtils.createMultiMaterialObject(geom, new THREE.MeshFaceMaterial(material));
应该是:

var mesh = THREE.SceneUtils.createMultiMaterialObject(geom, material);

如果这个或任何答案已经解决了你的问题,请考虑通过点击复选标记接受它。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。如果这个或任何答案已经解决了你的问题,请考虑通过点击复选标记接受它。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。