首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bufferGeometry上的CSG操作

bufferGeometry上的CSG操作
EN

Stack Overflow用户
提问于 2015-12-29 14:23:19
回答 1查看 1.1K关注 0票数 4

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

执行多个csg操作的过程很慢,因为我使用光线投射来获得选定形状的形状,并执行CSG和预定义的形状(任何形状或几何图形)。

所以我的问题是:

  • 使用缓冲区几何会加速我的CSG,但这就是说,是否有任何库来对THREE.BufferGeometry实例执行CSG操作?
  • 有什么方法可以通过使用其他方法来加速这个过程吗?

这是我的代码流:

代码语言:javascript
复制
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示例中的这个例子

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-25 23:17:17

我没有用于性能比较的元素,但您可以在Wilt的ThreeCSG ThreeCSG开发开发分支中找到缓冲区几何库

它支持缓冲区几何(从示例中):

代码语言:javascript
复制
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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34512985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档