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