Skip to content

阵列立方体

阵列立方体

for 循环创建一列模型

所谓阵列立方体就是创建多个一样的立方体,实现思路就是 for 循环。

js
const geometry = new THREE.BoxGeometry(100, 100, 100);
//材质对象Material
const material = new THREE.MeshLambertMaterial({
  color: 0x00ffff, // 设置材质颜色
  transparent: true, // 开启透明
  opacity: 0.5, // 设置透明度
});
for (let i = 0; i < 10; i++) {
  const mesh = new THREE.Mesh(geometry, material); // 网格模型对象Mesh
  // 沿着x轴分布
  mesh.position.set(i * 100, 0, 0);
  scene.add(mesh); // 网格模型添加到场景中
}

双层 for 循环创建阵列模型

js
// 创建一个长方体几何对象Geometry
const geometry = new THREE.BoxGeometry(100, 100, 100);
// 材质对象Material
const material = new THREE.MeshLambertMaterial({
  color: 0x00ffff, // 设置材质颜色
  transparent: true, // 开启透明
  opacity: 0.5, // 设置透明度
});
for (let i = 0; i < 10; i++) {
  for (let j = 0; j < 10; j++) {
    const mesh = new THREE.Mesh(geometry, material); // 网格模型对象Mesh
    // 在XOZ平面上分布
    mesh.position.set(i * 100, 0, j * 100);
    scene.add(mesh); // 网格模型添加到场景中
  }
}

相机位置拉远,可以看到更大的观察范围

js
// camera.position.set(200, 200, 200);
camera.position.set(3000, 3000, 3000); 

超出视锥体远裁界面的范围的会被剪裁掉

超出视锥体远裁界面的范围的会被剪裁掉,可以调整相机 far 参数和修改相机位置避免。

js
// const camera = new THREE.PerspectiveCamera(30, width / height, 1, 3000);
const camera = new THREE.PerspectiveCamera(30, width / height, 1, 8000); 
// camera.position.set(200, 200, 200);
camera.position.set(2000, 2000, 2000);