由于显而易见的性能原因,我已经将数千个稀疏排列的曲线(由CubicBezierCurve3制作)合并为一个几何体。
是否可以将它们全部送入单个THREE.Line而不连接互连段?或者使那些相互连接的线段不可见?
LinePieces / LineSegments(线条)可以工作,但它会使顶点的数量加倍并且看起来不是正确的方法..
答案 0 :(得分:0)
所以是的,你实际上可以发送NaN来指示OpenGL跳转。然后给三个j.一个虚假的空边界球(或做一个正确的if计算)。伪造的边界球将破坏正常的计算,这在我的使用中无关紧要,但可能在其他人的情况下。这是伪代码解决方案:
var positions = [];
for(....)
{
...
var pts = curve.getPoints(...);
for(var p = 0; p < pts.length; p++)
positions.push(pts[p].x, pts[p].y, pts[p].z);
positions.push(NaN, NaN, NaN);
}
var geometry = new THREE.BufferGeometry();
geometry.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array(positions), 3, true ) );
geometry.boundingSphere = new THREE.Sphere();