Python ile Nurbs Yoluna Hook Ekleme

Sep 13 2020

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

2 batFINGER Oct 15 2020 at 12:04

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)
1 martburg Sep 13 2020 at 19:08

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ı.