bufferGeometry上的CSG操作
CSG operations on bufferGeometry
我目前正在使用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();
}
我使用这个库进行CSG操作,总体流程与三个.js示例中的这个示例类似。
我没有性能比较的元素,但你可以在ThreeCSG ThreeCSG的开发分支中找到一个从Wilt 开发的缓冲池库
它支持缓冲测量(来自示例):
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 一起工作
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 如何确定javascript已经完成了某些操作.ios上的
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 从JavaScript访问struts操作中的属性
- fluxxor向一个flux实例添加一组以上的操作
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 操作放置在画布上的元素之间的连接
- 使用“+="操作人员
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- Jquery未定义函数正在停止其他操作
- 如何操作iframe之外的元素
- javascript对象操作:根据指定条件选择属性
- jQuery:暂停按钮可以暂停所有其他操作
- 用于选择/文本框操作的JavaScript
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- 通过javascript操作图像,非常简单
- 带有STLLoader的CSG操作
- bufferGeometry上的CSG操作
- 如何在csg操作后保持原始颜色(使用ThreeCSG.js)