为了实现更多模型的样式,可以使用threeBSP库中的三种函数对现有网格模型进行组合。
1.相关函数
intersect(交集):使用该函数可以基于两个现有几何体的重合的部分定义此几何体的形状。
union(并集):使用该函数可以将两个几何体联合起来创建出一个新的几何体。
substract(差集):使用该函数可以在第一个几何体中移除两个几何体重叠的部分来创建新的几何体。
2.具体用法
1、使用script标签引入threeBSP库
<script src="../js/ThreeBSP.js"></script>
2、创建两个基础模型到场景
//创建球形几何体
var sphereGeometry = new THREE.SphereGeometry(50, 20, 20);
var sphere = createMesh(sphereGeometry);
//创建立方体几何体
var cubeGeometry = new THREE.BoxGeometry(30, 30, 30);
var cube = createMesh(cubeGeometry);
cube.position.x = -50;
//将两个几何体添加到场景中
scene.add(sphere);
scene.add(cube);
3、生成threeBSP对象
var sphereBSP = new ThreeBSP(sphere);
var cubeBSP = new ThreeBSP(cube);
4、进行计算
//进行并集计算
var resultBSP = sphereBSP.union(cubeBSP);
//进行交集计算
var resultBSP = sphereBSP.intersect(cubeBSP);
//进行差集计算
var resultBSP = sphereBSP.substract(cubeBSP);
5、从BSP对象内获取到处理完后的mesh模型数据
var result=resultBSP.toMesh();
6、更新模型的面和顶点的数据
result.geometry.computeFaceNormals();
result.geometry.computeVertexNormals();
7、重新赋值一个纹理
var material=new THREE.MeshPhongMaterial({color:0x00ffff});
result.material=material;
8、将计算出来的模型添加到场景中
scene.add(result);