Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «НаписаниС скриптов для Blender 2.49Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 18

Автор Michel Anders

Π‘Ρ…Π΅ΠΌΠ° ΠΊΠΎΠ΄Π°: leftright.py

БхСматичСски ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠΌΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

1. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это - мСш ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ мСш-Π΄Π°Π½Π½Ρ‹Π΅.

3. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π²Π΅ Π½ΠΎΠ²Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏΡ‹ Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ -  Left ΠΈ Right.

4. Для всСх Π²Π΅Ρ€ΡˆΠΈΠ½ Π² мСшС:

1. ΠŸΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ вСс

2. Если x-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° > 0:

3. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΈ вСс Π² Π³Ρ€ΡƒΠΏΠΏΡƒ Π²Π΅Ρ€ΡˆΠΈΠ½ right

4. Если x-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° < 0:

5. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΈ вСс Π² Π³Ρ€ΡƒΠΏΠΏΡƒ Π²Π΅Ρ€ΡˆΠΈΠ½ left

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ новая Π³Ρ€ΡƒΠΏΠΏΠ° Π²Π΅Ρ€ΡˆΠΈΠ½ пуста, ΠΌΡ‹ провСряСм, сущСствуСт Π»ΠΈ ΡƒΠΆΠ΅ эта Π³Ρ€ΡƒΠΏΠΏΠ°, ΠΈ Π² этом случаС удаляСм ΠΈΠ· Π½Π΅Ρ‘ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° Π² ΠΊΠΎΠ΄Π΅:

def leftright(me,maximum=1.0):

   center=vec(0,0,0)

   left =[]

   right=[]

   for v in me.verts:

      weight = (v.co-center).length/maximum

      if v.co.x > 0.0 :

         right.append((v.index, weight))

      elif v.co.x > 0.0 :

         left.append((v.index, weight))

   return left,right  


if __name__ == "__main__":

   try:

      ob = Blender.Scene.GetCurrent().objects.active

      me = ob.getData(mesh=True)


      vgroups = me.getVertGroupNames()

      if 'Left' in vgroups:

         me.removeVertsFromGroup('Left')

      else:

         me.addVertGroup('Left')

      if 'Right' in vgroups:

         me.removeVertsFromGroup('Right')

      else:

         me.addVertGroup('Right')


      left,right = leftright(me,vec(ob.getSize()).length)


      for v,w in left:

         me.assignVertsToGroup('Left',[v],

                          w,Blender.Mesh.AssignModes.ADD)

      for v,w in right:

         me.assignVertsToGroup('Right',[v],w,

                          Blender.Mesh.AssignModes.ADD)


      Blender.Window.Redraw()


   except Exception as e:

      Blender.Draw.PupMenu('Error%t|'+str(e)[:80])


ΠŸΠΎΠ»Π½Ρ‹ΠΉ скрипт доступСн Π² Ρ„Π°ΠΉΠ»Π΅ leftright.py. Π€ΠΎΡ€ΠΌΡƒΠ»Π΅, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰Π΅ΠΉ вСс, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ объяснСниС: для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ вСс 1.0 Π² Ρ‚ΠΎΡ‡ΠΊΠ΅, Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΉ Π½Π° наибольшСм расстоянии ΠΎΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ расстояниСм. ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΏΠΎ всСм Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сначала ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ максимум, Π½ΠΎ здСсь ΠΌΡ‹ Ρ€Π΅ΡˆΠ°Π΅ΠΌ Π°ΠΏΠΏΡ€ΠΎΠΊΡΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот максимум ΠΊΠΎΡ€Π½Π΅ΠΌ ΠΎΡ‚ суммы ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Π­Ρ‚ΠΎ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ большС максимального расстояния, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ вСс, Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌΡ‹ΠΉ любой ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½, вСроятно, Π±ΡƒΠ΄Π΅Ρ‚ мСньшС Ρ‡Π΅ΠΌ 1.0. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° - Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС, Ρ‡Π΅ΠΌ расчСт Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ максимума для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… мСшСй. Π’Π°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ вычисляСм расстояниС Π΄ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π° (Ρ†Π΅Π½Ρ‚Ρ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ просмотра Π²Π΅Ρ€ΡˆΠΈΠ½ Π² мСшС - всСгда Π² (0, 0, 0)).

Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ†Π΅Π½Ρ‚Ρ€ мСша. (Π¦Π΅Π½Ρ‚Ρ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° отобраТаСтся ΠΊΠ°ΠΊ розовая Ρ‚ΠΎΡ‡ΠΊΠ° Π² Π‘Π»Π΅Π½Π΄Π΅Ρ€Π΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»Π΅ΠΆΠ°Ρ‚ΡŒ Π² срСднСй ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ всСх Π²Π΅Ρ€ΡˆΠΈΠ½, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ  Object | Transform | Center new.)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ вСс для мСша ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ Π½Π° это:



ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ - это инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ мСш Π½Π΅-Ρ€Π°Π·Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΠΌ способом, ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹: 3d-тСкст, ΠœΠ΅Ρ‚Π°Π±ΠΎΠ»Π»Ρ‹ ΠΈ ΠšΡ€ΠΈΠ²Ρ‹Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π­Ρ‚ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны ΠΊΠ°ΠΊ сСтки, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈΡ… Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Всё ΠΆΠ΅ Π½Π΅ всС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ связаны с этими ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ, эффСкты ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ постоянными, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² ΠΈΡ… (apply). Π‘Π»Π΅Π½Π΄Π΅Ρ€ обСспСчиваСт Ρ†Π΅Π»Ρ‹ΠΉ ряд ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΎΡ‚ subsurface Π΄ΠΎ всСх Π²ΠΈΠ΄ΠΎΠ² Π΄Π΅Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ². Π’Π°Π±Π»ΠΈΡ†Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ список доступных ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²:


ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ВлияниС Π³Ρ€ΡƒΠΏΠΏ Π²Π΅Ρ€ΡˆΠΈΠ½

