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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² написаниС скриптов Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ для Π‘Π»Π΅Π½Π΄Π΅Ρ€Π° 2.5x. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 16

Автор Thomas Larsson

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ скрипт Π±Ρ‹Π» Π°Π΄Π΄ΠΎΠ½ΠΎΠΌ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ написан ΠΏΠΎ-особому. Π’Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ структура bl_info Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΊΠΎΠ½Ρ†Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ register (рСгистрации) ΠΈ unregister (ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ рСгистрации). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, скрипт Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ Π² мСстС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π‘Π»Π΅Π½Π΄Π΅Ρ€ ΠΈΡ‰Π΅Ρ‚ Π°Π΄Π΄ΠΎΠ½Ρ‹ ΠΏΡ€ΠΈ запускС. Оно Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ addons ΠΈ addons-contrib , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ 2.57/scripts ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится Π‘Π»Π΅Π½Π΄Π΅Ρ€.


ΠŸΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹

Π­Ρ‚ΠΎΡ‚ скрипт ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΈΠ· ΠΎΠΊΠ½Π° тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ доступСн ΠΊΠ°ΠΊ Π°Π΄Π΄ΠΎΠ½ Π‘Π»Π΅Π½Π΄Π΅Ρ€Π°. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ Π°Π΄Π΄ΠΎΠ½Π° указываСтся Π² словарС bl_info Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π°.

bl_info = {

    'name': 'Shapekey pinning',

    'author': 'Thomas Larsson',

    'version': (0, 1, 2),

    'blender': (2, 5, 7),

    'api': 35774,

    "location": "View3D > UI panel > Shapekey pinning",

    'description': 'Pin and key the shapekeys of a mesh',

    'warning': '',

    'wiki_url': 'http://blenderartists.org/forum/showthread.php?193908',

    'tracker_url': '',

    "support": 'COMMUNITY',

    "category": "3D View"}


Бмысл Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² этом словарС ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½.

β€’ name: НазваниС Π°Π΄Π΄ΠΎΠ½Π°.

β€’ author: Имя Π°Π²Ρ‚ΠΎΡ€Π°.

β€’ version: ВСрсия скрипта.

β€’ blender: ВСрсия Π‘Π»Π΅Π½Π΄Π΅Ρ€Π°.

β€’ api: НомСр Ρ€Π΅Π²ΠΈΠ·ΠΈΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ скрипт Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

β€’ location: Π“Π΄Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ.

β€’ description: ОписаниС, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Π² Π²ΠΈΠ΄Π΅ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ подсказки ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

β€’ warning: ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ сообщСниС. Если Π½Π΅ пусто, Π² ΠΎΠΊΠ½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… настроСк Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ нСбольшой ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ Π·Π½Π°ΠΊ.

β€’ wiki_url: Бсылка Π½Π° Π²ΠΈΠΊΠΈ-страницу скрипта. Π”ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Π‘Π»Π΅Π½Π΄Π΅Ρ€-сайтом, Π½ΠΎ здСсь ΠΌΡ‹ ссылаСмся Π½Π° Ρ‚Π΅ΠΌΡƒ Π² Ρ„ΠΎΡ€ΡƒΠΌΠ΅ blenderartists.org.

β€’ tracker_url: Бсылка Π½Π° Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ ошибок скрипта.

β€’ support: ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠ»ΠΈ сообщСство

β€’ category: ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ скрипта, Ρ‚.Π΅. 3D View, Import-Export, Add Mesh, ΠΈΠ»ΠΈ Rigging. БоотвСтствуСт катСгориям Π² ΠΎΠΊΠ½Π΅ ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… настроСк.


МногиС элСмСнты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ просто ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π½ΠΈΠΆΠ΅.


Π’Ρ‚ΠΎΡ€ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ Π°Π΄Π΄ΠΎΠ½Ρƒ β€” это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ register() ΠΈ unregister() ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ„Π°ΠΉΠ»Π°. register() ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ bpy.utils.register_module(__name__), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ всС классы, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ»Π΅. Она Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π‘ΠΊΡ€ΠΈΠΏΡ‚ этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ RNA-свойства. Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ RNA-свойства ΠΏΡ€ΠΎΡ‚ΠΈΠ² ID-свойств, объявлСниС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ здСсь ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС логичСскоС свойство Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число.


