2017-07-21 1 views
1

頂点と線分を連結したい。これは私が単純な行で得たものです。それはうまく動作します。Three.jsチューブの長さが足りない

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; 

}; 

Lines ends closed in points as expected

しかし、私はチューブの問題に切り替えたときの長さが短くなり、発生します。

enter image description here

管用コード、データが同一で​​ある位置。

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; 

}; 

答えて

1

犯人はあなたがこれを有効にした場合THREEはもはや見ることTubeGeometryコンストラクタに最後のパラメータとしてfalseを渡してみてください(シリンダーの最終セグメントを生成し、チューブの端の「閉じる」であるように思いません差)。クイックフィックスとして

TubeBufferGeometryソースのgenerateBufferData()方法では、実際にこのようなケースだった

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

ような何かをしようとは、あなたに感謝 –

関連する問題