用于将曲线合并为一个几何图形的正确图案?

时间:2018-02-24 07:58:33

标签: javascript three.js webgl

由于显而易见的性能原因,我已经将数千个稀疏排列的曲线(由CubicBezierCurve3制作)合并为一个几何体。

是否可以将它们全部送入单个THREE.Line而不连接互连段?或者使那些相互连接的线段不可见?

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

1 个答案:

答案 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();