def register():

    initialize()

    bpy.utils.register_module(__name__)  


def unregister():

    bpy.utils.unregister_module(__name__)


if __name__ == "__main__":

    register()


ΠžΡ‚ΠΌΠ΅Π½Π° рСгистрации Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° рСгистрации. ПослСдниС строки Π΄Π΅Π»Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ запуск скрипта Π² Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠ· ΠΎΠΊΠ½Π° ВСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. Π”Π°ΠΆΠ΅ Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ скрипт ΠΈΠ· Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ β€‹β€‹Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅.

Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» Π² мСсто, Π³Π΄Π΅ Π‘Π»Π΅Π½Π΄Π΅Ρ€ ΠΈΡ‰Π΅Ρ‚ Π°Π΄Π΄ΠΎΠ½Ρ‹. ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π‘Π»Π΅Π½Π΄Π΅Ρ€. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… настроСк ΠΈΠ· мСню File Β» User Preferences, ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Add-ons. Наш скрипт ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части Ρ€Π°Π·Π΄Π΅Π»Π° 3D View.



ΠœΡ‹ ΡƒΠ·Π½Π°Ρ‘ΠΌ поля ΠΈΠ· словаря bl_info . Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ скрипт, Π½Π°ΠΆΠ°Π² Ρ„Π»Π°ΠΆΠΎΠΊ Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Π΄Π΄ΠΎΠ½ загруТался ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ запускС Π‘Π»Π΅Π½Π΄Π΅Ρ€Π°, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Save As Default Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части ΠΎΠΊΠ½Π°.

ПослС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π°Π΄Π΄ΠΎΠ½Π°, ΠΎΠ½ появляСтся Π² UI-ΠΏΠ°Π½Π΅Π»ΠΈ.



Π‘Π°ΠΌ скрипт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ интСрфСйса. ΠšΡƒΠ± ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹. ВмСсто Π½Π΅Π³ΠΎ ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ пСрсонаТ MakeHuman, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ мноТСство Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π»ΠΈΡ†Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ»ΡŽΡ‡ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹. MakeHuman - это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π»Π΅Π³ΠΊΠΎ позволяСт Π²Π°ΠΌ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ пСрсонаТ. ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ оснащённый ΠΈ тСкстурированный пСрсонаТ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ экспортирован Π² Π‘Π»Π΅Π½Π΄Π΅Ρ€ использованиСм Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° MHX (MakeHuman eXchange). MHX-Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² Π‘Π»Π΅Π½Π΄Π΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅Ρ€Π° MHX, Π°Π΄Π΄ΠΎΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ распространяСтся с Π‘Π»Π΅Π½Π΄Π΅Ρ€ΠΎΠΌ.

Π§Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для настоящСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, это Ρ‡Ρ‚ΠΎ мСш MakeHuman ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹. Если Π²Ρ‹ Π½Π°ΠΆΠΌΡ‘Ρ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Pin (ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ) справа ΠΎΡ‚ значСния ΠΊΠ»ΡŽΡ‡Π° Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠ»ΡŽΡ‡ Ρ„ΠΎΡ€ΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ станСт Ρ€Π°Π²Π½Ρ‹ΠΌ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ значСния всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ. Если ΠΊΠ½ΠΎΠΏΠΊΠ° Autokey Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ шкалС Π½Π°ΠΆΠ°Ρ‚Π°, Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊΠ»ΡŽΡ‡ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° Ρ„ΠΎΡ€ΠΌΡ‹. Если ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° опция Key all, ΠΊΠ»ΡŽΡ‡ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Ρ„ΠΎΡ€ΠΌΡ‹ мСша.



#----------------------------------------------------------

# File shapekey_pin.py

#----------------------------------------------------------  

