three.js网格组合—使用threeBSP库

为了实现更多模型的样式,可以使用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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值