我目前正在使用three.js几何类来创建一个形状,然后对该形状执行多个CSG操作。因此,不断地重新绘制形状。
执行多个csg操作的过程很慢,因为我使用光线投射来获得选定形状的形状,并执行CSG和预定义的形状(任何形状或几何图形)。
所以我的问题是:
THREE.BufferGeometry实例执行CSG操作?这是我的代码流:
var objects = [];
init();
render();
function init(){
//scene and camera setup ... etc
var sphere = new THREE.SphereGeometry(200, 32, 32);
objects.push(sphere);
// raycasting config
// bind mouse click and move event
}
function onMouseDown() {
var intersects = raycaster.intersectObjects(objects);
.....
// get intersected shape ..
// perfrom csg with predifend shape .
// Also contains steps to convert
geometry to *CSG libaray geometry*
and back to Three.js geometry)..
// replace the shape with existing
.....
render();
}我使用这库进行CSG操作,总体流程类似于three.js示例中的这个例子。
发布于 2016-03-25 23:17:17
我没有用于性能比较的元素,但您可以在Wilt的ThreeCSG ThreeCSG开发开发分支中找到缓冲区几何库
它支持缓冲区几何(从示例中):
var nonIndexedBoxMesh = new THREE.Mesh( nonIndexedBufferGeometry, material );
var bsp1 = new ThreeBSP( nonIndexedBoxMesh );
var indexedBoxMesh = new THREE.Mesh( indexedBufferGeometry, material );
var bsp2 = new ThreeBSP( indexedBoxMesh );
var geometry = bsp1.subtract( bsp2 ).toBufferGeometry();
var mesh = new THREE.Mesh( geometry, material );它适用于r75
https://stackoverflow.com/questions/34512985
复制相似问题