displacement (смСщСниС) Π΄Π°

curve (кривая) Π΄Π°

explode (Π²Π·Ρ€Ρ‹Π²) Π΄Π°

lattice (Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠ°) Π΄Π°

mask (маскированиС) Π΄Π°

meshdeform (дСформация мСшСм) Π΄Π°

shrinkwrap (ΡƒΡΠ°ΠΆΠΈΠ²Π°ΡŽΡ‰Π°ΡΡΡ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°) Π΄Π°

simpledeform (простая дСформация) Π΄Π°

smooth (смягчСниС) Π΄Π°

wave (Π²ΠΎΠ»Π½Π°) Π΄Π°

array (массив) Π½Π΅Ρ‚

bevel (скос ΠΈΠ»ΠΈ фаска) Π½Π΅Ρ‚

boolean (объСдинСниС/пСрСсСчСниС/Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²) Π½Π΅Ρ‚

build (построСниС) Π½Π΅Ρ‚

cast (Π±Ρ€ΠΎΡΠ°Ρ‚ΡŒ) Π½Π΅Ρ‚

decimate (ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ количСства Π²Π΅Ρ€ΡˆΠΈΠ½) Π½Π΅Ρ‚

edgesplit (Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Ρ‘Π±Π΅Ρ€) Π½Π΅Ρ‚

mirror (Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎ) Π½Π΅Ρ‚

subsurface (ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ повСрхности) Π½Π΅Ρ‚

uvproject (UV-ΠΏΡ€ΠΎΠ΅Ρ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) Π½Π΅Ρ‚

Particle system (БистСма частиц) Π΄Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

На ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ Π²Π΅Ρ€ΡˆΠΈΠ½

armature (Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Π°) Π΄Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

ВлияниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ кости ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ СдинствСнной Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½


Много ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… влияниС  спСцифичной Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½, ΠΈ Π΅ΡΡ‚ΡŒ нСсколько ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ². БистСма частиц считаСтся ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ, хотя ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ систСмы частиц ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· свой собствСнный Π½Π°Π±ΠΎΡ€ инструмСнтов. Π’Π°ΠΊΠΆΠ΅, связь с Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ Π²Π΅Ρ€ΡˆΠΈΠ½ Ρƒ Π½Π΅Ρ‘ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС обратная: вмСсто ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ влияния Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π³Ρ€ΡƒΠΏΠΏΡ‹ Π²Π΅Ρ€ΡˆΠΈΠ½, вСса Π²Π΅Ρ€ΡˆΠΈΠ½ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° всС Ρ‚ΠΈΠΏΡ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² систСмы частицы, ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ эмиссии ΠΈ скорости частиц. ΠœΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ этого Π² сСкции ΠŸΠΎΠ»Ρ‘Ρ‚ искр.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Арматуры Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ спСцифичны, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ своС влияниС СдинствСнной Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ влияниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ кости Π½Π° ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π½ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ Π²Π΅Ρ€ΡˆΠΈΠ½, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Π² сСкции ΠšΠΎΡΡ‚ΠΈ.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния программиста Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅, список ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² являСтся свойством ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, НЕ мСша, Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ Π² Π΅Π³ΠΎ основС). ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ мСш, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹. Π­Ρ‚ΠΎΡ‚ список содСрТит ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², ΠΈ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ, Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π²Π²Π΅Ρ€Ρ… ΠΈΠ»ΠΈ Π²Π½ΠΈΠ· ΠΏΠΎ списку. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π²Π°ΠΆΠ΅Π½. НапримСр, ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° subsurface послС Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΌΡΡ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ получится ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΏΠ΅Ρ€Π΅Π΄ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ subsurface.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΈ имя (ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ прСдставлСнноС Ρ‚ΠΈΠΏΠΎΠΌ, Π½ΠΎ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСно Π²ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ подходящСС). Π’ΠΈΠΏ - ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚ΠΈΠΏΠΎΠ² Π² спискС констант Π² Modifier.Types. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ мноТСство настроСк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ Π² Modifier.Settings. НС всС настройки подходят для всСх Ρ‚ΠΈΠΏΠΎΠ².

