2016-08-08 4 views
0

私はシーンに追加するとき地面に対して垂直であるradiusSegments = 2、とフラットTHREE.TubeGeometryを作成しました地面と平行か?THREE.TubeGeometryセグメントをどのように回転させるのですか?</p> <p><a href="https://i.stack.imgur.com/U3qTt.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/U3qTt.png" alt="enter image description here"></a></p> <p>彼らがなるように、各チューブセグメントを回転させることができる:

JSFiddle example.

var points = []; 
for (var i = 0; i < 5; i++) { 
    var randomY = i*5/2*10 + -50; 
    var randomX = 15*Math.sin(5*i); 
    points.push(new THREE.Vector3(randomX, randomY, 0)); 
} 
var tubeGeometry = new THREE.TubeGeometry(new THREE.SplineCurve3(points), 64, 6, 2, false); 
tubeMesh = createMesh(tubeGeometry); 
scene.add(tubeMesh); 
+0

は私が盲目またはあなたが本当に絵にTubeGeometryを持っていないのですか? – Hasan

+0

@ Zagoda radiusSegments = 2のTubeGeometryはリボンのように見えます。 –

+0

どこから頂点を得ますか? – juagicre

答えて

1

あなたのための私の推薦は、カスタムフラット形状(ないTubeGeometryを!)を使用すると、あなたがそれらになりたい頂点を計算することである(回転しないように!)。

  1. (ここではいくつかの数学は、あなたがそれらになりたい場所にそれらを持っているために必要とされているが、これは面白い部分です!)ランダムポイントを作成し
  2. :あなたのジオメトリを取得する

    方法論のようなものですあなたがここにあなたのコード、それは平面に平行持って変更を進めることにした場合

彼らの上に、各曲線

  • 三角測量からスプラインのポイントを取得します。 tubeMesh作成後、generateTube機能に追加:

    tubeMesh.rotateY(Math.PI/2); 
    
  • 関連する問題

     関連する問題