Three.js 三维模型阵列

发布于 2021-11-30 13:17:33 字数 1872 浏览 1381 评论 0

three.js 并没有提供几何体或网格模型阵列的 API,不过可以通过 for 循环结构自定义。

直线阵列

沿着 x 轴方向绘制 10 个立方体,立方体几何中心的距离是 15

/**
 * 阵列立方体网格模型
 */
var box=new THREE.BoxGeometry(10,10,10);//创建一个立方体几何对象
var material=new THREE.MeshLambertMaterial({color:0x0000ff});//材质对象
for(var x = 0;x<10;x++){//10表示立方体数量
  var mesh=new THREE.Mesh(box,material);//网格模型对象
  mesh.position.set(x*15,0,0);//立方体间距15(阵列距离)
  scene.add(mesh);//网格模型添加到场景中
}

整体平移立方体

创建好所有立方体网格模型后,如果你希望整体进行平移操作,不可能一个一个执行平移操作,这时候可以利用 Object3D 对象对网格模型进行分组。Object3D 对象和场景对象 Scene 一样具有 add 方法,通过该方法可以把网格模型进行归类分组,如果你使用过任何三维模型软件,应该都有装配体或组的概念,几个三维模型是一组,Object3D 对象支持嵌套,你也可以把 Object3D 对象进行再次归类,就像一辆汽车一样,有部件、组件、零件分不同层级组成一个树状结构。

/**
 * 阵列立方体网格模型
 */
var box=new THREE.BoxGeometry(10,10,10);//创建一个立方体几何对象
var material=new THREE.MeshLambertMaterial({color:0x0000ff});//材质对象
var object = new THREE.Object3D();//创建Object3D对象
for(var x = 0;x<10;x++){//10表示立方体数量
  var mesh=new THREE.Mesh(box,material);//网格模型对象
  mesh.position.set(x*15,0,0);//立方体间距15(阵列距离)
  object.add(mesh);//网格模型添加到Object3D对象中
}
object.translateX(-70);//平移所有网格模型
scene.add(object);//网格模型添加到场景中

平面阵列

沿着 x 轴、y 轴两个方向进行阵列,产生一个 10X10 的方阵。

for(var y = 0;y<10;y++){//10表示y方向立方体数量
  for(var x = 0;x<10;x++){//10表示x方向立方体数量
    var mesh=new THREE.Mesh(box,material);//网格模型对象
    mesh.position.set(x*15,y*15,0);//立方体间距15(阵列距离)
    object.add(mesh);//网格模型添加到场景中
  }
}

三维阵列

沿着 x 轴、y 轴、z 轴三个方向进行阵列,产生一个 10x10x10 的方阵。

for(var z = 0;z<10;z++){//10表示z方向立方体数量
  for(var y = 0;y<10;y++){//10表示y方向立方体数量
    for(var x = 0;x<10;x++){//10表示x方向立方体数量
      var mesh=new THREE.Mesh(box,material);//网格模型对象
      mesh.position.set(x*15,y*15,z*15);//立方体间距15(阵列距离)
      object.add(mesh);//网格模型添加到场景中
    }
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

偏爱自由

暂无简介

0 文章
0 评论
21388 人气
更多

推荐作者

qq_Yqvrrd

文章 0 评论 0

2503248646

文章 0 评论 0

浮生未歇

文章 0 评论 0

养猫人

文章 0 评论 0

第七度阳光i

文章 0 评论 0

新雨望断虹

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文