如何创建多个长方体并仅更改一侧的纹理



我试图将纹理仅应用于长方体对象的一侧。

基本代码:

BoxGeo = new THREE.BoxGeometry(50, 50, 125);
BoxMat = new THREE.MeshLambertMaterial({ color: 0xF0F0F0 });
BoxObj = new THREE.Mesh(GeoBox, GeoMat);

我尝试使用一个包含6种材质对象的数组,5种颜色,一种带有图像(从每个长方体的另一个纹理数组中随机选择)。但它抛出了一个错误:(

是否可以为每个面提供一个具有不同纹理的长方体的简单示例?我在互联网上看到了一些例子,但他们需要将材质数组放在几何对象中,出于性能原因,我希望避免为每个长方体创建新的几何对象。

这个示例怎么样?它会创建材质阵列,然后将其添加到网格中。所以,你可以重复使用它。

相关代码:

// Create an array of materials to be used in a cube, one for each side
var cubeMaterialArray = [];
// order to add materials: x+,x-,y+,y-,z+,z-
cubeMaterialArray.push( new THREE.MeshBasicMaterial( { color: 0xff3333 } ) );
cubeMaterialArray.push( new THREE.MeshBasicMaterial( { color: 0xff8800 } ) );
cubeMaterialArray.push( new THREE.MeshBasicMaterial( { color: 0xffff33 } ) );
cubeMaterialArray.push( new THREE.MeshBasicMaterial( { color: 0x33ff33 } ) );
cubeMaterialArray.push( new THREE.MeshBasicMaterial( { color: 0x3333ff } ) );
cubeMaterialArray.push( new THREE.MeshBasicMaterial( { color: 0x8833ff } ) );
var cubeMaterials = new THREE.MeshFaceMaterial( cubeMaterialArray );
// Cube parameters: width (x), height (y), depth (z), 
//       (optional) segments along x, segments along y, segments along z
var cubeGeometry = new THREE.CubeGeometry( 100, 100, 100, 1, 1, 1 );
// using THREE.MeshFaceMaterial() in the constructor below
//   causes the mesh to use the materials stored in the geometry
cube = new THREE.Mesh( cubeGeometry, cubeMaterials );

相关内容

  • 没有找到相关文章

最新更新