三网格中的网格网格

时间:2015-12-23 19:51:46

标签: javascript 3d three.js

我目前正在使用three.js为项目制作一些3D模型。

我目前正在开发的模型包含一组基本几何图形,用于表示防御塔。

说得清楚,我有2个盒子,3个圆柱代表所说的塔。

箱:

var base = new THREE.Mesh(new THREE.BoxGeometry(7, 0.2, 7), new THREE.MeshPhongMaterial({color: 0xff000f}));
var head = new THREE.Mesh(new THREE.BoxGeometry(3, 1, 2.5), new THREE.MeshPhongMaterial({color: 0xaaffff}));

汽缸:

var body = new THREE.Mesh(new THREE.CylinderGeometry(0.5, 0.5, 5, 20), new THREE.MeshPhongMaterial({color: 0xffffff}));
var leftCannon = new THREE.Mesh(new THREE.CylinderGeometry(0.35, 0.35, 4, 20), new THREE.MeshPhongMaterial({color: 0xffffff}));
var rightCannon = new THREE.Mesh(new THREE.CylinderGeometry(0.35, 0.35, 4, 20), new THREE.MeshPhongMaterial({color: 0xffffff}));

请忽略这些材料'颜色,它们是附带条件。

最初的想法是将每个网格分别添加到场景中:

scene.add(base);
scene.add(body);
scene.add(head);
scene.add(leftCannon);
scene.add(rightCannon);

然而,我觉得有一种更好的方法可以做到这一点,至少有一种方法可以在不降低性能的情况下获得更多。

我正在考虑使用具有所有几何形状的容器,并将一个对象添加到场景而不是几个。

考虑到这一点,我希望每个单独的网格都有一个特定的材料(例如,大炮是金属的,底部是黑色的),我还想保持单独平移/旋转/缩放网格的能力(现在塔的头部随着鼠标拖动和WASD键移动。

1 个答案:

答案 0 :(得分:0)

创建THREE.Object3DTHREE.Group并将网格添加到该对象。将此对象添加到场景中。这将保留从单个部分转换和更改材料的选项。