3. Π‘ΠΎΠ±ΡΠ°ΡΡ ΠΌΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²Π° ΠΈΠ· ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ» ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
4. ΠΡΡΠ°Π²ΠΈΡΡ ΠΌΠ΅Ρ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΡΠ΅Π½Ρ.
ΠΡ ΠΏΡΠΎΠΉΠ΄ΡΠΌ ΡΠ΅ΡΠ΅Π· ΡΠΊΡΠΈΠΏΡ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Ρ Π²Π°ΠΆΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ Π² ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΡΡ . (ΠΠΎΠ»Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΊΠ°ΠΊ creepycrawlies.py.) ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠ΅ΠΉ ΡΠ΅Π»Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ³ΠΎΠ΄Π½Ρ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Π²ΠΌΠ΅ΡΡΠ΅. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈ ΡΠ°ΡΡΠΈ Π² ΠΠ»Π΅Π½Π΄Π΅ΡΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΌΠ΅ΡΠ°Ρ ΡΡΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π³ΡΡΠΏΠΏΡ Π²Π΅ΡΡΠΈΠ½. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΡΡΠΈ ΠΌΠ΅ΡΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π° Π½Π° ΠΠΈΡΠΎΠ½Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΊΡΠΈΠΏΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ ΡΡΠΎΠ»ΠΊΠ½ΡΠΌΡΡ ΡΠ½ΠΎΠ²Π° Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ Π΄Π΅Π»ΠΎ Ρ Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ Π²Π΅ΡΡΠΈΠ½.
Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠΎΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° ΠΠΈΡΠΎΠ½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΈΡΠΊΠΎΠ² Π²Π΅ΡΡΠΈΠ½, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ°ΡΡΡ ΡΠ΅Π»Π°. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π³Π΄Π΅-Π½ΠΈΠ±ΡΠ΄Ρ Π² ΠΏΡΡΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΠΠΈΡΠΎΠ½Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, .blender\scripts\bpymodules Π±ΡΠ΄Π΅Ρ Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ, ΠΈΠ»ΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠΊΡΠΈΠΏΡΠΎΠ². Π€Π°ΠΉΠ» Π½Π° ΠΠΈΡΠΎΠ½Π΅ Ρ ΠΌΠ΅ΡΠ΅Π²ΡΠΌΠΈ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ mymesh.py, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΡΠ°ΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ import:
import mymesh
ΠΡΠΈ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Draw.Create() Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΈ ΡΠ±ΠΎΡΠΊΠ° ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ Ρ Draw.PupBlock()
ΠΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΠ΅ΡΠΈΠ²ΡΠΈΠΌΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π·Π°ΡΠ΅ΠΌ ΡΠΎΠ±ΡΠ°ΡΡ ΠΈΡ Π² ΠΎΠΊΠ½Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³Π°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΎΠΊΠ½ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π·Π°Π΄Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° Π²Π΅Π»ΠΈΡΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡ. ΠΠΈΠ°Π»ΠΎΠ³ ΠΈΠ»ΠΈ Π²ΡΠΏΠ°Π΄Π°ΡΡΠ΅Π΅ ΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΊΡΡΡΠΎΡΠ°. ΠΠ»Π΅Π½Π΄Π΅Ρ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½ΠΎ ΠΏΠΎΠΊΠ° ΠΌΡ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΎΡΠ½ΠΎΠ².
Π₯ΠΎΡΡ Draw.Create() ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ-ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊ, Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Π²ΠΎΠ΄Π° Π΄Π»Ρ ΡΠ΅Π»ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½ ΠΈ Π²Π΅Π»ΠΈΡΠΈΠ½ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ. Π’ΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²Π΅Π»ΠΈΡΠΈΠ½Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΡΠ΅Π»ΠΎΠ΅), ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² Draw.Create(). ΠΠ½ΠΎΠΏΠΊΠ° OK Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Draw.PupBlock(). ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅ΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ΅ΠΊΡΡΠ°, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅, ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Draw.Create(), Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠ° ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ° Π²Π΅Π»ΠΈΡΠΈΠ½Ρ, ΠΈ ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ (tooltip), ΠΏΠΎΡΠ²Π»ΡΡΡΠ΅Π³ΠΎΡΡ ΠΏΡΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΊΡΡΡΠΎΡΠ° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ.
Draw = Blender.Draw
THORAXSEGMENTS = Draw.Create(3) # Π‘Π΅Π³ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠΎΡΡΠ΅
TAILSEGMENTS = Draw.Create(5) # Π‘Π΅Π³ΠΌΠ΅Π½ΡΠΎΠ² Π² Ρ Π²ΠΎΡΡΠ΅
LEGSEGMENTS = Draw.Create(2) # Π‘Π΅Π³ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΎΡΡΠ° Ρ
# Π½ΠΎΠ³Π°ΠΌΠΈ
WINGSEGMENTS = Draw.Create(2) # Π‘Π΅Π³ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΎΡΡΠ° Ρ
# ΠΊΡΡΠ»ΡΡΠΌΠΈ
EYESIZE = Draw.Create(1.0) # Π Π°Π·ΠΌΠ΅Ρ Π³Π»Π°Π·
TAILTAPER = Draw.Create(0.9) # ΠΠΎΠ½ΡΡΠ½ΠΎΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ
ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° Ρ Π²ΠΎΡΡΠ°
if not Draw.PupBlock('Add CreepyCrawly', [
('Thorax segments:' , THORAXSEGMENTS, 2, 50,
'Number of thorax segments'),
('Tail segments:' , TAILSEGMENTS, 0, 50, 'Number of tail
segments'),
('Leg segments:' , LEGSEGMENTS, 2, 10,
'Number of thorax segments with legs'),
('Wing segments:' , WINGSEGMENTS, 0, 10,
'Number of thorax segments with wings'),
('Eye size:' , EYESIZE, 0.1,10, 'Size of the eyes'),
('Tail taper:' , TAILTAPER, 0.1,10,
'Taper fraction of each tail segment'),]):
return
ΠΠ°ΠΊ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, ΠΌΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ Π½Π°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π²Π²ΠΎΠ΄Π° Π² ΡΠ°Π·ΡΠΌΠ½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ 50 Π΄Π»Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΎΡΡΠ° ΠΈ Ρ Π²ΠΎΡΡΠ°), ΡΡΠΎΠ±Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ (ΠΎΠ³ΡΠΎΠΌΠ½ΡΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΡΡΠΈΡΡ Π²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π΅ΡΠ»ΠΈ ΠΏΠ°ΠΌΡΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½Π°Ρ ΠΌΠΎΡΠ½ΠΎΡΡΡ ΡΠΊΡΠ΄Π½Ρ).
ΠΡΠ»ΠΎ Π±Ρ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ Π²ΡΠ±ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΡΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΠΊΡΠΈΠΏΡ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ½ΠΎΠ²Π°, Π½ΠΎ Π² ΠΠ»Π΅Π½Π΄Π΅ΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΊΡΠΈΠΏΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎ, ΠΈ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²Π½ΡΡΡΠΈ ΡΠΊΡΠΈΠΏΡΠ° ΡΠ΅ΡΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΡΠΎΡ ΡΠ°Π½ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. Π‘ ΡΡΠΎΠΉ ΡΠ΅Π»ΡΡ, API ΠΠ»Π΅Π½Π΄Π΅ΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ Registry (Π Π΅Π΅ΡΡΡΠ°), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ (Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π° Π΄ΠΈΡΠΊΠ΅), ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ.
ΠΠ°Ρ ΠΊΠΎΠ΄ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ GUI ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, Π½ΠΎ ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠΎΠ΄, ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡΠΈΠΉ Π·Π°ΠΏΠΎΠΌΠ½Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ), ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠ΄, ΡΠΎΡ ΡΠ°Π½ΡΡΡΠΈΠΉ Π²ΡΠ±ΠΎΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
reg = Blender.Registry.GetKey('CreepyCrawlies',True)
try:
nthorax=reg['ThoraxSegments']
except:
nthorax=3
try:
ntail=reg['TailSegments']
except:
ntail=5
... <ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²> β¦
Draw = Blender.Draw
THORAXSEGMENTS = Draw.Create(nthorax)
TAILSEGMENTS = Draw.Create(ntail)
LEGSEGMENTS = Draw.Create(nleg)
WINGSEGMENTS = Draw.Create(nwing)
EYESIZE = Draw.Create(eye)
TAILTAPER = Draw.Create(taper)
if not Draw.PupBlock('Add CreepyCrawly', [\
... <ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅> β¦
return
reg={'ThoraxSegments':THORAXSEGMENTS.val,
'TailSegments' :TAILSEGMENTS.val,
'LegSegments' :LEGSEGMENTS.val,
'WingSegments' :WINGSEGMENTS.val,
'EyeSize' :EYESIZE.val,
'TailTaper':TAILTAPER.val}
Blender.Registry.SetKey('CreepyCrawlies',reg,True)
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠ»ΡΡΠ° Π² ΡΠ΅Π΅ΡΡΡΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½Ρ. ΠΡΠ³ΡΠΌΠ΅Π½Ρ True (ΠΡΡΠΈΠ½Π°) ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠ·Π²Π»Π΅ΡΡ Π½Π°ΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Ρ Π΄ΠΈΡΠΊΠ°, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΡ Π½Π° Π΄ΠΈΡΠΊ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ, ΡΡΠΎΠ±Ρ Π½Π°Ρ ΡΠΊΡΠΈΠΏΡ ΠΌΠΎΠ³ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠΎΠΉ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈ ΠΠ»Π΅Π½Π΄Π΅Ρ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΠΉ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠ»ΡΡ ΡΠ΅Π΅ΡΡΡΠ° - ΡΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π»ΡΠ±ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΊ Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠ»ΡΡΠ° ΡΠ΅Π΅ΡΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ None (ΠΠΈΡΡΠΎ) - ΠΎΠ± ΡΡΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ try β¦ except β¦ .
ΠΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΠΉ Π΄ΠΈΠ°Π»ΠΎΠ³ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ΅Π½ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π²Π°ΡΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ, ΠΌΠΎΠ΄ΡΠ»Ρ ΠΠ»Π΅Π½Π΄Π΅ΡΠ° Draw ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½ΠΎ ΡΡΠΈ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΡΡΠ΅Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠΈΠ»ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΡΠΊΠ»Π΅ΠΈΡΡ ΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ², ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΡΠΎ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠ΅Π΅ ΠΎΠΊΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ΅Π²ΠΎΠΆΠ½ΠΎΠΌ ΡΠ²Π΅ΡΠ½ΠΎΠΌ ΡΠΎΠ½Π΅, Π½ΠΎ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ, ΠΊΠ°ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΌΡΡΠΈ) ΡΠ²ΡΠ·Π°Π½Ρ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
from Blender import Window,Draw,BGL
def event(evt, val):
if evt == Draw.ESCKEY:
Draw.Exit() # exit when user presses ESC
return
def button_event(evt):
if evt == 1:
Draw.Exit()
return
def msg(text):
w = Draw.GetStringWidth(text)+20
wb= Draw.GetStringWidth('Ok')+8
BGL.glClearColor(0.6, 0.6, 0.6, 1.0)
BGL.glClear(BGL.GL_COLOR_BUFFER_BIT)
BGL.glColor3f(0.75, 0.75, 0.75)
BGL.glRecti(3,30,w+wb,3)
Draw.Button("Ok",1,4,4,wb,28)
Draw.Label(text,4+wb,4,w,28)
def error(text):
Draw.Register(lambda:msg(text), event, button_event)
Π ΡΡΠ½ΠΊΡΠΈΠΈ error() Π²ΡΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ; ΠΎΠ½Π° ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΠ»Π΅Π½Π΄Π΅ΡΡ ΡΡΠΎ ΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΊΡΠ΄Π° ΠΏΠΎΡΡΠ»Π°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ, ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ ΡΠ΅Π»ΡΠΊΠΈ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅, ΠΊΡΠ΄Π° ΠΏΠΎΡΠ»Π°ΡΡ Π½Π°ΠΆΠ°ΡΡΡ ΠΊΠ»Π°Π²ΠΈΡΡ, ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π² Draw.Register(), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΈΡΡΠ΅Ρ, Π½ΠΎ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ text ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ error(). Π€ΡΠ½ΠΊΡΠΈΡ lambda ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π½ΠΎ Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ.
Π€ΡΠ½ΠΊΡΠΈΡ msg() ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π° ΡΠΊΡΠ°Π½Π΅. ΠΠ½Π° ΡΠΈΡΡΠ΅Ρ ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠΎΠ½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ BGL.glRecti(), ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (Ρ Draw.Label()), ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ OK, ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°Π·Π½Π°ΡΠ°Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ 1 (Ρ Draw.Button()). ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅Π»ΠΊΠ°Π΅Ρ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ OK, ΡΡΠΎΡ Π½ΠΎΠΌΠ΅Ρ ΡΠΎΠ±ΡΡΠΈΡ ΠΏΠΎΡΡΠ»Π°Π΅ΡΡΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ (event handler) - ΡΡΠ½ΠΊΡΠΈΡ button_event(), ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ Π² Draw.Register(). ΠΡΠ΅, ΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ Π΄Π΅Π»Π°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ ΡΡΠΈΠΌ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ΡΠΎΠ±ΡΡΠΈΡ 1 - Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Draw.Register() Π²ΡΠ·ΠΎΠ²ΠΎΠΌ Draw.Exit(), ΡΠ°ΠΊ ΡΡΠΎ Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ error() ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ.