Objekt auf der Achse zwischen zwei Punkten drehen

Ich habe ein Objekt und zwei Punkte, um die ich das gesamte Objekt drehen muss. Ich habe zwei Leergut für die Rotationspunkte erstellt und muss es um eine Achse drehen, die durch die Linie zwischen den beiden Leergut gebildet wird. Ich habe versucht, Objektbeschränkungen ohne Erfolg hinzuzufügen. Im Bild unten muss ich das Dreieck um die Achse der roten Linie drehen.

Kommentare

  • Ähnlich wie bei einer anderen Frage. Sie können auf diese Weise versuchen .
  • Da ich diese Frage gestellt habe, hat Blender 2.8 dies als eine geeignete, leicht zugängliche Funktion eingeführt. Scrollen Sie nach unten, um die einfache Lösung zu finden. (‚ stimmen Sie alte Antworten übrigens nicht ab – sie sind nützlich für alle, die eine ältere Version von Blender verwenden.)

Antwort

In der 3D-Ansicht stehen verschiedene Transformationsausrichtungen zur Verfügung, die bestimmen, in welche Richtung sich ein Objekt entlang einer bestimmten Achse bewegt.

Geben Sie hier eine Bildbeschreibung ein.

Wenn diese Optionen nicht zur Aufgabe passen, können Sie eine benutzerdefinierte Ausrichtung definieren Diese Option ist in der Eigenschaftenseitenleiste N

verfügbar. Geben Sie hier die Bildbeschreibung ein.

Um es auszudrücken Wenn Sie ein Objekt hinzufügen und es um 23,6 Grad auf der z-Achse drehen und dann eine benutzerdefinierte Ausrichtung definieren, können Sie diese Ausrichtung verwenden, um ein anderes Objekt entlang derselben x- und y-Achse zu verschieben, zu drehen oder zu skalieren bei 23,6 Grad von der x- und y-Weltachse.

