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);
})