Если Ρƒ нас Π±Ρ‹Π»ΠΎ Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, мСш-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Target (ЦСль) ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠ° (lattice) с ΠΈΠΌΠ΅Π½Π΅ΠΌ Deformer, ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Deformer ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠΈ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Target, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ кусок ΠΊΠΎΠ΄Π° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ эту Ρ†Π΅Π»ΡŒ:

import Blender

from Blender import Modifier

target  = Blender.Object.Get('Target')

deformer= Blender.Object.Get('Deformer')

mod = target.modifiers.append(Modifier.Types.LATTICE)

mod[Modifier.Settings.OBJECT] = deformer

target.makeDisplayList()

Blender.Window.RedrawAll()

Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Target ΠΈΠΌΠ΅Π» Π³Ρ€ΡƒΠΏΠΏΡƒ Π²Π΅Ρ€ΡˆΠΈΠ½ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Right, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½ Π² ΠΏΡ€Π°Π²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ влияниС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ VERTGROUP. Наш кусок ΠΊΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ строка Π²Ρ‹Π΄Π΅Π»Π΅Π½Π°):

import Blender

from Blender import Modifier

target  = Blender.Object.Get('Target')

deformer= Blender.Object.Get('Deformer')

mod = target.modifiers.append(Modifier.Types.LATTICE)

mod[Modifier.Settings.OBJECT] = deformer

mod[Modifier.Settings.VERTGROUP] = 'Right'

target.makeDisplayList()

Blender.Window.RedrawAll()




Π“Ρ€Π°Π²ΠΈΡ€ΠΎΠ²ΠΊΠ°

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ: Π΄Π°Π½ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ тСкст, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ этот тСкст Π² Π²ΠΈΠ΄Π΅ ΡƒΡ‚ΠΎΠΏΠ»Π΅Π½Π½Ρ‹Ρ… Π±ΠΎΡ€ΠΎΠ·Π΄ΠΎΠΊ Π½Π° повСрхности, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π²Ρ‹Π³Ρ€Π°Π²ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ просто, ΠΊΠ°ΠΊ каТСтся. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, достаточно просто ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ тСкстовый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этим тСкстом, ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ этот тСкстовый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² мСш. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π‘Π»Π΅Π½Π΄Π΅Ρ€Π° ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² мСню ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½ΠΎ ΠΊΠ°ΠΊ Π½ΠΈ странно, API Π‘Π»Π΅Π½Π΄Π΅Ρ€Π° Π½Π΅ прСдоставляСт эквиалСнтной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Π°ΠΊ, нашим ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π±Π°Ρ€ΡŒΠ΅Ρ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ тСкстового ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² мСш.

Вторая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ - ΠΊΠ°ΠΊ Π²Ρ‹Π΄Π°Π²ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈΠ»ΠΈ Ρ€Ρ‘Π±Π΅Ρ€ Π½Π° Π½ΡƒΠΆΠ½ΡƒΡŽ Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ ΠΎΡ‚ повСрхности. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, Π² API Π‘Π»Π΅Π½Π΄Π΅Ρ€Π° Π½Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для этого, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‘ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ инструмСнтов сами.

ПослСдняя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±ΠΎΠ»Π΅Π΅ тонкая. Если Π½Π°ΠΌ ΠΊΠ°ΠΊΠΈΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСсколько ΡƒΡ‚ΠΎΠΏΠ»Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π²ΠΎΠΊ, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ краями Ρ‡ΡƒΡ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ острыми, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ острых ΠΊΡ€Π°Ρ‘Π². Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ этого, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π² наш мСш. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° скоса bevel ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ острыС края, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ вСроятно, ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ subsurface ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΌΠ΅ΡˆΡƒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. Π—Π΄Π΅ΡΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ символами нашСго тСкста, вСсьма вСроятно, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ столкнёмся со мноТСством ΡƒΠ·ΠΊΠΈΡ… Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ². Π­Ρ‚ΠΈ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ испортят внСшний Π²ΠΈΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° нашСго ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° subsurface, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС: