Three.js 模型切割:交集并集查集计算(ThreeBSP)

ThreeBSP.js功能概述

注:若geometry为BufferGeometry无效;

直接上代码:

$("#threeBSP_intersect").click(function () {
   
//生成ThreeBSP对象
    var sphereBSP = new ThreeBSP(sphere);
    var
cubeBSP = new ThreeBSP(cube);
   
//进行交集计算
    var resultBSP = sphereBSP.intersect(cubeBSP);
   
//BSP对象内获取到处理完后的mesh模型数据
    var result = resultBSP.toMesh();
   
//更新模型的面和顶点的数据
    result.geometry.computeFaceNormals();
   
result.geometry.computeVertexNormals();
   
//重新赋值一个纹理
    var material = new THREE.MeshBasicMaterial({color: 0xCC00FF});
   
result.material = material;
   
result.position.x=-3;
   
scene.add(result);
})
$("#threeBSP_subract").click(function () {
   
//生成ThreeBSP对象
    var sphereBSP = new ThreeBSP(sphere);
    var
cubeBSP = new ThreeBSP(cube);
   
//进行并集计算
    var resultBSP = cubeBSP.subtract(sphereBSP);
   
//BSP对象内获取到处理完后的mesh模型数据
    var result = resultBSP.toMesh();
   
//更新模型的面和顶点的数据
    result.geometry.computeFaceNormals();
   
result.geometry.computeVertexNormals();
   
//重新赋值一个纹理
    var material = new THREE.MeshBasicMaterial({color: 0xCC00FF});
   
result.material = material;
   
result.position.x=3;
   
scene.add(result);
})
$("#threeBSP_union").click(function () {
   
//生成ThreeBSP对象
    var sphereBSP = new ThreeBSP(sphere);
    var
cubeBSP = new ThreeBSP(cube);
   
//进行并集计算
    var resultBSP = sphereBSP.union(cubeBSP);
   
//BSP对象内获取到处理完后的mesh模型数据
    var result = resultBSP.toMesh();
   
//更新模型的面和顶点的数据
    result.geometry.computeFaceNormals();
   
result.geometry.computeVertexNormals();
   
//重新赋值一个纹理
    var material = new THREE.MeshBasicMaterial({color: 0xCC00FF});
   
result.material = material;
   
result.position.x=0;
   
scene.add(result);
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值