Gehe ich davon aus, dass das, was du meinst, ist, dass Sie wollen ein Objekt zu drehen um einen bestimmten Punkt innerhalb der geometrie.
Beispielsweise die cylinderGeometry dreht sich um es ist center. Angenommen, Sie möchten, es zu drehen, um seine Ende.
Was Sie tun müssen, ist übersetzen die Zylinder geometrie, nachdem es erstellt wird, so dass der gewünschte Punkt in der geometrie ist jetzt auch auf die Herkunft.
geometry.applyMatrix( new THREE.Matrix4().makeTranslation( 0, cylinderHeight/2, 0 ) );
Nun, wenn Sie drehen Sie den Zylinder, es dreht sich nun um sein Ende, als in der Mitte.
Ende, dass Sie sich dreht, wird auch bei der position, die Sie eingestellt haben für den Zylinder mesh.
Natürlich können Sie tun dies mit einer geometrie, nicht nur der Zylinder.
Vielen Dank, es funktioniert. aber im Fall von Rohr-geometrie, wie bringe ich die Achse Helfer an den Rand der Röhre oder in anderen Worten Achse Helfer an jedem segment zeigen, so dass Benutzer drehen kann, oder drehen Sie die Röhre ? Bitte haben Sie einen Blick auf meine andere Frage auf link- @WestLangley
Können Sie mir helfen, spin-Rohr-geometrie in einer solchen Weise ? Ich möchte spin bestimmten Teil der Rohr-geometrie. Wenn ich drehen, das ganze Rohr ist verdreht.
Sie müssen einen neuen Eintrag machen.
Ja, aber die Website akzeptiert keine neue Frage von meiner side.-@WestLangley
Was ist, wenn Sie tun es jeden frame? Es macht keinen Sinn zu übersetzen, die geometrie in diesem Fall. threejs.org/docs/#api/core/Geometry?
Anwendung einer transformation auf die geometrie selbst ist etwas, das man normalerweise nur einmal. Zu drehen, eine Masche jedes frame update der rotation oder quaternion Eigenschaft des Gewebes, statt.
Geben, um ein code-Beispiel für die obige Antwort von WestLangley:
//CYLINDER
var cyl_material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
var cyl_width = 1;
var cyl_height = 5;
//THREE.CylinderGeometry(bottomRadius, topRadius, height, segmentsRadius, segmentsHeight, openEnded )
var cylGeometry = new THREE.CylinderGeometry(cyl_width, cyl_width, cyl_height, 20, 1, false);
//translate the cylinder geometry so that the desired point within the geometry is now at the origin
cylGeometry.applyMatrix( new THREE.Matrix4().makeTranslation( 0, cyl_height/2, 0 ) );
var cylinder = new THREE.Mesh(cylGeometry, cyl_material);
scene.add( cylinder );
Nun die rotation funktioniert, um den Zylinder Herkunft:
Gehe ich davon aus, dass das, was du meinst, ist, dass Sie wollen ein Objekt zu drehen um einen bestimmten Punkt innerhalb der geometrie.
Beispielsweise die
cylinderGeometry
dreht sich um es ist center. Angenommen, Sie möchten, es zu drehen, um seine Ende.Was Sie tun müssen, ist übersetzen die Zylinder geometrie, nachdem es erstellt wird, so dass der gewünschte Punkt in der geometrie ist jetzt auch auf die Herkunft.
EDIT: jetzt können Sie dies tun, statt:
Nun, wenn Sie drehen Sie den Zylinder, es dreht sich nun um sein Ende, als in der Mitte.
Ende, dass Sie sich dreht, wird auch bei der position, die Sie eingestellt haben für den Zylinder mesh.
Natürlich können Sie tun dies mit einer geometrie, nicht nur der Zylinder.
rotation
oderquaternion
Eigenschaft des Gewebes, statt.Geben, um ein code-Beispiel für die obige Antwort von WestLangley:
Nun die rotation funktioniert, um den Zylinder Herkunft:
Hoffe, das hilft.