bl_info = {

    'name': 'Shapekey pinning',

    'author': 'Thomas Larsson',

    'version': '(0, 1, 2)',

    'blender': (2, 5, 7),

    "location": "View3D > UI panel > Shapekey pinning",

    'description': 'Pin and key the shapekeys of a mesh',

    'warning': '',

    'wiki_url': 'http://blenderartists.org/forum/showthread.php?193908',

    'tracker_url': '',

    "support": 'COMMUNITY',

    "category": "3D View"}


import bpy

from bpy.props import *  


#

# class VIEW3D_OT_ResetExpressionsButton(bpy.types.Operator):

#

class VIEW3D_OT_ResetExpressionsButton(bpy.types.Operator):

    bl_idname = "shapepin.reset_expressions"

    bl_label = "Reset expressions" 


    def execute(self, context):

        keys = context.object.data.shape_keys

        if keys:

            for shape in keys.keys:

            shape.value = 0.0

        return{'FINISHED'}  


#

# class VIEW3D_OT_PinExpressionButton(bpy.types.Operator):


class VIEW3D_OT_PinExpressionButton(bpy.types.Operator):

    bl_idname = "shapepin.pin_expression"

    bl_label = "Pin"

    expression = bpy.props.StringProperty()  


    def execute(self, context):

        skeys = context.object.data.shape_keys

        if skeys:

            frame = context.scene.frame_current

            for block in skeys.key_blocks:

                oldvalue = block.value

                block.value = 1.0 if block.name == self.expression else 0.0

                if (context.tool_settings.use_keyframe_insert_auto and

                    (context.scene.key_all or

                    (block.value > 0.01) or

                    (abs(block.value-oldvalue) > 0.01))):

                    block.keyframe_insert("value", index=-1, frame=frame)

        return{'FINISHED'} 


#

# class ExpressionsPanel(bpy.types.Panel):


class ExpressionsPanel(bpy.types.Panel):

    bl_label = "Pin shapekeys"

    bl_space_type = "VIEW_3D"

    bl_region_type = "UI"


    @classmethod

    def poll(cls, context):

        return context.object and (context.object.type == 'MESH')  


    def draw(self, context):

        layout = self.layout

        layout.operator("shapepin.reset_expressions")

        layout.prop(context.scene, "key_all")

        skeys = context.object.data.shape_keys

        if skeys:

            for block in skeys.key_blocks:

                row = layout.split(0.75)

                row.prop(block, 'value', text=block.name)

                row.operator("shapepin.pin_expression",

                    text="Pin").expression = block.name

        return 


#

# инициализация ΠΈ рСгистрация

#  


def initialize():

    bpy.types.Scene.key_all = BoolProperty(

    name="Key all",

    description="Set keys for all shapes",

    default=False) 


def register():

    initialize()

    bpy.utils.register_module(__name__)  


def unregister():

    bpy.utils.unregister_module(__name__)  


if __name__ == "__main__":

    register()


ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ BVH-Ρ„Π°ΠΉΠ»ΠΎΠ²

BVH Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ пСрсонаТСй, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°Ρ…Π²Π°Ρ‚Π° двиТСния (mocap). Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° простого ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅Ρ€Π° BVH, которая строит скСлСт с дСйствиСм (action), описанный Π² Ρ„Π°ΠΉΠ»Π΅ BVH. Он Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π²ΠΈΠ΄Π΅ Π°Π΄Π΄ΠΎΠ½Π° Π‘Π»Π΅Π½Π΄Π΅Ρ€Π° со словарём bl_info Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΊΠΎΠ΄ΠΎΠΌ рСгистрации Π² ΠΊΠΎΠ½Ρ†Π΅.

ПослС выполнСния скрипта ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΅Π³ΠΎ Π² качСствС Π°Π΄Π΄ΠΎΠ½Π°, простой ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅Ρ€ BVH ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ ΠΈΠ· ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса (Ctrl+N). Π•ΡΡ‚ΡŒ Π΄Π²Π΅ ΠΎΠΏΡ†ΠΈΠΈ: логичСская пСрСмСнная с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Ρ‚ΠΎΠΌ, ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π»ΠΈ мСш Π½Π° 90 градусов (Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Z Π²Π²Π΅Ρ€Ρ…), ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±.