ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΊΡΠΈΠΏΡ Π±ΡΠ» Π°Π΄Π΄ΠΎΠ½ΠΎΠΌ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ ΠΏΠΎ-ΠΎΡΠΎΠ±ΠΎΠΌΡ. Π’Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΡΡΠΊΡΡΡΠ° 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 ΡΠΎΡΠΌΠ°Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡ Π΄Π°Π½Π½ΡΡ Π·Π°Ρ Π²Π°ΡΠ° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ (mocap). ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ΅ΡΠ° BVH, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΡΠΎΠΈΡ ΡΠΊΠ΅Π»Π΅Ρ Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ (action), ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π² ΡΠ°ΠΉΠ»Π΅ BVH. ΠΠ½ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π²ΠΈΠ΄Π΅ Π°Π΄Π΄ΠΎΠ½Π° ΠΠ»Π΅Π½Π΄Π΅ΡΠ° ΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΡΠΌ bl_info Π² Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΊΠΎΠ΄ΠΎΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π² ΠΊΠΎΠ½ΡΠ΅.
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ° ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΅Π³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π΄Π΄ΠΎΠ½Π°, ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠΌΠΏΠΎΡΡΠ΅Ρ BVH ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½ ΠΈΠ· ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (Ctrl+N). ΠΡΡΡ Π΄Π²Π΅ ΠΎΠΏΡΠΈΠΈ: Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΡΠΎΠΌ, ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΡ Π»ΠΈ ΠΌΠ΅Ρ Π½Π° 90 Π³ΡΠ°Π΄ΡΡΠΎΠ² (ΡΡΠΎΠ±Ρ Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ Z Π²Π²Π΅ΡΡ ), ΠΈ ΠΌΠ°ΡΡΡΠ°Π±.