Aggiunta di un hook a un percorso Nurbs con Python
Scripting Python
Vorrei aggiungere un hook a un Nurbs Path durante lo script
Nel layout:
elimina "Cubo" Aggiungi curva -> Cambia percorso in modalità Modifica seleziona un vertice ctrl + h
tutto pronto e fatto
Scripting:
# Add Path
coords_list = ([[0,0,0], [1,0,0]])
path = bpy.data.curves.new('_path', 'CURVE')
path.dimensions = "3D"
spline = path.splines.new(type='POLY')
spline.points.add(len(coords_list)-1)
for p, new_co in zip(spline.points, coords_list):
p.co = (new_co + [1.0]) # (add nurbs weight)
Path = bpy.data.objects.new('_Path', path)
bpy.context.scene.collection.objects.link(Path)
L'impostazione di bpy.data.objects ['_ Path']. Modifers [".... ID ...."]. Vertex_indices [0] è di sola lettura.
Il tentativo di aggiungere vertex_groups al percorso restituisce solo un 'Nessuno tipo'
qualche idea ?
THX Martin
Risposte
Evita la modalità di modifica se puoi.
Suggerisci che questo possa essere fatto tramite chiamate API senza operatori. Hai aggiunto brasiliano i vuoti con l'op, aggiungili come hai altri oggetti se lo desideri.
Lo script di test aggiunge un hook vuoto a ciascuna estremità del tuo poly. Nota hanno utilizzato NURBS come da titolo della domanda. Per fare in modo che i punti finali impostino le proprietà use_endpoints_ue vdella spline.
import bpy
from bpy import context
# Add Path
coords_list = ([[0,0,0], [1,0,0]])
path = bpy.data.curves.new('_path', 'CURVE')
path.dimensions = "3D"
spline = path.splines.new(type='NURBS')
spline.points.add(len(coords_list)-1)
spline.use_endpoint_u = True
spline.use_endpoint_v = True
path_ob = bpy.data.objects.new('_Path', path)
for i, (p, new_co) in enumerate(
zip(spline.points, coords_list)
):
p.co = (new_co + [1.0]) # (add nurbs weight)
bpy.ops.object.empty_add(
location=new_co,
)
hm = path_ob.modifiers.new(
name=f"Hook{i}",
type='HOOK',
)
hm.object = context.object
hm.vertex_indices_set([i])
context.collection.objects.link(path_ob)
Dopo che il limone mi ha spinto a rispondere a me stesso:
Il mio modo hacker è basato sull'utilizzo di Python per creare una curva e collegare i suoi punti finali con ganci a due sfere in cui Mutant Bob sta ripubblicandohttp://web.purplefrog.com/~thoth/blender/python-cookbook/hook-modifier-curve.html L'idea alla base di questo hack sembra cambiare in modalità di modifica
imposta P0.select = True e usa
bpy.ops.object.hook_assign (modifier = ...) per impostare vertex_indices
Questo era il 2014 in Blender 2.83
il primo operatore hook_assign in qualche modo (non chiedermelo - è un'osservazione) blocca P0.select = False
Così:
dopo essere passati alla modalità oggetto -> selezionando qualcosa lì -> selezionando ancora una volta il percorso -> passando di nuovo alla modalità di modifica -> imposta P0.select = False -> imposta P1.select = True -> chiama l'operatore per assegnare il gancio - > torna alla modalità oggetto
Che disgrazia impiegare alcune ore per inventare questo.