Vertex Parented Leergut wird versetzt, nachdem Origin auf 3D-Cursor gesetzt hat?
Wie Sie auf diesem GIF sehen können, habe ich ein Netz, das aus einer Reihe von Eckpunkten besteht (unterteilt in ~ 15 Teile). Jeder Scheitelpunkt als leerer Scheitelpunkt.
Erst als ich den übergeordneten Teil beendet hatte, wurde mir klar, dass der Ursprung des übergeordneten Netzes nicht mehr auf dem 3D-Cursor lag (ja, dumm, ich weiß).
Wenn ich den Ursprung auf den 3D-Cursor bewege, folgt das Leergut nicht dem übergeordneten Netz, als ob die Scheitelpunkt-Elternschaft als "Keep Offset" -Erziehung fungiert.
Auf der übergeordneten Registerkarte eines leeren Felds kann ich kein Kontrollkästchen "Verbunden" finden (das ich auf alle Leergutvorgänge gleichzeitig hätte aktivieren und dann den Ursprung auf den 3D-Cursor verschieben können ...).
Irgendeine Idee ? : x
Antworten
Skript zu beheben
Führen Sie das folgende Skript aus, um die übergeordnete Beziehung direkt zum Scheitelpunkt herzustellen, sodass die Bearbeitung die Position widerspiegelt. Nullen Sie die Position des leeren und löschen Sie die übergeordnete Inverse.
Wenn Sie den Ursprung auf die Geometrie des Netzes einstellen, werden sowohl die Position als auch die übergeordnete Umkehrung des Leerguts geändert, was die Übersetzung des Ursprungsorts widerspiegelt. (Der (0.18, -0.06, -0.41)im Kommentar oben gezeigte Teil der Matrix).
Wählen Sie das Netzobjekt aus (aktivieren Sie es) und führen Sie das Skript aus.
import bpy
from mathutils import Matrix
from bpy import context
scene = context.scene
mesh_ob = context.object
empties = [e for e in scene.objects if e.parent == mesh_ob]
for e in empties:
e.matrix_parent_inverse = Matrix()
e.location = (0, 0, 0)
Das UI-Äquivalent wäre, alle Leergutarten auszuwählen, die AltGPosition zu AltPlöschen und die übergeordnete Inverse zu löschen.
Skript zum Hinzufügen von Leergut an jedem Scheitelpunkt
Da ich die Skripterstellung angesprochen habe, ist es meiner Meinung nach eine gute Idee, ein Skript einzufügen, um jedem Scheitelpunkt eines Netzobjekts Leergut hinzuzufügen.
Habe sie "Vert <i>" genannt, wobei i der Index des Vert ist, gegeben ihnen Kreisanzeige und 0,2 leere Skala.
import bpy
from bpy import context
ob = context.object
coll = context.collection
for v in ob.data.vertices:
mt = bpy.data.objects.new(
f"Vert{v.index}",
None,
)
mt.empty_display_type = 'CIRCLE'
mt.empty_display_size = 0.2
mt.parent = ob
mt.parent_type = 'VERTEX'
mt.parent_vertices = [v.index] * 3
coll.objects.link(mt)