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

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

Автор Michel Anders

scn = Blender.Scene.GetCurrent()

arm = scn.objects.active

if arm.getType()!='Armature':

   Blender.Draw.PupMenu("Selected object is not an " +

                        "Armature%t|Ok")

else:

   adata = arm.getData()

Π—Π°Ρ‚Π΅ΠΌ, ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Ρƒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΈ убСТдаСмся, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ кости Π·Π°Π΄Π°Π½Π° опция HINGE (Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ). ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ списка ΠΎΠΏΡ†ΠΈΠΉ Π² мноТСство (set) ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² список послС добавлСния ΠΎΠΏΡ†ΠΈΠΉ HINGE являСтся способом ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ эта опция появится Π² спискС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

   adata.makeEditable()

   for ebone in adata.bones.values():

      ebone.options =

        list(set(ebone.options)|

             set([Blender.Armature.HINGE]))

   adata.update()

Поза связана с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Ρ‹, Π° Π½Π΅ со своими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΅Ρ‘ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° arm, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ getPose(). ΠŸΠΎΠ·Ρ‹ кости ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ IPO, Π½ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ связаны с дСйствиСм (action), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅Ρ‚ эти ΠΏΠΎΠ·Ρ‹. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π‘Π»Π΅Π½Π΄Π΅Ρ€ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ дСйствиС создаётся автоматичСски, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΡ‹ вставим ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΊΠ°Π΄Ρ€ Π² ΠΏΠΎΠ·Ρƒ, Π½ΠΎ Π² скриптС ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ явно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ дСйствиС, Ссли ΠΎΠ½ΠΎ Π΅Ρ‰Ρ‘ Π½Π΅ присутствуСт (Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ):

   pose = arm.getPose()

   action = arm.getAction()

   if not action:

      action = Blender.Armature.NLA.NewAction()

      action.setActive(arm)

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ кости ΠŸΠΎΠ·Ρ‹ Π² порядкС Ρ†Π΅ΠΏΠΈ ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½Π°ΡˆΡƒ Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Всё, Ρ‡Ρ‚ΠΎ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ шкалС Ρ‡Π΅Ρ€Π΅Π· Π΄Π΅ΡΡΡ‚ΡŒ ΠΊΠ°Π΄Ρ€ΠΎΠ² Π·Π° 1 шаг ΠΈ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ для ΠΌΠ°ΡΡˆΡ‚Π°Π±Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ кости Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС, увСличивая ΠΌΠ°ΡΡˆΡ‚Π°Π±, Ссли Π½ΠΎΠΌΠ΅Ρ€ кости Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ соотвСтствуСт Π½Π°ΡˆΠ΅ΠΌΡƒ ΡˆΠ°Π³Ρƒ ΠΈ восстанавливая Π΅Π³ΠΎ, Ссли Π½Π΅Ρ‚. Одна ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΊΡ€ΠΈΠ²Ρ‹Ρ… IPO ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ нашСй ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ установкой Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° HINGE Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ кости, ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈ распространСниС ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π½Π° Π΄Π΅Ρ‚Π΅ΠΉ кости:

   bones = sort_by_parent(pose.bones.values())


   for frame in range(1,161,10):

      index = int(frame/21)-1

      n = len(bones)

      for i,bone in enumerate(bones):

         if i == index :

            size = 1.3

         else :

            size = 1.0

         pose.bones[bone].size=Vector(size,size,size)

         pose.bones[bone].insertKey(arm,frame,

                          Blender.Object.Pose.SIZE)

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ доступСн ΠΊΠ°ΠΊ peristaltic.py Π² Ρ„Π°ΠΉΠ»Π΅ peristaltic.blend.



ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ peristaltic.py ΠΊ Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Π΅

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот скрипт, Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Ρ‹. Π Π΅Ρ†Π΅ΠΏΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Ρƒ ΠΊ сцСнС

2. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌ рСдактирования, ΠΈ Π²Ρ‹Π΄Π°Π²ΠΈΡ‚Π΅ любоС число костСй ΠΈΠ· ΠΊΠΎΠ½Ρ†Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ кости.

3.  ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π²  ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ мСш, ΠΎΡ‚Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Ρ‹. Π›ΡŽΠ±ΠΎΠΉ мСш Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ Π² нашСй ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€ со мноТСством ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠΉ.

4. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ мСш, Π·Π°Ρ‚Π΅ΠΌ с Shift'ΠΎΠΌ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Ρƒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΊ Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Π°, Ρ‚Π°ΠΊ ΠΈ МСш-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Π° являСтся Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.

