在我的程序中,我将点添加到粒子系统,然后计算它的边界框:
var object = new THREE.Mesh(geometry, new THREE.MeshBasicMaterial(0xff0000));
var box = new THREE.BoxHelper( object, 0xffff00 );
scene.add(box);
geometry是BufferGeometry的实例,它包含构成粒子系统的所有点。
我看到的是边界框错误对齐。它的方向垂直于预期的方向。
所以我希望线框结构能够包围点云。
我需要在这里做些额外的事吗?
编辑:
我正在处理的代码是在github repo中: github file
在函数ParticleSystemBatcher.prototype.push中,从文件读取的点被推入粒子系统。我在此函数末尾添加了上面的代码。边界框确实出现,但是对齐错误。
答案 0 :(得分:1)
你有一个THREE.ShaderMaterial
,它可以应用一些逻辑来定位这些顶点。因此,渲染的结果与存储在主存储器中的结果不同。
您可以通过制作Mesh
或精灵来调试此项,并将每个您期望系统中的粒子定位到仅使用场景图(object.position.set()
)的位置。结果将是一堆与粒子系统不在同一空间的点。这些也适合边界框。
解决方案是应用着色器应用的相同转换。