Ich verwende Blender, um ein menschliches Modell zu erstellen, und ich habe zwei Modelle, von denen eines mit einer Liste von Scheitelpunktgruppen und eine andere Kopie des gleichen Modells mit einer anderen Gruppe von Scheitelpunktgruppen versehen ist. Ich frage mich, ob es überhaupt eine Kopie des gleichen Modells mit diesen beiden Gruppen von Vertexgruppen gibt. Oder eine Möglichkeit, die Scheitelpunktgruppen von einem Modell in ein anderes zu kopieren, ohne die bereits vorhandenen Scheitelpunktgruppen zu ersetzen.Wie Scheitelpunktgruppen von einem Objekt zu einem anderen hinzufügen, ohne sie zu ersetzen?
Antwort
Im Mixer ist ein Addon enthalten, das Vertex-Gewichte vom aktiven Objekt in die anderen ausgewählten Objekte kopieren kann. Wie Sie erwähnen, überschreibt das Addon vorhandene Scheitelgewichtungen mit übereinstimmenden Namen.
Indem ich den Code nehme, der die Kopie des Scheitelwerts aus dem Addon macht und eine kleine Anpassung vornimmt, so dass ein neuer Name für die Zielknotengruppe verwendet wird, wenn der Name bereits existiert, bekomme ich das folgende kleine Skript.
Fügen Sie es in Blenders text editor und klicken Sie auf Skript ausführen. Die Scheitelpunktgruppen in active object werden in andere ausgewählte Objekte kopiert.
import bpy
active = bpy.context.active_object
for ob in bpy.context.selected_objects:
me_source = active.data
me_target = ob.data
# sanity check: do source and target have the same amount of verts?
if len(me_source.vertices) != len(me_target.vertices):
print('ERROR: objects {} and {} have different vertex counts.'.format(active.name,ob.name))
continue
vgroups_IndexName = {}
for i in range(0, len(active.vertex_groups)):
groups = active.vertex_groups[i]
vgroups_IndexName[groups.index] = groups.name
data = {} # vert_indices, [(vgroup_index, weights)]
for v in me_source.vertices:
vg = v.groups
vi = v.index
if len(vg) > 0:
vgroup_collect = []
for i in range(0, len(vg)):
vgroup_collect.append((vg[i].group, vg[i].weight))
data[vi] = vgroup_collect
# write data to target
if ob != active:
# add missing vertex groups
for vgroup_idx, vgroup_name in vgroups_IndexName.items():
#check if group already exists...
already_present = 0
for i in range(0, len(ob.vertex_groups)):
if ob.vertex_groups[i].name == vgroup_name:
vgroup_name = vgroup_name+'_from_'+active.name
vgroups_IndexName[vgroup_idx] = vgroup_name
# ... if not, then add
if already_present == 0:
ob.vertex_groups.new(name=vgroup_name)
# write weights
for v in me_target.vertices:
for vi_source, vgroupIndex_weight in data.items():
if v.index == vi_source:
for i in range(0, len(vgroupIndex_weight)):
groupName = vgroups_IndexName[vgroupIndex_weight[i][0]]
groups = ob.vertex_groups
for vgs in range(0, len(groups)):
if groups[vgs].name == groupName:
groups[vgs].add((v.index,),
vgroupIndex_weight[i][1], "REPLACE")
Danke für Ihre Hilfe: D – NikhilSN
- 1. zu einem Objekt hinzufügen
- 2. Objekt von einem Prozess zu einem anderen übergeben
- 3. Wie Laufzeitabhängigkeit zu einem anderen Modul hinzufügen?
- 4. Hinzufügen von Objekteigenschaften zu einem JSON-Objekt
- 5. Hinzufügen von zwei Animationen zu einem Objekt [Zu einem Bild]
- 6. Schemanamen zu einem Objekt hinzufügen
- 7. zu einem Objekt Javascript hinzufügen
- 8. Hinzufügen von Änderungen von einem Mercurial-Repository zu einem anderen
- 9. Daten zu einem Objekt hinzufügen
- 10. JS Hinzufügen von Objekt zu einem Array
- 11. Hinzufügen von Mitgliedern zu einem bestehenden Objekt
- 12. Wie bewegen Sie HTML von einem Div zu einem anderen mit Jquery ohne Javascript zu brechen
- 13. Wie Javascript Eigenschaft zu einem Objekt hinzufügen?
- 14. Git: Code von einem Zweig zu einem anderen zu überschreiben
- 15. Mitglieder dynamisch zu einem dynamischen Objekt hinzufügen
- 16. JPA ManyToMany: Hinzufügen eines vorhandenen Objekts zu einem anderen Objekt
- 17. Werte von einem Array zu einem anderen hinzufügen
- 18. Kopieren einige Eigenschaften von einem Objekt zu einem anderen
- 19. Bedeutung zu Werten in einem Objekt hinzufügen
- 20. Bestehende Objekte zu einem anderen Objekt hinzufügen (Ruby on Rails)
- 21. Werte hinzufügen von einem anderen Array von Objekten zu einem Objekt
- 22. Prototyp erben von einem Objekt zu einem anderen
- 23. ASP.NET MVC übergeben Objekt von einem ActionResult zu einem anderen
- 24. Hinzufügen komplexer Kopfzeile von einem Word-Dokument zu einem anderen
- 25. Pandas: Zeile von einem Datenrahmen zu einem anderen Datenrahmen hinzufügen?
- 26. Übergang von einem ListFragment zu einem anderen
- 27. Hinzufügen von Objekten zu NSMutableArray von einem anderen NSMutableArray (iOS)
- 28. Eine private Referenz zu einem Objekt hinzufügen
- 29. Wie man Daten von einem anderen HTML zu einem anderen ohne PHP einbindet
- 30. Attribute dynamisch zu einem Ruby-Objekt hinzufügen
Tut [diese Hilfe] (http://blender.stackexchange.com/a/16273/935)? – sambler
Dies ersetzt die Scheitelpunktgruppe in einer mit denen in dem anderen Objekt ... Ich möchte an die vorhandenen Scheitelpunktgruppen anhängen oder hinzufügen – NikhilSN