5. НаТмитС Ctrl + P ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ armature. Π’ появившСмся послС этого мСню, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Create from bone heat. Π­Ρ‚ΠΎ создаст Π³Ρ€ΡƒΠΏΠΏΡƒ Π²Π΅Ρ€ΡˆΠΈΠ½ Π² мСшС для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ кости Π² Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Π΅. Π­Ρ‚ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π²Π΅Ρ€ΡˆΠΈΠ½ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для Π΄Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ мСша, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ассоциируСм Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Ρƒ с мСшСм Π² качСствС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°.

6. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ мСш ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ armature. НабСритС имя Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Ρ‹ Π² ΠΏΠΎΠ»Π΅ Ob: ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Π½ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ Vert. Group, Π° Envelopes - Π½Π΅Ρ‚.

7. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Ρƒ ΠΈ запуститС peristaltic.py. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ МСш-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ сходство с ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ куска Ρ‡Π΅Ρ€Π΅Π· ΡƒΠ·ΠΊΡƒΡŽ Π³ΠΈΠ±ΠΊΡƒΡŽ Ρ‚Ρ€ΡƒΠ±Ρƒ. НСсколько ΠΊΠ°Π΄Ρ€ΠΎΠ² ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π½Π° ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ:



ВодосточныС Ρ‚Ρ€ΡƒΠ±Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ СдинствСнным ΠΏΠΎΠ»Ρ‹ΠΌ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ для Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ этим ΠΏΡƒΡ‚Ρ‘ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ:




Get down с Ρ€ΠΈΡ‚ΠΌΠΎΠΌ - синхронизация ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ со Π·Π²ΡƒΠΊΠΎΠΌ

(БловосочСтаниС Get Down ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ количСство самых Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ я Π½Π΅ рискнул Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… ΠΈ ΠΎΡΡ‚Π°Π²Π»ΡΡŽ Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€.)

ΠœΠ½ΠΎΠ³ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ Ρ€ΠΎΠΊ-Π²ΠΈΠ΄Π΅ΠΎ сСгодня часто ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ Π΄ΠΈΡ„Ρ„ΡƒΠ·ΠΎΡ€Π° Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ°, Π²ΠΈΠ±Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Π² Ρ‚Π°ΠΊΡ‚ со Π·Π²ΡƒΠΊΠΎΠΌ ΠΌΡƒΠ·Ρ‹ΠΊΠΈ. И хотя возмоТности для манипуляций со Π·Π²ΡƒΠΊΠΎΠΌ Π² API Π‘Π»Π΅Π½Π΄Π΅Ρ€Π° довольно ΠΌΠ°Π»Ρ‹, Π½ΠΎ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ этого эффСкта нСслоТно Π΄ΠΎΡΡ‚ΠΈΠ³Π½ΡƒΡ‚ΡŒ.

Анимация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ создадим, зависит Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡ‚ манипуляции ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ (shape keys). ΠšΠ»ΡŽΡ‡ΠΈ Π€ΠΎΡ€ΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊ искаТСния Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ мСша. МСш ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΈΡ… искаТСний ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π½ΠΈΡ… даётся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ имя. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π‘Π»Π΅Π½Π΄Π΅Ρ€ прСдоставляСт Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ интСрполяции ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΈ любой ΠΈΠ· искаТСнных Ρ„ΠΎΡ€ΠΌ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΌ способом, ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Π΄Π°ΠΆΠ΅ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΊΠ»Π°Π΄Ρ‹ ΠΎΡ‚ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ.

Π’ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наш Π΄ΠΈΡ„Ρ„ΡƒΠ·ΠΎΡ€ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ°, Π½ΡƒΠΆΠ½ΠΎ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ, Π½Π΅ΠΈΡΠΊΠ°ΠΆΠ΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π΄ΠΈΡ„Ρ„ΡƒΠ·ΠΎΡ€Π°; Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΊ этому Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ ΠΌΠ΅ΡˆΡƒ; ΠΈ ΠΈΡΠΊΠ°Π·ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ появилось сходство с Π΄ΠΈΡ„Ρ„ΡƒΠ·ΠΎΡ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ Π½Π°Ρ€ΡƒΠΆΡƒ. ПослС этого ΠΌΡ‹ смоТСм ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ собой эти "Π²Ρ‹Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡƒΡŽ" ΠΈ Π±Π°Π·ΠΎΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡ‹ Π² зависимости ΠΎΡ‚ громкости Π·Π²ΡƒΠΊΠ°.

АнимированиС установкой ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΊΠ°Π΄Ρ€ΠΎΠ² Π² Π‘Π»Π΅Π½Π΄Π΅Ρ€Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ созданиС ΠΊΡ€ΠΈΠ²Ρ‹Ρ… IPO ΠΈ манипуляция ΠΈΠΌΠΈ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅. На самом Π΄Π΅Π»Π΅, ΠΊΡ€ΠΈΠ²Ρ‹Π΅ IPO Shape ΠΈΠ»ΠΈ Key ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ IPO ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ практичСски Ρ‚Π°ΠΊ ΠΆΠ΅. ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, IPO ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ IPO Π€ΠΎΡ€ΠΌΡ‹ - Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΡ€ΠΈΠ²Ρ‹Π΅ IPO Π€ΠΎΡ€ΠΌΡ‹ проиндСксированы Π½Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ встроСнной числовой константой (ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ipo.OB_LOCX для ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²), Π° строкой, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ любоС количСство ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ.

