ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠΊΡΠΈΠΏΡΡΠ²ΡΠ·ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ (ΠΎΠΊΠ½ΠΎ ΠΠ½ΠΎΠΏΠΎΠΊ | ΠΏΠ°Π½Π΅Π»Ρ Scripts | Scriptlinks. Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ Π½Π° Enable Script Links, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ). ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΠ»Π΅Π½Π΄Π΅ΡΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ, ΠΈΠΌΠ΅Π΅ΠΌ Π»ΠΈ ΠΌΡ Π΄Π΅Π»ΠΎ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠ»ΠΈ ΡΠΊΡΠΈΠΏΡΡΠ²ΡΠ·ΡΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΡΠ°Π³ΠΎΠΌ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π±ΡΠ΄Π΅Ρ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΡ Π΅Π³ΠΎ Ρ 3D-Π²ΠΈΠ΄ΠΎΠΌ. Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π³Π°Π»ΠΎΡΠΊΡ Draw: AuraSpaceHandler.py Π² ΠΌΠ΅Π½Ρ View - Space Handler Scripts ΠΎΠΊΠ½Π° 3D-Π²ΠΈΠ΄Π°.
ΠΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π΅ΡΠ΅ Π½Π΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΈΠΌΠ΅Π΅Ρ Π΄Π΅Π»ΠΎ Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠΈ ΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π³ΡΡΠΏΠΏΡ Π²Π΅ΡΡΠΈΠ½, ΡΡΠΎΠ±Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎ, ΡΡΠΎ ΠΌΡ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌ. ΠΠ½ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠΈ, ΠΈ ΡΠ΅ΠΊΡΡΠ°, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ ΠΈΡ ΠΈΠ· ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ΅ΠΌΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΡΠΈ ΡΠ²Π΅ΡΠ° ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΈΠ· ΠΎΠΊΠ½Π° ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ:
theme = Window.Theme.Get()[0]
textcolor = [float(v)/255 for v in theme.get(
Window.Types.VIEW3D ).text_hi[:3]]
color = [float(v)/255 for v in
theme.get(Window.Types.VIEW3D).active[:3]]
Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ. ΠΠ΅ΡΠ²Π°Ρ ΠΈΠ· Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅ΠΌΠΎΠΉ. ΠΠ· ΡΡΠΎΠΉ ΡΠ΅ΠΌΡ ΠΌΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ VIEW3D, ΠΈ Π΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡ text_hi ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ ΡΠ΅Π»ΡΡ , ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΌ ΡΠ²Π΅Ρ RGBA. ΠΡ ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π°Π»ΡΡΠ°-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ΅Ρ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ (floats) Π² Π΄ΠΈΠΏΠ°Π·ΠΎΠ½Π΅ [0, 1], ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ²Π΅Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠ°. Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ²Π΅Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠΈ ΠΈΠ· Π°ΡΡΠΈΠ±ΡΡΠ° active.
ΠΠ°ΡΠ΅ΠΉ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΡ Π² ΡΠΎΡΠΌΠ΅ Π΄ΠΈΡΠΊΠ° Π² ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΌΠ΅ΡΡΠ΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ°Π·ΠΌΠ΅Ρ Π΄ΠΈΡΠΊΠ° ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ (Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ size), ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΎ ΡΠΎΡΠΌΠΎΠΉ Π²ΠΎΡΡΠΌΠΈΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. ΠΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ x ΠΈ y ΡΠ°ΠΊΠΎΠ³ΠΎ Π²ΠΎΡΡΠΌΠΈΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π² ΡΠΏΠΈΡΠΎΠΊ diskvertices:
size=0.2
diskvertices=[( 0.0, 1.0),( 0.7, 0.7),
( 1.0, 0.0),( 0.7,-0.7),
( 0.0,-1.0),(-0.7,-0.7),
(-1.0, 0.0),(-0.7, 0.7)]
def drawDisk(loc):
BGL.glBegin(BGL.GL_POLYGON)
for x,y in diskvertices:
BGL.glVertex3f(loc[0]+x*size,loc[1]+y*size,loc[2])
BGL.glEnd()
Π‘Π°ΠΌΠΎ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΎΡΡΠΌΠΈΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ ΠΠ»Π΅Π½Π΄Π΅ΡΠ° BGL (Π²ΡΠ΄Π΅Π»Π΅Π½ΠΎ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅). ΠΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°, Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π²Π΅ΡΡΠΈΠ½Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ° Π² ΡΠΏΠΈΡΠΊΠ΅ diskvertices. ΠΠΎΠ·ΠΈΡΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½Π°Ρ Π² ΡΡΠ½ΠΊΡΠΈΡ drawDisk(), Π±ΡΠ΄Π΅Ρ ΡΠ΅Π½ΡΡΠΎΠΌ, Π° Π²Π΅ΡΡΠΈΠ½Ρ Π±ΡΠ΄ΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π»Π΅ΠΆΠ°ΡΡ Π² ΠΊΡΡΠ³Π΅ Ρ ΡΠ°Π΄ΠΈΡΡΠΎΠΌ, ΡΠ°Π²Π½ΡΠΌ ΡΠ°Π·ΠΌΠ΅ΡΡ size. ΠΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ glEnd(), Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°Π½ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΉ Π²Π½ΡΡΡΠΈ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠΎΡΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² 3D Π² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, ΠΈ ΡΡΡ Π΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΊΠ°ΠΊ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ Π΄Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ 3D-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΊΡΠ°Π½Π°, Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² ΡΡΠ½ΠΊΡΠΈΡ drawDisk() (Π² ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌ ΠΊΡΡΠΊΠ΅ ΠΊΠΎΠ΄Π°). ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π»ΠΈΡΠ½Π΅ΠΉ ΠΏΠΎΡΠ΅ΡΠ΅ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠΈΡΡΠ΅ΠΌ.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ drawAuras(), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ locations (ΠΏΠΎΠ·ΠΈΡΠΈΠΈ) ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ groupname (ΠΈΠΌΡ Π³ΡΡΠΏΠΏΡ, ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°). ΠΠ½Π° Π²ΡΡΠΈΡΠ»ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π²ΡΠ·ΠΎΠ²Π΅Ρ drawDisk() Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅, ΠΈ, Π·Π°ΡΠ΅ΠΌ, Π΄ΠΎΠ±Π°Π²ΠΈΡ ΠΈΠΌΡ Π³ΡΡΠΏΠΏΡ ΠΊΠ°ΠΊ Π½Π°-ΡΠΊΡΠ°Π½Π½ΡΡ ΡΡΠΈΠΊΠ΅ΡΠΊΡ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π° ΠΎΡ ΡΠ΅Π½ΡΡΠ° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠΈ. ΠΠΎΠ΄ΡΠ»Ρ ΠΠ»Π΅Π½Π΄Π΅ΡΠ° Window ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΠΌ ΡΡΠ½ΠΊΡΠΈΡ GetPerspMatrix(), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΠΊΠΈ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ 3D Π² ΡΠΎΡΠΊΡ Π½Π° ΡΠΊΡΠ°Π½Π΅. ΠΡΠ° ΠΌΠ°ΡΡΠΈΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 4x4 ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΠΈΡΠΎΠ½Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ ΠΌΠΎΠ³Π»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΡΠ΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ Π·Π°Π±ΠΎΡΡΡΡΡ ΠΎΠ± ΡΡΠΎΠΌ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠΈ ΡΡΡΠΎΠΊΠΈ ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΡΠ΅ΠΆΠΈΠΌ ΠΏΡΠΎΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΎΠΎΠ±ΡΠ°ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΊΡΠ°Π½Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² ΠΏΡΠΎΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π³ΡΠ°ΡΠΈΠΊΠΈ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊ ΡΠ°ΠΌ ΠΠ»Π΅Π½Π΄Π΅Ρ ΡΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ Π½Π°ΡΠ΅Π³ΠΎ ΡΠΊΡΠΈΠΏΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ:
def drawAuras(locations,groupname):
viewMatrix = Window.GetPerspMatrix()
viewBuff = [viewMatrix[i][j] for i in xrange(4)
for j in xrange(4)]
viewBuff = BGL.Buffer(BGL.GL_FLOAT, 16, viewBuff)
BGL.glLoadIdentity()
BGL.glMatrixMode(BGL.GL_PROJECTION)
BGL.glLoadMatrixf(viewBuff)
BGL.glColor3f(*color)
for loc in locations:
drawDisk(loc)
n=len(locations)
if n>0:
BGL.glColor3f(*textcolor)
x=sum([l[0] for l in locations])/n
y=sum([l[1] for l in locations])/n
z=sum([l[2] for l in locations])/n
BGL.glRasterPos3f(x+2*size,y,z)
Draw.Text(groupname,'small')
ΠΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ ΡΠΈΡΡΠ΅ΠΌ Π½Π°ΡΠΈ Π΄ΠΈΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ glColor3f(). Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈ ΡΠ²Π΅Ρ Π² Π²ΠΈΠ΄Π΅ ΡΠΏΠΈΡΠΊΠ° ΡΡΠ΅Ρ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ, Π° ΡΡΠ½ΠΊΡΠΈΡ glColor3f() ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΌΡ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π·Π²Π΅Π·Π΄ΠΎΡΠΊΠΈ. ΠΠ°ΡΠ΅ΠΌ, ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ drawDisk() Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΡΠΏΠΈΡΠΊΠ΅ locations.
OpenGL ΡΡΠ½ΠΊΡΠΈΠΈ ΠΠ»Π΅Π½Π΄Π΅ΡΠ°:
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΠ»Π΅Π½Π΄Π΅ΡΠ° BGL Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OpenGL. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, Π½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ²ΠΎΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, BGL.glRasterPos3f() ΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Π° Ρ BGL.glRasterPos3fv(), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ΅Ρ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΡΠΌΠΈ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ API ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Blender.BGL ΠΈ Blender.Draw ΠΈ ΠΊ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΡ ΠΏΠΎ OpenGL Π½Π° http://www.opengl.org/sdk/docs/man/.
ΠΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π½Π°ΡΠΈΡΠΎΠ²Π°Π»ΠΈ, Π½Π΅ Π½ΡΠ»Π΅Π²ΠΎΠ΅, ΠΌΡ Π·Π°Π΄Π°ΡΠΌ ΡΠ²Π΅Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² textcolor ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΡΡΠ΅Π΄Π½ΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΈΠ²Π°Π΅ΠΌΡΡ Π²Π΅ΡΡΠΈΠ½. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ glRasterPos3f(), ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠ°ΡΡΠΎΠ²ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠ΅ΠΊΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π² ΡΡΠΈΡ ΡΡΡΠ΅Π΄Π½ΡΠ½Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΠΌ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΌ ΠΊ x-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅, ΡΡΠΎΠ±Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΌΠ΅ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡ Π²ΠΏΡΠ°Π²ΠΎ. ΠΠ°ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΠΠ»Π΅Π½Π΄Π΅ΡΠ° Draw.Text() ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡ ΠΈΠΌΡ Π³ΡΡΠΏΠΏΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΡΠΈΡΡΠΎΠΌ Π² Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ.
Π‘Π½ΠΎΠ²Π° ΠΎ ΠΌΠ΅ΡΠ°Ρ β ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡΠΏΠ΅ΡΠ°ΡΠΊΠΎΠ²
Π₯ΠΎΡΡ ΠΌΡΠ³ΠΊΠΈΠ΅ ΡΠ΅Π»Π° (softbody) ΠΈ ΠΈΠΌΠΈΡΠ°ΡΠΎΡΡ ΡΠΊΠ°Π½ΠΈ (cloth), ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΠΠ»Π΅Π½Π΄Π΅ΡΠ΅, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π°Π΄ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ Π΄Π΅ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΌΠ΅ΡΠ°, ΠΈΠ»ΠΈ ΠΡ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΡΡΠΌΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΠΎΡ Π²Π°ΡΠ΅Π½ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΡΠΈΠΌΡΠ»ΡΡΠΈΠΈ ΠΠ»Π΅Π½Π΄Π΅ΡΠ°. ΠΡΠΎ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ Π²ΡΡΠΈΡΠ»ΡΡΡ Π΄Π΅ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΊΠΎΡΠ½ΡΠ»ΡΡ, Π½ΠΎ Π½Π΅ ΠΏΠΎΡΠ²Π°Π» Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ΅Ρ. ΠΠ½ΠΎ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΡΠ½ΡΠΌ. ΠΡ ΡΡΡΠ΅ΠΌΠΈΠΌΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²Π΅ΡΠΎΡΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π΄Π»Ρ ΡΠ²Π΅ΡΠ΄ΡΡ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠ°ΡΠ°ΡΡΠΈΡ ΡΡ Π»Π΅Π³ΠΊΠΎ Π΄Π΅ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈΠ»ΠΈ ΠΊΠ»Π΅ΠΉΠΊΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ°Π»Π΅Ρ, ΠΏΡΠΎΠ΄Π°Π²Π»ΠΈΠ²Π°ΡΡΠΈΠΉ ΠΌΠ°ΡΠ»ΠΎ, ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π΅ΡΠΎ, Π΅Π΄ΡΡΠ΅Π΅ ΠΏΠΎ ΠΌΡΠ³ΠΊΠΎΠΉ ΠΎΠ±ΠΎΡΠΈΠ½Π΅.
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΎΡΠΏΠ΅ΡΠ°ΡΠΊΠΎΠ². ΠΠΎΡΠΎΠΆΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΡΡΡΠ΅ΠΉΡΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠΈΠ½Ρ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ:
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΠΌΡ ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ Π΄Π΅ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ, ΠΈ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ, Π΄Π΅Π»Π°ΡΡΠΈΠΌ Π΄Π΅ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π»ΠΈ. Π Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ (constraint) ΠΈ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ ΡΡΠΈ Π΄Π΅ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΊΠ°ΠΊ pycontraints. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΌΠ΅Ρ ΠΈΠ»ΠΈ ΡΠ΅Π»ΠΈ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ; ΡΡΠΈΠΌ ΡΠ°ΠΌΡΠΌ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΌΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ°ΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΡΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ Π΄Π΅ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΌΠ΅ΡΠ΅ΠΉ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄, Π³Π΄Π΅ ΠΌΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΠΈ ΠΊΠ΅ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠ°Π΄Ρ.
ΠΠ°Ρ ΡΠΊΡΠΈΠΏΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½:
β’ ΠΡΡΠΈΡΠ»ΠΈΡΡ ΠΈ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π΅ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠ°Π΄ΡΠ°