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

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

Автор Michel Anders

me=ob.getData(mesh=1)

mats=[ Blender.Material.New(), Blender.Material.New()]

mats[0].rgbCol=[1.0,1.0,1.0]

mats[1].rgbCol=[0.0,0.0,0.0]


ob.setMaterials(mats)

ob.colbits=3

for f in me.faces:

   if f.index%2 == 0 :

      f.mat=0

   else:

      f.mat=1

ВыдСлСнная строка  Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ индСксы ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€Π°Π½ΠΈ, относятся ΠΊ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌ, Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. (Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ с мСш-Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ сСкции.)


ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² ObData

Π’ Π‘Π»Π΅Π½Π΄Π΅Ρ€Π΅ ΠΈ МСш-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π‘Π»Π΅Π½Π΄Π΅Ρ€Π° Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, содСрТащий МСш-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свой собствСнный список ΠΈΠ· 16 ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ². Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ мноТСство экзСмпляров ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ мСша, Π½ΠΎ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ»ΠΈ всС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΊ ΠœΠ΅ΡˆΡƒ, Π° Π½Π΅ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. Π­Ρ‚ΠΎ управляСтся Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° colbits. Π­Ρ‚ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ состоит ΠΈΠ· 16 Π±ΠΈΡ‚ΠΎΠ², ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΎΡ‚ ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ ΠΎΡ‚ МСша. ΠœΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с этим Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ сСкции.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠšΡ€ΠΈΠ²ΠΎΠΉ (Curve) Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ собствСнный Π½Π°Π±ΠΎΡ€ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², ΠΈ Π²Ρ‹Π±ΠΎΡ€ фактичСского ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° подчиняСтся Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ для МСш-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠœΠ΅Ρ‚Π°Π±ΠΎΠ»Π»Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ свой собствСнный Π½Π°Π±ΠΎΡ€ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π°ΠΌΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² производится Ρ‚Π°ΠΊ ΠΆΠ΅, Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ состоят ΠΈΠ· частСй (смотри ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ), Π½Π΅Ρ‚ способа ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ элСмСнтами Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠœΠ΅Ρ‚Π°Π±ΠΎΠ»Π»Π° (это истиннно Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π² графичСском интСрфСйсС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Links and Materials контСкста РСдактирования ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ индСксы ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтам ΠΌΠ΅Ρ‚Π°Π±ΠΎΠ»Π»Π°, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π΄Π°ΡŽΡ‚ эффСкта). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ слот списка ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ².

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ сами, ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠΈ, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ связанных ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² (Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π»ΡŽΠ±Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹, связанныС с ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, содСрТащим Π°Ρ€ΠΌΠ°Ρ‚ΡƒΡ€Ρƒ ΠΈΠ»ΠΈ Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΡƒ, Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹). НСкоторыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ связанных ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ связанныС с Π½ΠΈΠΌΠΈ тСкстуры. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠœΠΈΡ€Π° ΠΈ Π›Π°ΠΌΠΏΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ с тСкстурами, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ.


НазначСниС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² частям ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π°

Π’ ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… мСша каТдая Π³Ρ€Π°Π½ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ собствСнный, связанный с Π½Π΅ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π». Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» идСнтифицируСтся своим индСксом Π² спискС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² ΠΈ сохраняСтся Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ mat. Π’ ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Text3d, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ собствСнный ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ своим индСксом Π² спискС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ². На этот Ρ€Π°Π·, этот индСкс Π½Π΅ хранится нСпосрСдствСнно Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСн ΠΈΠ»ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ accessor, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ индСкс символа Π² тСкстС Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

БСкциям Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠšΡ€ΠΈΠ²ΠΎΠΉ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ CurNurb), ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ индСкс ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ setMatIndex(). ИндСкс ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ ΠΈΠ· Π½ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ getMatIndex(). Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ связь ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° с ΠΊΡ€ΠΈΠ²Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ состоят ΠΈΠ· СдинствСнной Π»ΠΈΠ½ΠΈΠΈ Π±Π΅Π· настроСнной Π²Ρ‹Π΄Π°Π²Π»Π΅Π½Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ связанного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° скоса, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… эффСктов, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ эти ΠΊΡ€ΠΈΠ²Ρ‹Π΅ Π½Π΅ рСндСрятся.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ кусок ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ символам Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Text3d. Π‘Π°ΠΌ ΠΊΠΎΠ΄ прост, Π½ΠΎ ΠΊΠ°ΠΊ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, ΠΌΡ‹ опрСдСляСм список ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½. Π­Ρ‚ΠΎ Ρ€Π°ΡΡ‚ΠΎΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ спСцифику Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ setMaterial(). Π•Ρ‘ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ индСкса ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ смСщён Π½Π° ΠΎΠ΄ΠΈΠ½, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, индСкс 2 ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρƒ Π² спискС, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, самый большой индСкс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π½Π΅ смСщённым Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. Π’Π°ΠΊ Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСксы 1 ΠΈ 2, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌ 0 ΠΈ 1, Π½ΠΎ фактичСский список ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΌΡ‹ Π½Π΅ смоТСм ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ 2 Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π² setMaterial().

