Python ile Nurbs Yoluna Hook Ekleme
Python komut dosyası
Komut dosyası yazarken Nurbs Yoluna bir kanca eklemek istiyorum
Düzende:
'Küp'ü sil Eğri Ekle -> Yolu Düzenleme Moduna değiştir bir Köşe seçin ctrl + h
her şey hazır ve tamam
Komut dosyası oluşturma:
# 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)
Bpy.data.objects ['_ Yol'] değiştiricileri [".... ID ...."]. Vertex_indices [0] 'ı ayarlama salt okunur.
Yola vertex_groups eklemeye çalışmak sadece 'None Type' döndürür
herhangi bir fikir ?
THX Martin
Yanıtlar
Mümkünse düzenleme modundan kaçının.
Bunun operatör olmadan API çağrıları aracılığıyla yapılabileceğini önerin. Lazilly ile boşları eklediniz, eğer istenirse başka nesneleriniz olduğu gibi ekleyin.
Test komut dosyası, poli'nizin her bir ucuna boş bir kanca ekler. Not, soru başlığına göre NURBS kullanmıştır. Uç noktalara sahip olmak için spline'ın use_endpoints_uve vözelliklerini ayarlayın .
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)
Lemon kendime cevap vermemi istedikten sonra:
Hackish yöntemim, bir eğri oluşturmak ve uç noktalarını kancalarla Mutant Bob'un yeniden yayınladığı iki küreye bağlamak için python kullanmaya dayanıyor.http://web.purplefrog.com/~thoth/blender/python-cookbook/hook-modifier-curve.html Bu saldırının arkasındaki Fikir, Düzenleme Moduna dönüşüyor gibi görünüyor
P0.select = True
olarak ayarlayın ve köşe_indices'i ayarlamak için bpy.ops.object.hook_assign (değiştirici = ...) kullanın
Bu 2014 yılında Blender 2.83'tür.
ilk hook_assign operatörü bir şekilde (bana sormayın - bu bir gözlemdir) P0.select = False'ı engeller
Yani:
nesne moduna geçtikten sonra -> orada bir şey seçme -> Yolu bir kez daha seçme -> tekrar düzenleme moduna geçme -> P0.select = False ayarla -> P1.select'i ayarlayın = Doğru -> operatörü kancayı ataması için çağırın - > Nesne Moduna geri dön
Ne kadar rezil bir şey bunu bulmak için saatler harcadı.