【问题标题】:Three.js Tubes not long enoughThree.js Tubes 不够长
【发布时间】:2017-12-27 07:44:29
【问题描述】:

我想用线段连接顶点。这就是我用简单的线条得到的。它工作正常。

let line2 = (from : Vector3, to : Vector3) : THREE.Line => {

    var lineGeometry = new THREE.BufferGeometry();

    var positions = new Float32Array( 3 * 2 );  

    positions[0]=to.x;
    positions[1]=to.y;
    positions[2]=to.z; 

    positions[3]=from.x;
    positions[4]=from.y;
    positions[5]=from.z; 

    lineGeometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );

    let lineMaterial = new THREE.LineBasicMaterial( { color: 0x0f35ff } ); 

    let line = new THREE.Line(lineGeometry, lineMaterial); 

    return line;

};  

但是当我切换到管子时出现问题,长度变短了。

管的代码,位置数据相同。

let tube = (from : Vector3, to : Vector3) : THREE.Mesh => {

    let path = new THREE.LineCurve3(to, from);  

    let tubeGeometry = new THREE.TubeGeometry( path, 32, 0.05, 8, true);

    let material = new THREE.MeshBasicMaterial({color:0x3212ac});  

    let mesh = new THREE.Mesh(tubeGeometry, material);

    return mesh;

};

【问题讨论】:

    标签: typescript three.js


    【解决方案1】:

    罪魁祸首似乎是管端的“关闭”,如果启用此三不再生成圆柱体的最终段(尝试将 false 作为最终参数传递给 TubeGeometry 构造函数以查看差异) .

    作为快速修复,在TubeBufferGeometry 源的generateBufferData() 方法中,尝试类似

    //generateSegment((closed === false) ? tubularSegments : 0);
    generateSegment(tubularSegments);
    if (closed === true)
        generateSegment(0);
    

    【讨论】:

      猜你喜欢
      • 2015-10-02
      • 1970-01-01
      • 2020-12-17
      • 2012-05-08
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      相关资源
      最近更新 更多