mats=[Material.New(),Material.New(),Material.New()]

mats[0].rgbCol=[1.0,1.0,1.0]

mats[1].rgbCol=[0.0,0.0,0.0]

mats[2].rgbCol=[1.0,0.0,0.0]

ob.setMaterials(mats)

ob.colbits=3

txt=ob.getData()

for i in range(len(txt.getText())):

   txt.setMaterial(i,1+i%2)

Π’Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ†ΠΈΡŽ Π½Π° 1. ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ прСдставлСн ΠΊΠ°ΠΊ TextColors.py.


Π’Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π³Ρ€Π°Π½Π΅ΠΉ

Один Π²Π°ΠΆΠ½Ρ‹ΠΉ аспСкт Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΈΠΌΠ΅Π»ΠΈ Π΄Π΅Π»Π° - Ρ†Π²Π΅Ρ‚Π° Π²Π΅Ρ€ΡˆΠΈΠ½. Π’ ΠΌΠ΅ΡˆΠ°Ρ… каТдая Π²Π΅Ρ€ΡˆΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ собствСнный Ρ†Π²Π΅Ρ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹. Π¦Π²Π΅Ρ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ отличаСтся ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ Ρ†Π²Π΅Ρ‚Π° Π²Π΅Ρ€ΡˆΠΈΠ½ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ эффСкты, контролируСтся Ρ„Π»Π°Π³Π°ΠΌΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Ρ†Π²Π΅Ρ‚Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π² ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн Π±ΠΈΡ‚ VColPaint Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° setMode(). Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ этот Ρ€Π΅ΠΆΠΈΠΌ, Ρ†Π²Π΅Ρ‚Π° Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π΄ΠΈΡ„Ρ„ΡƒΠ·Π½Ρ‹ΠΉ (рассСянный) Ρ†Π²Π΅Ρ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ всС ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ способом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ этот Π΄ΠΈΡ„Ρ„ΡƒΠ·Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒΡΡ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ использованиС для Ρ†Π²Π΅Ρ‚ΠΎΠ² Π²Π΅Ρ€ΡˆΠΈΠ½ - это Π·Π°ΠΏΠ΅ΠΊΠ°Π½ΠΈΠ΅ Π΄ΠΎΡ€ΠΎΠ³ΠΈΡ… Π² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ эффСктов, ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ambient occlusion. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ†Π²Π΅Ρ‚Π° Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ быстро, ambient occlusion ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ аппроксимирована этим способом, Π΄Π°ΠΆΠ΅ Π² настройкС Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ Π΄Π²ΠΈΠΆΠΊΠ΅. (Аппроксимирована, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ этом Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π½Π° измСнСния Π² освСщСнии.)

Π¦Π²Π΅Ρ‚Π° Π²Π΅Ρ€ΡˆΠΈΠ½ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Mesh.MCol (основаны Π½Π° ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°Ρ… RGBA) Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ Π³Ρ€Π°Π½ΠΈ col.  Атрибут col являСтся списком, содСрТащим ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ MCol для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π² Π³Ρ€Π°Π½ΠΈ. Π£ Ρ‚Π°ΠΊΠΎΠ³ΠΎ размСщСния проявится смысл, ΠΊΠΎΠ³Π΄Π° Π’Ρ‹ ΠΏΠΎΠΉΠΌΡ‘Ρ‚Π΅, Ρ‡Ρ‚ΠΎ фактичСски ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ связаны с гранями, Π° Π½Π΅ с Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ. Когда Ρ†Π²Π΅Ρ‚Π° Π²Π΅Ρ€ΡˆΠΈΠ½ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹, ΠΎΠ½ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π³Ρ€Π°Π½ΡŒ.

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ Π³Ρ€Π°Π½ΠΈ col Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ мСша Π±Ρ‹Π» установлСн Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ vertexColors Π² Π˜ΡΡ‚ΠΈΠ½Ρƒ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚Π° Π²Π΅Ρ€ΡˆΠΈΠ½ мСша. ΠœΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΈ сСрого Π² зависимости ΠΎΡ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ z Π²Π΅Ρ€ΡˆΠΈΠ½ (Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ).