Π’Π°ΠΊΠΆΠ΅,  IPO Π€ΠΎΡ€ΠΌΡ‹ доступны Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠžΠ±ΡŠΠ΅ΠΊΡ‚, Π° Ρ‡Π΅Ρ€Π΅Π· Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ Π² Π΅Π³ΠΎ основС МСш-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (ΠΈΠ»ΠΈ Π Π΅ΡˆΠ΅Ρ‚ΠΊΡƒ, ΠΈΠ»ΠΈ ΠšΡ€ΠΈΠ²ΡƒΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹).


ΠœΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ†ΠΈΡ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹, нашСй ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ†Π΅Π»ΡŒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π·Π²ΡƒΠΊ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΌΠ΅ΡˆΡƒ, ΠΈΠ»ΠΈ, Π²Π΅Ρ€Π½Π΅Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ°Π΄Ρ€Π°, насколько ΠΈΡΠΊΠ°ΠΆΠ΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΠ΄Π½ΠΎ.

Как упомянуто Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, API Π‘Π»Π΅Π½Π΄Π΅Ρ€Π° Π½Π΅ обСспСчиваСт большого количСства инструмСнтов для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со Π·Π²ΡƒΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Π² основном ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Sound обСспСчиваСт нас способом Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ воспроизвСдСния Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π½ΠΎ Π½Π° этом ΠΈ всё. НСт способа ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ  Π²ΠΎΠ»Π½Ρ‹, Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π² стандартный дистрибутив ΠŸΠΈΡ‚ΠΎΠ½Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ wave, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт нас срСдствами для чтСния Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ±Ρ‹ΠΊΠ½ΠΎΠ²Π΅Π½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ .wav. Π₯отя ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСсТатый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, этого Π±ΡƒΠ΄Π΅Ρ‚ достаточно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ этот Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ являСтся ΠΎΡ‡Π΅Π½ΡŒ распространённым, ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ инструмСнтов Ρ€Π°Π±ΠΎΡ‚Ρ‹ со Π·Π²ΡƒΠΊΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Audacity, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π² этот Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Π‘ этим ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ .wav-Ρ„Π°ΠΉΠ», ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ частоту сэмплов ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠΏΠ°, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сэмплы. Как ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π² объяснСнии ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΌΡ‹ всС Π΅Ρ‰Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ эти сэмплы Π² Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ значСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ для Π½Π°ΡˆΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹, Π½ΠΎ Ρ‚ΡΠΆΠ΅Π»ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΡƒΠΆΠ΅ сдСлали для нас.


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

Π’ΠΎΠΎΡ€ΡƒΠΆΠΈΠ²ΡˆΠΈΡΡŒ знаниями ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΡ€ΠΈΠ²Ρ‹Π΅ IPO ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ .wav-Ρ„Π°ΠΉΠ»Π°ΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ схСму ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

1. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Π΅ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹, ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΡ… Π½ΠΈΡ….

2. ΠŸΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ .wav-Ρ„Π°ΠΉΠ».

3. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ количСство Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… сэмплов Π² сСкунду Π² Ρ„Π°ΠΉΠ»Π΅ (частота дискрСтизации).

4. Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ количСство Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΊΠ°Π΄Ρ€ΠΎΠ² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ количСства Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Π΄Ρ€ΠΎΠ² Π² сСкунду.

5. Π—Π°Ρ‚Π΅ΠΌ, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ°Π΄Ρ€Π° Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ:

β—¦ Π£ΡΡ€Π΅Π΄Π½ΠΈΡ‚ΡŒ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Π΅ сэмплы, проходящиС Π² этом ΠΊΠ°Π΄Ρ€Π΅

β—¦ Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ смСшивания Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΊΡ€ΠΈΠ²ΠΎΠΉ IPO этому срСднСму (Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ) числу

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ доступСн ΠΊΠ°ΠΊ Sound.py Π² Ρ„Π°ΠΉΠ»Π΅ sound000.blend ΠΈ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

import Blender

from Blender import Scene,Window,Draw

from Blender.Scene import Render


import struct

import wave

ΠœΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ, импортируя Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠŸΠΈΡ‚ΠΎΠ½Π° wave, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ .wav-Ρ„Π°ΠΉΠ»Ρƒ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ struct, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для манипулирования Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΈΠ· .wav-Ρ„Π°ΠΉΠ»Π°.