Um dies zu verwenden, wenn zwei Leergut vorhanden sind –

  1. Wählen Sie ein Emp ty und drücken Sie Shift S und wählen Sie Cursor to Selected.
  2. Fügen Sie eine Ebene hinzu und skalieren Sie auf der x-Achse auf Null ( S X 0 Geben Sie ein.
  3. Aktivieren Sie das Einrasten am Scheitelpunkt. Geben Sie die Bildbeschreibung ein hier im 3D-Header.
  4. Stellen Sie sicher, dass die Ansicht auf eine Voreinstellung (links, oben, vorne …) ausgerichtet ist, die direkt auf die beiden Leergut blickt, sodass der einzige Winkel zwischen dem Zwei ist der Winkel, den Sie definieren möchten. Wenn Sie eine Ausrichtung definieren möchten, die mehr als eine Achse ändert, können Sie den nächsten Schritt mehrmals aus drei Ansichten wiederholen, um die richtige Ausrichtung zu erzielen.
  5. Beginnen Sie mit dem Drehen der Ebene R und Bewegen Sie den Mauszeiger über das zweite leere Feld. Wenn ein Kreis um die Mitte des leeren Bereichs angezeigt wird und anzeigt, dass er einrastet, akzeptieren Sie die Drehung. Die Drehung der Ebene entspricht nun dem Winkel zwischen den beiden Leergut.
  6. Zeigen Sie die Seitenleiste mit den Eigenschaften an und suchen Sie das Bedienfeld „Ausrichtungen transformieren“. Erstellen Sie eine neue Ausrichtung, indem Sie auf das Bild klicken Beschreibung hier.

Die Ebene kann jetzt gelöscht werden und die neue Transformationsausrichtung kann verwendet werden, um andere Objekte entlang einer Achse zu bewegen oder zu drehen, die parallel zu einer Linie zwischen den beiden Leergut verläuft .

Wenn eine benutzerdefinierte Ausrichtung ausgewählt ist, werden die X X , Y Y und Z Z Verknüpfungen, die normalerweise zum Bewegen auf der lokalen Achse verwendet werden, verwenden die benutzerdefinierte Achse anstelle der lokalen Achse.

Antwort

Tatsächlich müssen die beiden Leergut nicht erstellt werden, wenn Sie nur eine imaginäre Achse bilden möchten. Ich denke, die relativ einfache und schnelle Operation hier wäre:

Wenn Sie im Bearbeitungsmodus :

  1. Wählen Sie alle Elemente aus, die Sie drehen möchten, halten Sie dann Shift gedrückt und klicken Sie zweimal auf diese Kante, um sie zu aktivieren.
  2. Alt . (Punkt), Shift Numpad 1 ;
  3. R Um zu drehen, wie Sie möchten, geben Sie ein. Fertig.

Geben Sie hier die Bildbeschreibung ein.


Wenn Sie in Objektmodus:

  1. Wählen Sie ein oder mehrere Objekte aus und stellen Sie sicher, dass das Zielobjekt zuletzt ausgewählt wurde. Wählen Sie die Zielkante im Modus Bearbeiten Sie den -Modus;
  2. Shift S Cursor auf Ausgewählt, . (Punkt), Umschalt Numpad 1 ;
  3. Zurück zu Objekt Modus, R zum Drehen, Enter . Fertig.

Geben Sie hier die Bildbeschreibung ein.

PS: Natürlich können Sie die Alt Leertaste drücken, um sie als Normales Koordinatensystem zur einfachen Beurteilung oder Strg Alt Leertaste zum Erstellen / Speichern einer neuen Transformationsorientierung basierend auf dieser für die weitere Verwendung, genau wie andere erwähnt haben. Ich möchte nur den schnellsten und genauesten Weg vorschlagen.

Kommentare

  • Für diejenigen, die ‚ nicht wissen, Alt+. ändert den Drehpunkt in das aktive Element. Sie können die anderen Pivot-Optionen im Menü direkt neben den Schattierungsoptionen sehen.

Antwort

Manueller Weg

Wählen Sie zuerst eines der Leergut aus und drücken Sie UMSCHALT + S Cursor to Selected. Geben Sie hier die Bildbeschreibung ein.

und dann MMB , um die Ansicht zu drehen, bis die beiden Leergutlinien ausgerichtet sind. Geben Sie hier die Bildbeschreibung ein.

Drücken Sie nun . (Punkt), um den Drehpunkt auf den 3D-Cursor zu setzen. Wählen Sie schließlich das Objekt aus und drücken Sie R , um es zu drehen.

Pythonic Way

Dieses Skript verwendet den Vektor zwischen den beiden Leergut und die Drehung um den 3D-Cursor .

import bpy from mathutils import Vector def main(): C = bpy.context D = bpy.data #rotation set to 90 degrees (rotation in radians) rotation = (6.283185/4) #Save objects by their presumed names empty0 = D.objects["Empty"] empty1 = D.objects["Empty.001"] object_to_rot = D.objects["Suzanne"] #################################################### #set pivot point to be one of the empties by temporarily placing cursor there #use of Vector() here is to avoid copying reference to cursor location old_cursor_loc = Vector(CursorAccess.getCursor()) CursorAccess.setCursor( empty0.location ) CursorAccess.findSpace().pivot_point = "CURSOR" #make object the active object C.scene.objects.active = object_to_rot #get axis we rotate around rotation_axis = empty1.location - empty0.location #override the rotate operator override = get_override("VIEW_3D", "WINDOW") bpy.ops.transform.rotate( override, value=rotation, axis=rotation_axis ) #restore old cursor position CursorAccess.setCursor( old_cursor_loc ) def get_override(area_type, region_type): """Returns a dictionary which can be used to override certain bpy operators""" for area in bpy.context.screen.areas: if area.type == area_type: for region in area.regions: if region.type == region_type: override = {"area": area, "region": region} return override #error message if the area or region wasn"t found raise RuntimeError("Wasn"t able to find", region_type," in area ", area_type, "\n Make sure it"s open while executing script.") class CursorAccess: """This code allows you to set and get the cursor location. It came from the addon Cursor Control http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/Cursor_Control""" @classmethod def findSpace(cls): area = None for area in bpy.data.window_managers[0].windows[0].screen.areas: if area.type == "VIEW_3D": break if area.type != "VIEW_3D": return None for space in area.spaces: if space.type == "VIEW_3D": break if space.type != "VIEW_3D": return None return space @classmethod def setCursor(cls,coordinates): spc = cls.findSpace() spc.cursor_location = coordinates @classmethod def getCursor(cls): spc = cls.findSpace() return spc.cursor_location if __name__=="__main__": main() 

Antwort

Sie können dies mit Mesh Align Plus (mein Addon). Sehen Sie sich entweder die Schritte im GIF an oder lesen Sie die folgende Textversion (ich habe das oben beschriebene Setup aufgezeichnet und dann einige allgemeinere Beispiele, falls Sie etwas Ähnliches tun möchten):

Geben Sie hier die Bildbeschreibung ein.

Die gesuchte Funktion ist die Schnellachse Drehen Sie den Operator im 3D-Ansicht Werkzeugbedienfeld (T)> Registerkarte „Netzausrichtung plus“ in einem eigenen Bedienfeld.

  1. Wählen Sie im Bearbeitungsmodus (Registerkarte) eine Zielachse aus, indem Sie mit Umschalt + Rechtsklick die beiden Kantenverts auswählen (lassen Sie sie ausgewählt und stellen Sie sicher, dass Auto Grab Source ist aktiviert, standardmäßig)

  2. Geben Sie den Winkel ein, um den für Amount gedreht werden soll, und geben Sie das Objekt an, das Sie anwenden möchten Drehen Sie auf Ausgewählt auf Anwenden auf: Objekt

Antwort

Wählen Sie im Bearbeitungsmodus eine Zielachse (Kante) aus.

Rasten Sie den 3D-Cursor an der ausgewählten Kante aus ( Shif t + S und klicken Sie auf Cursor auf Ausgewählt ).

Setzen Sie den 3D-Cursor als Drehpunkt ( Tastaturperiodenschaltfläche ).

Öffnen Sie das Regal Eigenschaften N und wechseln Sie zum Rollout Tranfsorm-Ausrichtung unten im Bedienfeld.

Klicken Sie auf die Schaltfläche „Plus“, um eine neue Transformationsausrichtung zu erstellen (oder drücken Sie Strg + Alt + Leertaste ).
Stellen Sie sicher, dass die erstellte Ausrichtung aktiv ist.

Jetzt können Sie um diese Kante drehen, indem Sie R und Y + Y drücken (entlang der lokalen Y-Achse dieser gegebenen Kante).

Antwort

Blender 2.8+

Dies ist in den letzten Blender-Versionen erheblich einfacher.

Videodemonstration

Wählen Sie im Bearbeitungsmodus Ihre beiden Punkte aus (in Vertex Select -Modus) oder Ihre Kante (im Edge Select -Modus).

Öffnen Sie das Popover Transform Orientation :

Orientierung transformieren

Klicken Sie dann auf Ausrichtung erstellen + “ Schaltfläche:

Ausrichtung erstellen

Dadurch wird eine benutzerdefinierte Transformationsausrichtung erstellt, die wahrscheinlich standardmäßig “ Edge “ für Sie heißt. Stellen Sie sicher, dass es ausgewählt ist, wenn Sie es verwenden möchten, oder wechseln Sie zum Standard Global , wenn Sie fertig sind. Sie können die benutzerdefinierte Transformationsausrichtung auch mit der “ X “ neben dem Namen:

Benutzerdefinierte Transformation

Wenn Ihre benutzerdefinierte Transformationsausrichtung aktiv ist, Sie können mit R Y entlang der Y-Achse drehen oder das Gizmo Drehen verwenden:

Gizmo drehen Verwendetes Gizmo drehen

Antwort

Ich mag die vorhandenen Antworten nicht. Zuerst werde ich Ihnen sagen, warum. Dann biete ich meine eigene Lösung an.

Erstens sind hierfür keine Addons erforderlich, und die Installation von Addons, wenn dies möglich ist, ist einfach nicht erforderlich.

Zweitens führt die Drehung um Drehpunkte zu einer seltsamen Interpolation, wenn sie in einer Animation verwendet wird. Der Grund dafür ist, dass es sich nicht um eine gerade Drehung handelt, sondern um eine Kombination aus Drehung und Verschiebung. Es gibt Zeiten, in denen es abhängig von den lokalen Achsen gut funktioniert, aber Zeiten, in denen es verwirrend falsch funktioniert.

Drittens kann die Drehung um beliebige Achsen bei Verwendung von Euler-Winkeln auch zu einer seltsamen Interpolation führen (und das Fehlen von Knochen in Ihren Bildern lässt darauf schließen, dass Sie Euler-Winkel für Ihre Transformationen verwenden.) Das Drehen um beliebige Achsen bei Verwendung von Euler-Winkeln kann ebenfalls zu verwirrender Verrücktheit führen – am besten demonstriert durch “ rubiks Würfel “ Animationen.

Also, was ist die Lösung, die ich befürworten würde? Grundsätzlich das, womit Sie begonnen haben, aber nicht ganz fertig werden konnten: ein Paar Leergut und Einschränkungen. Beginnen Sie mit dem Paar Leergut, das Sie haben, eines an jedem Punkt, der Ihre Achse definiert. Noch ist nichts übergeordnet. Geben Sie als Nächstes einem Leeren ein gedämpftes Verfolgen Sie das Objekt, das Sie drehen möchten, übergeordnet. Schließlich übergeordnet Sie das Objekt, das Sie drehen möchten, auf das eingeschränkte leere Objekt. Um das Objekt zu drehen, drehen Sie das übergeordnete Objekt auf seiner lokalen Y-Achse leer Achsen und möglicherweise Übersetzung / Skalierung; möglicherweise möchten Sie auch Deltas dafür festlegen.)

Dies erfordert keine Addons, die nur Standard-Blender-Werkzeuge verwenden, und bietet Ihnen eine gute Interpolation, unabhängig vom Transformationsmodus und den Achsen, weil Ihre gesamte Rotation befindet sich in einer lokalen Achse Ihres leeren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.