import Blender

ob=Blender.Scene.getCurrent().objects.active

me=ob.getData(mesh=1)

me.vertexColors=True

for f in me.faces:

   for i,v in enumerate(f.verts):

      g = int(max(0.0,min(1.0,v.co.z))*255)

      f.col[i].r=g

      f.col[i].g=g

      f.col[i].b=g

mats=[Blender.Material.New()]

mats[0].setMode(Blender.Material.Modes['VCOL_PAINT'])

ob.setMaterials(mats)

ob.colbits=1

ob.makeDisplayList()


Blender.Window.RedrawAll()

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ доступСн ΠΊΠ°ΠΊ VertexColors.py.


Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π² Π½Π°ΡˆΡƒ Π³Ρ€Π°Π²ΡŽΡ€Ρƒ

Как послСдний ΡˆΡ‚Ρ€ΠΈΡ… Π² нашСй Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с Π³Ρ€Π°Π²ΡŽΡ€ΠΎΠΉ, ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΄Π²Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°. Один индСкс ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌ Π½Π° повСрхности, ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌ Π² Π²Ρ‹Ρ‚ΠΎΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π²ΠΊΠ°Ρ…. Π­Ρ‚ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ проявлСниС вновь созданной надписи Π½Π° кускС Π²Ρ‹Π²Π΅Ρ‚Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ камня.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ нСсколько ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ Π²Π΅Ρ€ΡˆΠΈΠ½, Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ индСксов ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π±ΡƒΠ΄Π΅Ρ‚ вопросом ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ всСми гранями ΠΈ назначСния Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ Π³Ρ€Π°Π½ΠΈ подходящСго индСкса ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Π»Π΅Π½ΠΎΠΌ ΠΊΠ°ΠΊΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ являСтся Π²Π΅Ρ€ΡˆΠΈΠ½Π°. Ѐункция, показанная Π½ΠΈΠΆΠ΅, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ мСш ΠΈ список рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ индСкс ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π³Ρ€Π°Π½ΡŒ Π² зависимости ΠΎΡ‚ принадлСТности ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½, которая ΠΈΠΌΠ΅Π΅Ρ‚ имя, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΈΠΌ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ индСкса ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π²ΠΎ всС Π³Ρ€ΡƒΠΏΠΏΡ‹ Π²Π΅Ρ€ΡˆΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ всС хвосты ΠΈ сСгмСнты Π³Ρ€ΡƒΠ΄Π½ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ мСша, создаваСмого creepycrawlies.py (ΠΎΠ½ΠΈ всС ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, tail.0, tail.1, , ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅).

Ѐункция доступна Π² Tools.py. Она зависит ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠŸΠΈΡ‚ΠΎΠ½Π° re.search(), которая  сопоставляСт рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ со строкой. ВыдСлСнная строка ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ вставляСм строку рСгулярного выраТСния Π² Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ якоря (^ ΠΈ $). Π­Ρ‚ΠΈΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, aaaa, сопоставится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½ с ΠΈΠΌΠ΅Π½Π΅ΠΌ aaaa, Π° Π½Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ aaaa.0, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ смоТСм Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΈΡ…, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ. Если ΠΆΠ΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ соотвСтствия всСм ΠΈΠΌΠ΅Π½Π°ΠΌ Π³Ρ€ΡƒΠΏΠΏ Π²Π΅Ρ€ΡˆΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с tail, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ tail.* .

РСгулярныС выраТСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ способом сопоставлСния строк. Если Π’Ρ‹ Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Π½ΠΈΠΌΠΈ, Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ   ΠΏΠΎ   ΠΌΠΎΠ΄ΡƒΠ»ΡŽ   ΠŸΠΈΡ‚ΠΎΠ½Π°  re (http://docs.python.org/library/re.html).  ΠœΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с http://wiki.intuit.ru.