gpt4 book ai didi

javascript - bufferGeometry 上的 CSG 操作

转载 作者:行者123 更新时间:2023-11-29 10:10:27 24 4
gpt4 key购买 nike

我目前正在使用 three.js 几何类来创建一个形状,然后对该形状执行多个 CSG 操作。从而不断重绘形状。

这个执行多个 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();
}

我正在使用 this CSG 操作和整体流程的库类似于 this example在 three.js 示例中。

最佳答案

我没有用于性能比较的元素,但是你可以在 ThreeCSG 的开发分支中找到一个 buffergeometry 库 ThreeCSG develop来自威尔特

它支持 buffergeometry(来自示例):

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

关于javascript - bufferGeometry 上的 CSG 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34512985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com