Π Π°Π±ΠΎΡΠ° Ρ 3D-ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ Π² 3D max
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ΠΎΠ² ΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π°ΠΌ Π±ΡΠ»Π° Π½ΡΠΆΠ½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Ρ Π΄Π²ΡΠΌΡ ΠΎΡΡΠΌΠΈ — Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΡΡΡ X ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΡΡΡ Y. ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΡΠΊΡΠ°Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π΄Π»Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ Π½Π°ΡΠ°Π»ΠΎ (ΡΠΎΡΠΊΡ 0,0) Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠ°, ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΎΡΠΈ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π Π°Π±ΠΎΡΠ° Ρ 3D-ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ Π² 3D max (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
1. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
2. ΠΠ±Π·ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ
3. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠ±ΡΠ΅ΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ
4. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ 3D ΠΌΠΎΠ΄Π΅Π»ΠΈ
4.1 Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ
4.2. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅
5. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ 3D ΡΡΠ΅Π½Ρ
6. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ 3D ΠΎΠ±ΡΠ΅ΠΊΡΠ°
7. ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ
8. ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
9. Π‘ΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
1.
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ±ΡΠΈΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π² ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΡΡΠ΄Π°, Π½ΠΎ Π΄Π°ΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ Π΅ΡΡΡ ΡΠ°Π½Ρ Π½Π΅ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π½ΡΠΆΠ½ΡΡ Π½Π°ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· Π½ΠΈΡ . Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡΡ, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΠΎΠ³ΠΎΠ΄Π½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½Π΅ΠΌ ΡΠΎΠ½Π΅, Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ Π½Π΅ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠΉ Π½Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠΎΡΡΠΎΠΌΡ Π·Π½Π°Ρ ΡΡΠ΄ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡΠΎΡΠ΅ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. 3D ΡΡΠ΅Π½Π° ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠΠ΄Π΅ Π½Π°ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ°ΠΌΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ΄ΠΎΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠ°ΠΌΠΎΠΉ ΡΡΠ΅Π½Ρ.
2. ΠΠ±Π·ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΠΠ°Π΄Π°ΡΠ° ΡΠΎΡΡΠΎΠΈΡ Π² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ 3D-ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ Π½Π° 3D-ΡΡΠ΅Π½Π΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² Microsoft Vusial C# ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ°ΠΌΠΎΠΉ ΡΡΠ΅Π΄Π΅. Π‘Π°ΠΌΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ Π² Π΄Π°Π½Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΎ ΡΡΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ OpenGL, XNA Game Studio ΠΈ WPF (Windows Presentation Foundation). OpenGL (Open Graphics Library — ΠΎΡΠΊΡΡΡΠ°Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ API) — ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ Π΄Π²ΡΡ ΠΌΠ΅ΡΠ½ΡΡ ΠΈ ΡΡΡΡ ΠΌΠ΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ Π³ΡΠ°ΡΠΈΠΊΡ. ΠΠ° Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅, OpenGL — ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΡΠΎ Π΅ΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΈΡ ΡΠΎΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ — Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π½Π°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΌ, Π³Π΄Π΅ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΡΠ»ΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΡΡΠ° Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠΉΡΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΡΡ (conformance tests — ΡΠ΅ΡΡΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅) ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΊΠ»Π°ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ OpenGL ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π°ΡΡΠΈΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΎΡΡΠ°Π²ΠΈΠ² ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. Windows Presentation Foundation (WPF) — ΡΠΈΡΡΠ΅ΠΌΠ° Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ (ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ) ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° Π² ΡΠΎΡΡΠ°Π²Π΅ .NET Framework (Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.0), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ ΡΠ·ΡΠΊ XAML. Microsoft XNA (Π°Π½Π³Π». XNA’s Not Acronymed) — Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ΅Π΄ΠΎΠΉ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (.NET), ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Microsoft, ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΠΌΠΈ ΠΈΠ³ΡΠ°ΠΌΠΈ. XNA ΡΡΡΠ΅ΠΌΠΈΡΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΠ³Ρ ΠΎΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ «ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠ΅Π³ΠΎΡΡ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°» ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ³Ρ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² XNA Π±ΡΠ» Π°Π½ΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ 24 ΠΌΠ°ΡΡΠ° 2004 Π½Π° Game Developers Conference Π² Π‘Π°Π½-Π₯ΠΎΡΠ΅, ΠΠ°Π»ΠΈΡΠΎΡΠ½ΠΈΡ. ΠΠ΅ΡΠ²ΡΠΉ Community Technology Preview XNA Build Π±ΡΠ» Π²ΡΠΏΡΡΠ΅Π½ 14 ΠΌΠ°ΡΡΠ° 2006.
ΠΠ΅ΡΠ²Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π΄ΡΠ΅Π²Π½ΡΡ ΠΈΠ· ΡΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»Π°ΡΡ ΠΏΠΎΠ΄ Π‘++. Π‘ΡΠ°Π²Π½ΠΈΠ²Π°Ρ Π΄Π²Π΅ ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Ρ ΠΏΡΠΈΡΠ΅Π» ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ, ΡΡΠΎ XNA Studio Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π΅Π½ Π² ΠΏΠΎ ΡΡΠ΄Ρ ΠΏΡΠΈΡΠΈΠ½. Π ΠΏΠ»Π°Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ Ρ 3D-ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ, Π»Π΅Π³ΠΊΠΎΡΡΠΈ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
3. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠ±ΡΠ΅ΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅:
Π ΠΈΡ. 1. ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΡ ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ Π²ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° ΡΡΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π±Π»ΠΎΠΊΠ°. Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎΡΠ»Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π°Π½Π½ΡΡ . Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π±Π»ΠΎΠΊ ΡΡΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π½Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. ΠΠ»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²ΡΠ΅ ΡΡΠΈ Π±Π»ΠΎΠΊΠ° Π·Π°ΡΠΈΠΊΠ»Π΅Π½Ρ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π²Π²ΠΎΠ΄ΠΈΠΌ.
ΠΡΠ»ΠΈ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡ Π²ΡΠ΅ Π±Π»ΠΎΠΊΠΈ, ΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° (Π’Π°Π±Π». 1).
Π’Π°Π±Π»ΠΈΡΠ° 1. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ | ΠΠ° ΡΡΠ°ΠΏΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈ Π·Π²ΡΠΊΠΎΠ²ΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ, ΡΠΈΡΡΠ΅ΠΌΡ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ . | |
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ΅ΡΡΡΡΠΎΠ² | ΠΠ΄Π΅ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΡΠ΅ΡΡΡΡΡ, ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ ΡΠ΅ΠΊΡΡΡΡΡ ΠΈ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π·Π²ΡΠΊΠΈ, ΡΡΠΈΡΡΡ. | |
ΠΠ°ΡΠ°Π»ΠΎ ΡΠΈΠΊΠ»Π° | ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΠΊΠ»Π°. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΠΈΠΊΠ» — ΡΡΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ 3Π΄-ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ. | |
Π‘ΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° | ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ² Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ . Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ — ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΠΈ ΠΌΡΡΡ. ΠΠ΄Π΅ΡΡ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠ°Ρ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ² Π²Π²ΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ — ΠΎΡ Π΄ΠΆΠΎΠΉΡΡΠΈΠΊΠ°. | |
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΡ | ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ Π²ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π·Π΄Π΅ΡΡ ΠΎΠ±ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΏΡΠΎΠ²ΠΎΠ΄ΡΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎΠ± ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ ΡΠ°ΠΊΠ°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π° Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΡΡ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π°. | |
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΡΠΈΡΠ΅ΡΠΈΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ | Π¦ΠΈΠΊΠ» ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅ΠΌ ΠΎΡΡΠ°Π½ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ°, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠΈΠ» ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. | |
ΠΡΠ²ΠΎΠ΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°Π½ΠΈΠ΅ Π·Π²ΡΠΊΠΎΠ² | ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°ΠΏΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΈΠΌΠ΅ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π½ΠΎΠ²ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ Π½Π° 3Π΄-ΡΡΠ΅Π½Π΅, ΠΎ Π·Π²ΡΠΊΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ. ΠΠ° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ 3Π΄-ΡΡΠ΅Π½Π΅, Π²ΡΠ²ΠΎΠ΄ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°Π½ΠΈΠ΅ Π·Π²ΡΠΊΠ°. | |
ΠΠΎΠ½Π΅Ρ ΡΠΈΠΊΠ»Π° | Π¦ΠΈΠΊΠ» Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. | |
ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² | ΠΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ², Π·Π°Π½ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΈ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· Π΅Π΅. | |
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠ°Π½Π½Π΅Π΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΡΠ΄ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
Game1() — ΠΠ±ΡΠ°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. Game1() — ΡΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° Game1, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Game Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ Main ΡΠ°ΠΉΠ»Π° Program.cs.
Initialize () — ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. Π‘ΡΠ΄Π° ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ³ΡΡ. ΠΠ°Π΄ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π²ΡΠ΅, ΠΊΡΠΎΠΌΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈΠ³ΡΡ
LoadContent () — ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ΅ΡΡΡΡΠΎΠ².
Run () — ΠΠ°ΠΏΡΡΠΊ ΡΠΈΠΊΠ»Π°.
Π¦ΠΈΠΊΠ» Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
Update () — ΠΠ΅ΡΠ²ΡΠΉ ΠΈΠ· Π½ΠΈΡ — ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Update (), Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅Π² ΠΎΡΡΠ°Π½ΠΎΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Draw () — ΠΡΠΎΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΠΊΠ»Π° — ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Draw (), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠ΄ Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ.
UnloadContent () — ΠΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΈ ΡΠΈΠΊΠ»Π° ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ°Π±ΠΎΡΠ° Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΡΠΎΡΠ°Π΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ. Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΡΠ°Π»ΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π·Π°Π΄Π°ΡΡ.
4. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ 3D ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΠΎΠ½ΡΡΠΈΠ΅ 3D ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΠΏΠΎΠ΄ ΡΠΎΠ±ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. Π ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½Π°Π΄ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. Π ΠΏΠΎΡΠ»Π΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ «ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅».
4.1 Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ΠΎΠ² ΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π°ΠΌ Π±ΡΠ»Π° Π½ΡΠΆΠ½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Ρ Π΄Π²ΡΠΌΡ ΠΎΡΡΠΌΠΈ — Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΡΡΡ X ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΡΡΡ Y. ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΡΠΊΡΠ°Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π΄Π»Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ Π½Π°ΡΠ°Π»ΠΎ (ΡΠΎΡΠΊΡ 0,0) Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠ°, ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΎΡΠΈ X ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΡΠΏΡΠ°Π²Π° ΠΎΡ Π½Π°ΡΠ°Π»Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΎΡΠΈ Y — ΡΠ½ΠΈΠ·Ρ.
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΠΎΡΡ — ΠΎΠ½Π° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΡΡ Z. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΏΡΠ°Π²ΠΎΡΡΠΎΡΠΎΠ½Π½ΡΡ ΠΈ Π»Π΅Π²ΠΎΡΡΠΎΡΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠ°Π²ΠΎΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ — ΠΎΠ½Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² XNA Framework. ΠΡ ΡΡ Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π½Π° ΡΠΈΡ. 2
Π ΠΈΡ. 2. ΠΡΠ°Π²ΠΎΡΡΠΎΡΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π°ΡΠ°Π»ΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Ρ Π»Π΅Π²ΡΠΌ Π½ΠΈΠΆΠ½ΠΈΠΌ ΡΠ³Π»ΠΎΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠ°, ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΎΡΠΈ X Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠΏΡΠ°Π²Π° ΠΎΡ Π½Π°ΡΠ°Π»Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΎΡΠΈ Y — ΡΠ²Π΅ΡΡ Ρ, Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΎΡΠΈ Z — ΡΠΏΠ΅ΡΠ΅Π΄ΠΈ. Π ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π²ΠΈΠ΄ΠΈΠΌΠ°Ρ ΡΠ°ΡΡΡ ΠΎΡΠΈ Z — ΡΡΠΎ Π΅Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ. ΠΡΠ° ΡΠ°ΡΡΡ ΠΎΡΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΊΠ°ΠΊ Π±Ρ «Π² Π³Π»ΡΠ±ΠΈΠ½Π΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠ°», Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ «ΡΠΏΠ΅ΡΠ΅Π΄ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠ°». ΠΠ° ΡΠΈΡ. 2. ΠΏΡΠ½ΠΊΡΠΈΡΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΎΡΠΈ Z.
Π Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΡΠΎΡΠΊΠΈ — Π΅Π΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π·Π°Π΄Π°ΡΡΡΡ Π΄Π²ΡΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ — X ΠΈ Y. Π’ΠΎΡΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π² ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ — ΠΎΠ½ΠΈ Π·Π°Π΄Π°ΡΡΡΡ ΡΠΆΠ΅ ΡΡΠ΅ΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ — X, Y, Z.
Π’ΠΎΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² (ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ²), Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ — ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ². Π’Π°ΠΊ, ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ Π½Π° ΡΠΈΡ. 2., Π·Π°Π΄Π°Π½ ΡΡΠ΅ΠΌΡ ΡΠΎΡΠΊΠ°ΠΌΠΈ — A, B, C.
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΡΠΎΡΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ· ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ².
Π ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅, ΠΊΠ°ΠΊ Π³ΡΠ°Π½Ρ (face). ΠΡΠΎ — ΠΏΠ»ΠΎΡΠΊΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡΠΈΠ½. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ — ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π³ΡΠ°Π½Ρ. ΠΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ»ΠΎΡΠΊΠΈΡ Π³ΡΠ°Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±ΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΌΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ — ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΎΠ½Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ. Π’ΠΎΡΠΊΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠ½Π°ΠΌ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π² ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅, Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ. Π Π°Π±ΠΎΡΠ°Ρ Ρ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ Π² XNA Π²Π°ΠΌ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΡΡΠ΅ΡΠ°ΡΡ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ»ΠΎΠ²Π° Π²Π΅ΡΡΠΈΠ½Π° — vertex. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ Π²ΡΡΡΠ΅ΡΠΈΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠ»ΠΎΠ²Π° Π²Π΅ΡΡΠΈΠ½Π°: «Π²Π΅ΡΡΠΈΠ½Ρ» Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΠΎ-Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ ΠΊΠ°ΠΊ «vertices». ΠΠ½ΠΎΠ³Π΄Π° Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΠ°Π»ΡΠΊΡ Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ — Π²Π΅ΡΡΠ΅ΠΊΡ.
Π’ΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π½Π΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠ³ΡΡΡ — Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ — ΡΡΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠΏΡΠΊΠ»ΡΠΌ, Π²ΠΎ-Π²ΡΠΎΡΡΡ — Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΡΡΠΈ ΡΠΎΡΠΊΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Π»ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ. Π’ΠΎ Π΅ΡΡΡ, ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ — ΡΡΠΎ ΡΠΈΠ³ΡΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠΏΡΠΊΠ»ΠΎΠΉ ΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΠΉ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ ΡΡΠΏΠ΅Ρ ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠ΅Π»ΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ.
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π³ΡΠ°Π½Π΅ΠΉ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠΎΠΈΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ΅ΡΠΊΠΎΠΉ (mesh). «Π‘Π΅ΡΠΊΠ°» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ².
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ Π²Π°ΠΌ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ — ΡΡΠΎ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π²Π΅ΠΊΡΠΎΡΠ°. ΠΠ΅ΠΊΡΠΎΡ (vector), ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΡΠΎΡΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΡΠ΅ΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π½Π΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅, Π° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ.
ΠΠ΅ΠΊΡΠΎΡ ΠΈΠΌΠ΅Π΅Ρ Π½Π°ΡΠ°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ, Π΄Π»Ρ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ Π½Π°ΡΠ°Π»Π° ΠΈ ΠΊΠΎΠ½ΡΠ° Π²Π΅ΠΊΡΠΎΡΠ°, ΡΠΎ Π΅ΡΡΡ, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠΆΠ΅ ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΈΠ½ΡΡΡ Π·Π° Π½Π°ΡΠ°Π»ΠΎ Π²Π΅ΠΊΡΠΎΡΠ° Π½Π°ΡΠ°Π»ΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ (ΡΠΎΡΠΊΡ 0,0,0) — ΡΠΎΠ³Π΄Π° Π΄Π»Ρ Π΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Ρ Π²Π°ΡΠΈΡ ΠΈ ΡΡΠ΅Ρ ΡΠΎΡΠ΅ΠΊ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π΅ΠΊΡΠΎΡ Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ (1,0,0) ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ: «Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ — Π²ΠΏΡΠ°Π²ΠΎ, ΡΠΊΠΎΡΠΎΡΡΡ — 1». ΠΡΠ»ΠΈ ΠΎΡΠ»ΠΎΠΆΠΈΡΡ ΡΡΠΎΡ Π²Π΅ΠΊΡΠΎΡ ΠΎΡ Π½Π°ΡΠ°Π»Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, ΡΠΎ Ρ ΠΎΡΠΎΡΠΎ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΎΠ½ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²ΠΏΡΠ°Π²ΠΎ (ΡΠΈΡ. 3.).
ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡΠΎΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠΎΡΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ — ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ° Π²Π΅ΠΊΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π°Π΄Π°Π΅ΡΡΡ Π²Π΅ΠΊΡΠΎΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΡΠ°Π»Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ), Π° ΡΠΊΠΎΡΠΎΡΡΡ — Π΄Π»ΠΈΠ½ΠΎΠΉ Π²Π΅ΠΊΡΠΎΡΠ° — ΡΠΎ Π΅ΡΡΡ — ΡΠ°Π·Π½ΠΈΡΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π»ΠΈΠ½Π° Π²Π΅ΠΊΡΠΎΡΠ° ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ°.
Π ΠΈΡ. 3. ΠΠ΅ΠΊΡΠΎΡ (1,0,0)
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΡΠΎΠ±ΡΠΉ Π²ΠΈΠ΄ Π²Π΅ΠΊΡΠΎΡΠΎΠ² — Π½ΠΎΡΠΌΠ°Π»ΠΈ (normals). ΠΠΎΡΠΌΠ°Π»ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ Π΄Π»Ρ Π³ΡΠ°Π½Π΅ΠΉ ΠΈ Π΄Π»Ρ Π²Π΅ΡΡΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠΎΡΠΌΠ°Π»ΠΈ Π΄Π»Ρ Π³ΡΠ°Π½Π΅ΠΉ ΠΏΠ΅ΡΠΏΠ΅Π½Π΄ΠΈΠΊΡΠ»ΡΡΠ½Ρ ΡΡΠΈΠΌ Π³ΡΠ°Π½ΡΠΌ. ΠΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΈ ΡΠ°ΡΡΠ΅ΡΠ΅ ΡΠ²Π΅ΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
4.2 ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΠ½Π°Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ², ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π΅Π³ΠΎ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅. Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅. ΠΡΠΎ — ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ (translation), Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ (rotation) ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (scale).
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΠΌ ΡΠΊΡΠ°Π½Π΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠ° — ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½Π°Ρ ΡΡΠ΅Π½Π° ΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΡΡΡ Π½Π° Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡ. ΠΡΠΈ ΠΏΡΠΎΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΎΡΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΠ»Ρ ΠΊΠ°ΠΌΠ΅ΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ Π²ΠΈΠ΄Π΅ΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ. ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌ ΡΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ°ΡΡΠΈΡ. ΠΡΠΎ — ΠΌΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° (World Matrix), ΠΌΠ°ΡΡΠΈΡΠ° Π²ΠΈΠ΄Π° (View Matrix) ΠΈ ΠΌΠ°ΡΡΠΈΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ (Projection Matrix).
ΠΠ°ΡΡΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°Π±Π»ΠΈΡΡ, ΡΠΎΡΡΠΎΡΡΠ΅ΠΉ ΠΈΠ· m ΡΡΡΠΎΠΊ ΠΈ n ΡΡΠΎΠ»Π±ΡΠΎΠ². Π ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ 4×4. ΠΠ΅ΡΠ²ΡΡ ΡΡΠΈ ΡΡΠΎΠ»Π±ΡΠ° ΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ X, Y, Z Π²Π΅ΡΡΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΡΠ°ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π² ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
ΠΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ — ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ, Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΠ°ΡΡΠΈΡΠ° Π²ΠΈΠ΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΠ°ΠΌΠ΅ΡΠΎΠΉ.
ΠΠ°ΡΡΠΈΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ΅Π½Ρ Π½Π° ΡΠΊΡΠ°Π½.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, Π·Π°Π΄Π°Π½Π½ΡΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ (ΡΠ°Π±Π». 2.).
Π’Π°Π±Π»ΠΈΡΠ° 2. ΠΠ΅ΡΡΠΈΠ½Ρ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π΄ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ | ||||
ΠΠ΅ΡΡΠΈΠ½Π° | X | Y | Z | |
ΠΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π½Π° 10 ΠΏΠΎΠ·ΠΈΡΠΈΠΉ ΠΏΠΎ ΠΎΡΠΈ X ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠ±Π°Π²ΠΈΡΡ ΠΏΠΎ 10 ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ X Π΅Π³ΠΎ Π²Π΅ΡΡΠΈΠ½. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΌΠ°ΡΡΠΈΡΠ° ΡΠ°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° (ΡΠ°Π±Π». 3.).
Π’Π°Π±Π»ΠΈΡΠ° 3. ΠΠ΅ΡΡΠΈΠ½Ρ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ | ||||
ΠΠ΅ΡΡΠΈΠ½Π° | X | Y | Z | |
Π’ΠΎΠ³ΠΎ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡΠΈΡΡ, ΡΠΌΠ½ΠΎΠΆΠΈΠ² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π²Π΅ΡΡΠΈΠ½ Π½Π° ΠΌΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΡΠΈΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΡΡ, ΡΠΎΡΡΠΎΡΡΠ΅ΠΉ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΠ΅ΡΡΡΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠΎΠ². Π ΠΏΠ΅ΡΠ²ΡΡ ΡΡΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ X, Y, Z, Π² ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΌ — 1. ΠΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π² Π²ΠΈΠ΄Π΅ ΡΠ°Π±Π»ΠΈΡΡ 4×4. ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ (ΡΠΎΡΠΌΡΠ»Π° 1.):
Π€ΠΎΡΠΌΡΠ»Π° 1. Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ Π²Π΅ΡΡΠΈΠ½Ρ ΠΈ ΠΌΠΈΡΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· Π²Π΅ΡΡΠΈΠ½ ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΡΡΡ Π½Π° ΠΌΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΡΠΈΡΡ.
ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡΠΎΠ±ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΠΈΡΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ. Π ΡΠΎΡΠΌΡΠ»Π΅ 2. ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΠ°Π±Π»ΠΎΠ½ ΠΌΠΈΡΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅.
Π€ΠΎΡΠΌΡΠ»Π° 2. ΠΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
ΠΠ΄Π΅ΡΡ ΠX, ΠY ΠΈ ΠZ — ΡΡΠΎ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ X, Y ΠΈ Z.
ΠΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π΄Π»Ρ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π²ΠΎΠΊΡΡΠ³ ΠΎΡΠΈ Π₯ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ (ΡΠΎΡΠΌΡΠ»Π° 3.).
Π€ΠΎΡΠΌΡΠ»Π° 3. ΠΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π΄Π»Ρ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΎΡΠΈ
ΠΠ΄Π΅ΡΡ Π± — ΡΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° Π² ΡΠ°Π΄ΠΈΠ°Π½Π°Ρ ΠΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π΄Π»Ρ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ ΠΎΡΠΈ Y Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ (ΡΠΎΡΠΌΡΠ»Π° 4.)
Π€ΠΎΡΠΌΡΠ»Π° 4. ΠΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π΄Π»Ρ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΎΡΠΈ
ΠΠ°ΡΡΠΈΡΠ° Π΄Π»Ρ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π²ΠΎΠΊΡΡΠ³ ΠΎΡΠΈ Z ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π² ΡΠΎΡΠΌΡΠ»Π΅ 5.
Π€ΠΎΡΠΌΡΠ»Π° 5. ΠΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π΄Π»Ρ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΎΡΠΈ Z
Π€ΠΎΡΠΌΡΠ»Π° 6. ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Ρx, Ρy, Ρz — ΡΡΠΎ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ Π²Π΅ΡΡΠΈΠ½Π°ΠΌ. ΠΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ «ΡΠΆΠΈΠΌΠ°ΡΡ» ΠΈΠ»ΠΈ «ΡΠ°ΡΡΡΠ³ΠΈΠ²Π°ΡΡ» ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΡΡΠ³ΠΈΠ΅ ΡΠΈΠΏΡ ΠΌΠ°ΡΡΠΈΡ:
ΠΠ°ΡΡΠΈΡΠ° Π²ΠΈΠ΄Π° Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅ΡΡ — ΡΠΎΡΠΊΠΈ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ΅Π½Ρ.
ΠΠ°ΡΡΠΈΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ΅Π½Ρ Π½Π° ΡΠΊΡΠ°Π½. Π XNA ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΉ.
ΠΠ΅ΡΠ²ΡΠΉ — ΡΡΠΎ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ (Perspective projection). Π ΡΡΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ ΠΈΡ Π²ΠΈΠ΄Π΅ΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΌΠΈΡΠ΅. ΠΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π΄Π°Π»ΡΡΠ΅, ΠΊΠ°ΠΆΡΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ Π±Π»ΠΈΠΆΠ΅.
ΠΡΠΎΡΠΎΠΉ Π²ΠΈΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ — ΡΡΠΎ ΠΎΡΡΠΎΠ³ΠΎΠ½Π°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ. ΠΠ΄Π΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ΅ΡΠΈΡΡΡΡΡΡ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ ΡΠΊΡΠ°Π½Π° Π±Π΅Π· ΡΡΠ΅ΡΠ° ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ.
5. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ 3D ΡΡΠ΅Π½Ρ Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Π½Π΅ΠΉ Π² XNA. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅Π½ΡΠΌΠΈ, ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΠ΅Π½Π΅ΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° ΡΡΠ°ΡΠ°ΡΠ΅ΡΠΎΠ², ΠΈΠ»ΠΈ, ΠΏΠΎ-Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ — Stencil Buffer.
Stencil Buffer ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ, Π²Ρ ΠΎΠ΄ΡΡΠΈΠΌ Π² ΡΠΎΡΡΠ°Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ, ΠΏΠ΅ΡΠ΅Π΄ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Π±ΡΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π½ΠΈ ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ CreateShadow ΠΎΠ±ΡΠ΅ΠΊΡΠ° Matrix. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅Π½Ρ ΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠ΅Π½Ρ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π½Π°Π½Π° ΠΌΠ°ΡΡΠΈΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ΅Π½Ρ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π½ΠΈ. ΠΡΠΈΡΠ΅ΠΌ, ΡΠ΅Ρ Π½ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΊΠΎΠ²Π°: ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠ²Π΅ΡΡΠΈ ΡΡΠ΅Π½Ρ, ΠΎΡΠ²Π΅ΡΠ΅Π½Π½ΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π½ΡΠΆΠ½ΠΎ, ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π°ΡΡΡΠΎΠΈΡΡ Π±ΡΡΠ΅Ρ ΡΡΠ°ΡΠ°ΡΠ΅ΡΠΎΠ² ΠΈ Π²ΡΠ²Π΅ΡΡΠΈ ΡΡ ΠΆΠ΅ ΡΡΠ΅Π½Ρ Π±Π΅Π· ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ, ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π² ΠΌΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ΅Π½ΠΈ.
Π ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΡΠ²Π΅ΡΠ°. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΎΠ΄ΠΈΠ½ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ²Π΅ΡΠ°, Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»Π°Π²ΠΈΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ — ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° Z ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»Π°Π²ΠΈΡ-Z ΠΈ X, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° X — Π‘ ΠΈ V, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° Y — B ΠΈ N. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ Π²Π»ΠΈΡΠ΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π½ΠΎ ΠΈ Π½Π° ΡΠ΅Π½Ρ.
6. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ 3D ΠΎΠ±ΡΠ΅ΠΊΡΠ° modCls, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΈ Π·Π° ΠΈΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
public class modCls: Microsoft.Xna.Framework.DrawableGameComponent
{
//ΠΠΎΠ΄Π΅Π»Ρ
public Model myModel;
//ΠΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ°, ΠΌΠ°ΡΡΠΈΡΡ Π²ΠΈΠ΄Π° ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ
publicMatrix WorldMatrix;
publicMatrix ViewMatrix;
publicMatrix ProjectMatrix;
//ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ°
public Vector3 LightDirection;
//ΠΠ°ΡΡΠΈΡΠ° Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π½ΠΈ
Matrix shadow;
//ΠΠ»ΠΎΡΠΊΠΎΡΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΠ΅Π½Ρ
Plane sPlane;
//Π‘ΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½ ΡΠΊΡΠ°Π½Π°
publicfloat aspectRatio;
//ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ
GraphicsDeviceManager graphics;
//ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄
//ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΠΊΠ»Π°ΡΡ, ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ
public modCls (Game game, Model mod, GraphicsDeviceManager grf, Plane pl)
base (game)
{
myModel = mod;
graphics = grf;
sPlane = pl;
aspectRatio = (float)graphics.GraphicsDevice.Viewport.Width /
(float)graphics.GraphicsDevice.Viewport.Height;
LightDirection = new Vector3();
}
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π±Π°Π·Ρ ΠΊΠΎΡΠΎΡΠ°Ρ Ρ ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ± ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ. ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Π²ΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½ ΡΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Draw ()
public override void Draw (GameTime gameTime)
{
//ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ
foreach (ModelMesh mesh in myModel. Meshes)
{
//ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° Π² ΡΠ΅ΡΠΈ
foreach (BasicEffecteffect in mesh. Effects)
{
//ΠΠΊΠ»ΡΡΠΈΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° № 0
effect.DirectionalLight0.Enabled = true;
//ΠΠ°ΡΡΡΠΎΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
effect.DirectionalLight0.DiffuseColor = Vector3. One;
effect.DirectionalLight0.SpecularColor = Vector3. One;
//ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° — Π² ΠΊΠ»Π°ΡΡΠ° Game1 ΠΌΡ ΠΌΠ΅Π½ΡΠ΅ΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅
//ΠΏΠΎ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ
effect.DirectionalLight0.Direction = Vector3. Normalize (LightDirection);
effect.LightingEnabled = true;
//ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΌΠ°ΡΡΠΈΡΡ
effect.World = WorldMatrix;
effect.View = ViewMatrix;
effect.Projection = ProjectMatrix;
}
mesh.Draw ();
}
//Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ΅Π½ΠΈ
shadow = Matrix. CreateShadow (-LightDirection, sPlane);
graphics.GraphicsDevice.DepthStencilState = DepthStencilState. Default;
graphics.GraphicsDevice.BlendState = BlendState. Opaque;
//ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π½Ρ
foreach (ModelMesh mesh in myModel. Meshes)
{
foreach (BasicEffecteffect in mesh. Effects)
{
effect.AmbientLightColor = Vector3. Zero;
effect.Alpha = 0.5f;
effect.DirectionalLight0.Enabled = false;
effect.DirectionalLight1.Enabled = false;
effect.DirectionalLight2.Enabled = false;
effect.View = ViewMatrix;
effect.Projection = ProjectMatrix;
//ΠΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ ΡΠ΅Π½ΠΈ ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ ΠΌΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΡΠΈΡΡ
//Π½Π° ΠΌΠ°ΡΡΠΈΡΡ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π½ΠΈ
effect.World = WorldMatrix*shadow;
}
mesh.Draw ();
}
base.Draw (gameTime);
}
ΠΠΎΡΠ»Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅.
GraphicsDeviceManager graphics;
//ΠΠ°ΡΡΠΈΡΡ
Matrix viewMatrix;
Matrix projMatrix;
const int shadowMapWidthHeight = 2048;
//ΠΠΎΠ΄Π΅Π»ΠΈ
Model ball, cube, ball2;
// ΠΠΎΠ·ΠΈΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΠΎΠ²ΠΎΡΠΎΡ
Vector3avatarPosition = new Vector3(0, -1f, -50);
float avatarlRotation;
//ΠΠ°ΡΡΠΈΠ² ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΡΡΠ΅Π½Ρ
modCls[] cls;
//ΠΠ³ΡΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
modCls ballObj;
//ΠΠ»ΠΎΡΠΊΠΎΡΡΡ
modCls plane;
//ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ°
Vector3 LightDirection;
BoundingFrustum cameraFrustum = new BoundingFrustum (Matrix.Identity);
// ΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅ΡΡ
Vector3 cameraReference = new Vector3(0, 0, 10);
Vector3 thirdPersonReference = new Vector3(0, 200, -200);
// Π‘ΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ
float rotationSpeed = 1f / 60f;
float forwardSpeed = 50f / 60f;
//ΠΠΎΠ»Π΅ Π·ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΌΠ΅ΡΡ
float viewAngle = MathHelper. ToRadians (45.0f);
//Π Π°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡ ΠΊΠ°ΠΌΠ΅ΡΡ Π΄ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π½Π΅Π³ΠΎ ΠΈ Π·Π°Π΄Π½Π΅Π³ΠΎ ΠΏΠ»Π°Π½Π°
float nearClip = 1.0f;
float farClip = 2000.0f;
// Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΊΠ°ΠΌΠ΅ΡΡ 2 — Π²ΠΈΠ΄ ΠΎΡ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ Π»ΠΈΡΠ°
//1 — ΠΎΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π»ΠΈΡΠ°
int cameraState = 2;
//Π‘ΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½ ΡΠΊΡΠ°Π½Π°
float aspectRatio;
ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π±Π°Π·Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.
protected override void LoadContent ()
{
//ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
ball = Content. Load («ball»);
cube = Content. Load («cube»);
ball2 = Content. Load («ball2»);
aspectRatio = (float)graphics.GraphicsDevice.Viewport.Width /
(float)graphics.GraphicsDevice.Viewport.Height;
cls = new modCls[75];
LightDirection = new Vector3(80, -136, 80);
}
ΠΠ΅ΡΠΎΠ΄ ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΡΠ²Π΅ΡΠ°. ΠΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎ ΠΎΡΠΈ Z ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ Z ΠΈ X (ΠΏΠ΅ΡΠ²Π°Ρ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ, Π²ΡΠΎΡΠ°Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ), ΠΎΡΡ XC ΠΈ V, ΠΎΡΡ YB ΠΈ N.
//ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΡΠ²Π΅ΡΠ°
void LightSourceControl ()
{
//ΠΠΎΠ»ΡΡΠΈΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
KeyboardState key = Keyboard. GetState ();
//ΠΠ»Π°Π²ΠΈΡΠ° z — ΡΠΌΠ΅Π½ΡΡΠΈΠΌ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΏΠΎ Z
if (key.IsKeyDown (Keys.Z))
{
LightDirection.Z -= 0.5f;
}
//ΠΠ»Π°Π²ΠΈΡΠ° x — ΡΠ²Π΅Π»ΠΈΡΠΈΠΌ Z
if (key.IsKeyDown (Keys.X))
{
LightDirection.Z += 0.5f;
}
//c — ΡΠΌΠ΅Π½ΡΡΠΈΠΌ X
if (key.IsKeyDown (Keys.C))
{
LightDirection.X -= 0.5f;
}
//" v" - ΡΠ²Π΅Π»ΠΈΡΠΈΠΌ X
if (key.IsKeyDown (Keys.V))
{
LightDirection.X += 0.5f;
}
//" b" - ΡΠ²Π΅Π»ΠΈΡΠΈΠΌ Y
if (key.IsKeyDown (Keys.B))
{
LightDirection.Y += 0.5f;
}
//" n" - ΡΠΌΠ΅Π½ΡΡΠΈΠΌ Y
if (key.IsKeyDown (Keys.N))
{
LightDirection.Y -= 0.5f;
}
//ΠΡΠ²Π΅Π΄Π΅ΠΌ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ
this.Window.Title = «Light source: «+ LightDirection. ToString ();
}
ΠΠ° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ UpdateAvatarPosition (). Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΡΡΠ΅Π»ΠΊΠ°ΠΌΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠ΅ Π½Π° ΠΊΠ»Π°Π²ΠΈΡΡ Π²ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠ»ΠΈ Π½Π°Π·Π°Π΄ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ. Π ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡ Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡΠ°Π²ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠΎΠ²ΠΎΡΠΎΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΈ Y.
//ΠΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
void UpdateAvatarPosition ()
{
KeyboardState keyboardState = Keyboard. GetState ();
//ΠΠΎΠ²ΠΎΡΠΎΡ Π²Π»Π΅Π²ΠΎ
if (keyboardState.IsKeyDown (Keys.Left))
{
avatarlRotation += rotationSpeed;
}
//ΠΠΎΠ²ΠΎΡΠΎΡ Π²ΠΏΡΠ°Π²ΠΎ
if (keyboardState.IsKeyDown (Keys.Right))
{
avatarlRotation -= rotationSpeed;
}
//ΠΠ²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΏΠ΅ΡΠ΅Π΄
if (keyboardState.IsKeyDown (Keys.Up))
{
Matrix forwardMovement = Matrix. CreateRotationY (avatarlRotation);
Vector3 v = new Vector3(0, 0, forwardSpeed);
v = Vector3. Transform (v, forwardMovement);
avatarPosition.Z += v. Z;
avatarPosition.X += v. X;
while (IsCollide ())
{
avatarPosition.Z -= v. Z;
avatarPosition.X -= v. X;
}
}
//ΠΠ²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Π·Π°Π΄
if (keyboardState.IsKeyDown (Keys.Down))
{
Matrix forwardMovement = Matrix. CreateRotationY (avatarlRotation);
Vector3 v = new Vector3(0, 0, -forwardSpeed);
v = Vector3. Transform (v, forwardMovement);
avatarPosition.Z += v. Z;
avatarPosition.X += v. X;
while (IsCollide ())
{
avatarPosition.Z -= v. Z;
avatarPosition.X -= v. X;
}
}
//Π£ΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ³Π»Π° ΠΎΠ±Π·ΠΎΡΠ° ΠΊΠ°ΠΌΠ΅ΡΡ
if (keyboardState.IsKeyDown (Keys.R))
{
viewAngle -= MathHelper. ToRadians (1.0f);
}
//Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ³Π»Π° ΠΎΠ±Π·ΠΎΡΠ° ΠΊΠ°ΠΌΠ΅ΡΡ
if (keyboardState.IsKeyDown (Keys.F))
{
viewAngle += MathHelper. ToRadians (1.0f);
}
//ΠΡΠ»ΠΈ Π½ΠΎΠ²ΡΠΉ ΡΠ³ΠΎΠ» ΠΎΠ±Π·ΠΎΡΠ° Π²ΡΡΠ΅Π» Π·Π° Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄Π΅Π»Ρ
//ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ
if (viewAngle > MathHelper. ToRadians (180.0f)) viewAngle = MathHelper. ToRadians (179.9f);
if (viewAngle < MathHelper. ToRadians (0.9f)) viewAngle = MathHelper. ToRadians (1f);
// ΠΡΡ ΠΎΠ΄ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠ΅ Esc.
if (keyboardState.IsKeyDown (Keys.Escape))
{
Exit ();
}
}
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π±ΡΠ»Π΅Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠ΅ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
bool IsCollide ()
{
//ΠΠ»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° BoundingSphere, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ
//ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ΅Π½Ρ
BoundingSphere b1;
//ΠΠΎΠ»ΡΡΠΈΡΡ BoundingSphere Π΄Π»Ρ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
BoundingSphere b = ball. Meshes[0]. BoundingSphere;
//Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅Π½ΡΡ ΡΡΠ΅ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ
//ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
b.Center =avatarPosition;
//ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²Π΅ΠΊΡΠΎΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ
Vector3 scale;
//ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ
Quaternion rotation;
//ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ
Vector3 translation;
//Π¦ΠΈΠΊΠ» ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠ΅Π½Ρ
for (int i = 0; i < 75; i++)
{
//ΠΠΎΠ»ΡΡΠΈΡΡ BoundingBox Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
b1 =cls[i]. myModel. Meshes[0].BoundingSphere;
//ΠΠΎΠ»ΡΡΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ — ΡΠ°Π·ΠΌΠ΅Ρ, ΠΏΠΎΠ²ΠΎΡΠΎΡ, ΠΏΠΎΠ·ΠΈΡΠΈΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
cls[i]. WorldMatrix. Decompose (out scale, out rotation, out translation);
//Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
b1.Center = translation;
//ΠΡΠ»ΠΈ ΡΡΠ΅ΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
if (b1.Intersects (b))
{
//ΠΠΎΠ·Π²ΡΠ°ΡΠΈΠΌ True
return true;
}
} //ΠΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ ;
//ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π½Π΅ Π±ΡΠ»ΠΎ
//ΠΈ Π²Π΅ΡΠ½Π΅ΠΌ false
return false;
}
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ Π·Π° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΉ ΡΡΠ΅Π½Ρ ΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
//ΠΡΠ²ΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠ΅Π½Ρ
void DrawScene ()
{
Components.Clear ();
int i = 0;
//ΠΠ½Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π½Π° ΡΠΊΡΠ°Π½
//Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΅Π½Ρ Π±ΡΠ»Π° Π²ΠΈΠ΄Π½Π°
Plane pl1 = new Plane (new Vector3(0, -2f, 0), new Vector3(2, -2f, 1), new Vector3(-1, -2f, -2));
//ΠΡΠ²Π΅ΡΡΠΈ ΠΊΡΠ±Ρ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π² ΠΏΡΡΡ ΡΡΠ΄ΠΎΠ²
//ΠΏΠΎ ΠΏΡΡΡ ΡΡΡΠΊ Π² ΡΡΠ΅Ρ ΡΡΠΎΠ²Π½ΡΡ
for (int x = 0; x < 5; x++)
{
for (int y = 0; y < 3; y++)
{
for (int z = 0; z < 5; z++)
{
//ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΠΌΠ°ΡΡΠΈΠ² Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
cls[i] = new modCls (this, ball2, graphics, pl1);
//Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°
cls[i]. WorldMatrix = Matrix. CreateTranslation (x * 40, y*3, z * 40);
cls[i]. ViewMatrix = viewMatrix;
cls[i]. ProjectMatrix = projMatrix;
cls[i]. LightDirection = LightDirection;
//ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
Components .Add (cls[i]);
i++;
}
}
}
ballObj = new modCls (this, ball, graphics, pl1);
ballObj.WorldMatrix = Matrix. CreateRotationY (avatarlRotation) * Matrix. CreateTranslation (avatarPosition);
ballObj.ViewMatrix = viewMatrix;
ballObj.ProjectMatrix = projMatrix;
ballObj.LightDirection = LightDirection;
Components.Add (ballObj);
plane = new modCls (this, Content. Load («plane»), graphics, new Plane ());
//ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ
plane.WorldMatrix = Matrix. CreateScale (100) * Matrix. CreateRotationY (MathHelper.ToRadians (90)) *
Matrix.CreateRotationZ (MathHelper.ToRadians (90)) *
Matrix.CreateTranslation (80, -2.5f, 80);
plane.ViewMatrix = viewMatrix;
plane.ProjectMatrix = projMatrix;
plane.LightDirection = LightDirection;
Components.Add (plane);
}
}
}
7. ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
Π ΠΈΡ. 4. ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π ΠΈΡ. 5. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π½Ρ, ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π ΠΈΡ. 6. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΠΈΠ΄Π° ΠΊΠ°ΠΌΠ΅ΡΡ
8.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠ»ΠΈ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ΅Π½Ρ ΡΠΌΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ 3D ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ Π² 3D max’Π΅ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ°, Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠΎΠΉ, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² XNA Studio.
ΠΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Microsoft Vusial Π‘#, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ°Ρ ΡΡΠ΄ Π·Π°Π΄Π°Ρ. ΠΠ΅ΡΠ²Π°Ρ ΠΈ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ 3D ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΡΠΎΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π½Ρ. Π’Π°ΠΊ ΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° ΠΊΠ°ΠΌΠ΅ΡΡ Ρ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ³Π»Π° ΠΎΠ±Π·ΠΎΡΠ° ΠΊΠ°ΠΌΠ΅ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ΅Π½Ρ. Π Π·Π°ΠΏΠΈΡΡ Π²ΡΠ΅ΠΉ ΠΏΡΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ Π² Π²ΠΈΠ΄Π΅ΠΎ ΡΠ°ΠΉΠ» ΡΠΎΠΌΠ°ΡΠ° *.avi.
9.
Π‘ΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ Π²ΠΈΠ΄Π΅ΠΎ ΡΠΎΡΠΌΠ°Ρ
David M. Bourg, Glenn Seeman. AI for Game Developers. — O'Reilly, 2004
Michael Morrison. Teach yourself Game Programming in 24 hours. — Sams Publishing, 2002
Katie Salen, Eric Zimmerman, Rules of Play: Game Design Fundamentals. — MIT Press, 2004
David Franson, 2D Artwork and 3D Modeling for Game Artists. — Premier Press, 2003
Erik Bethke, Game Development and Production — Worldware Publishing, 2003
ΠΠΎΡΠ½Π°ΠΊΠΎΠ² Π‘. Π. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ³Ρ ΠΏΠΎΠ΄ Windows Π² XNA Game Studio Express. — Π.: ΠΠΠ ΠΡΠ΅ΡΡ, 2007.
ΠΠ°ΠΌΠΎΡ, ΠΠ½Π΄ΡΠ΅. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ ΠΈΠ³Ρ Π΄Π»Ρ Windows. Π‘ΠΎΠ²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»Π° ΠΏΠΎ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠ΅ ΠΈ ΡΠ°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΅Ρ. Ρ Π°Π½Π³Π». — Π.: ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π΄ΠΎΠΌ «ΠΠΈΠ»ΡΡΠΌΡ», 2004.
ΠΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ microsoft.com ΠΏΠΎ XNA