将曲线合并为一个几何体的正确模式?

Proper pattern for merging curved lines into one geometry?

出于明显的性能原因,我将数千条稀疏排列的曲线(使用 CubicBezierCurve3 制作)合并到一个几何体中。

是否可以将它们全部放入一个 THREE.Line 而没有相互连接的段?或者让那些相互连接的线段不可见?

LinePieces/LineSegments(线带)可以工作,但它会使顶点数量加倍,而且看起来不是正确的方法..

所以是的,您实际上可以发送 NaN 来指示 OpenGL 跳转。然后给 three.js 一个伪造的空边界球体(或者对 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();