2012-09-10 17 views
5

Ich versuche, eine Röhre und die Fähigkeit zu schaffen, mit dieser Röhre interagieren wie Maus ziehen, um den Startpunkt/Endpunkt der Röhre zu ändern .Für, dass ich direkt Vertices Position Werte ändern und Ich möchte Objekt in der Szene aktualisierenThree.js Aktualisierung Mesh von TubeGeometry Objekt

Allerdings habe ich ein Problem mit dem Rohr Objekt, das ich benutze: Wenn ich die Pfadpunkte aktualisieren das Netzobjekt nicht auf dem Bildschirm aktualisiert, so scheint es Ich kann es nicht ändern, nachdem es erstellt wurde.

Mein 3D Objekterstellung ist in etwa wie folgt aus:

var curve = new THREE.SplineCurve3([new THREE.Vector3(x, y, z), new THREE.Vector3(x2, y2, z2)]); 
var geometry = new THREE.TubeGeometry(curve, segments, 2, radiusSegments, closed); 
geometry.dynamic = true; 
var tubeMesh = THREE.SceneUtils.createMultiMaterialObject(geometry, [new THREE.MeshBasicMaterial({color: 0xffffff, opacity: 1, transparent: true})]); 
scene.add(tubeMesh);  

Und wenn ich die Punkte aktualisieren möchten. Ich mache es so:

tubeMesh.children[0].geometry.path.points[0] = new THREE.Vector3(x4, y4, z4)); 
tubeMesh.children[0].geometry.path.points[1] = new THREE.Vector3(x3, y3, z3)); 
tubeMesh.children[0].geometry.verticesNeedUpdate = true; 

Wenn ich jedoch Änderungen mache, scheint das Objekt nicht auf dem Bildschirm zu aktualisieren. Kann man das mit einer Tube machen?

Antwort

5

Sie haben zur Verfügung gestellt nur Code-Fragmente, aber Sie müssen wahrscheinlich

geometry.verticesNeedUpdate = true; 

und

geometry.dynamic = true; 

Sie können mehr Details und Beispiele in der Three.js Wiki über finden, wie die Dinge zu aktualisieren mit WebGLRenderer .

https://github.com/mrdoob/three.js/wiki/Updates

+0

habe ich diesen Artikel zu lesen, bevor und in meinem Code, den Sie oben erwähnt auch den Code enthalten. Es scheint, dass VerticeNeedUpdate nur angewendet wurde, wenn die Vertices-Eigenschaft geändert wurde. Während hier ändere ich die Pfadeigenschaft des Geo. Die Jungs hier haben das gleiche Problem wie ich https://github.com/mrdoob/three.js/issues/1965 – user1533481

+0

Wie wäre es mit der Schaffung einer einfachen jsfiddle? – WestLangley

+0

Ich habe eine hier erstellt: http://jsfiddle.net/drsagitn/dC5KA/2/. Die Punkte werden auf mouseup Ereignis aktualisiert. Vielen Dank. – user1533481

Verwandte Themen