2016-08-08 32 views
0

Ich habe eine flache THREE.TubeGeometry mit radiusSegments erstellt = 2 ist, die, wenn sie zu der Szene auf den Boden senkrecht hinzugefügt:Wie kann man THREE.TubeGeometry Segmente drehen?

enter image description here

Ist es möglich, jedes Rohrsegment zu drehen, so dass sie sein würde, parallel zum Boden?

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

Bin ich blind oder hast du nicht wirklich eine TubeGeometry auf dem Bild? – Hasan

+0

@Zagoda TubeGeometry mit RadiusSegments = 2 sieht wie ein Band aus. –

+0

Woher bekommen Sie die Scheitelpunkte? – juagicre

Antwort

1

für Sie Meine Empfehlung ist, eine benutzerdefinierte flache Geometrie (nicht die TubeGeometry!) Zu verwenden, und berechnen die Ecken, wo man sie sein wollen (nicht drehen!).

Methodik Ihre Geometrie zu bekommen, ist so etwas wie:

  1. zufällige Punkte erstellen (hier einige Mathematik, um sie zu haben benötigt wird, wo Sie sie haben wollen, aber das ist der lustige Teil!)
  2. Get Splinepunkte aus jeder Kurve
  3. Triangulate über sie

Wenn Sie nach vorne mit dem Code hier der Änderung gehen zu entscheiden, um es parallel zur Ebene zu haben. Add to generateTube Funktion, nach der tubeMesh Erstellung:

tubeMesh.rotateY(Math.PI/2);