ПредишенСледващото

Лекция номер 5. триизмерна графика


Тази функция обхваща основите на работа с триизмерна графика. Тук говорим за триизмерната координатна система на съставните части на триизмерни обекти на изчисленията на матрицата, които се използват в триизмерна графика. Ние също така разгледа съответните части на XNA на обектен модел.

Целта на лекцията

  • За да научите основите на работа с триизмерна графика в XNA

цели лекционни
  • Запознаване с дясната координатна система.
  • Запознаване с концепцията за една точка връх вектор полигон в триизмерното пространство.
  • Запознаят с света, видовете и прожекционни матрици.
  • Познати с матрични трансформации в триизмерното пространство.
  • Запознайте се с концепциите за осветление обекти.
  • Научете повече за най-важните свойства и методи на обекти XNA, използвани при работа с триизмерна графика

координата

Когато се работи с триизмерна графика използва няколко вида координатни системи. За да се покаже на двуизмерни обекти имахме нужда от съответен координатна система с две оси - хоризонтална ос X и вертикална ос Y. Спомнете си, че на екрана координатна система на двуизмерни графики е начало (точка 0.0) в горния ляв ъгъл на екрана, положителната част на оста Х се намира полето от произхода, положителната част на Y-оста - в дъното.

За да работите с триизмерни обекти, ние се нуждаем друг ос - това се нарича ос Z. Има няколко варианта на триизмерната координатна система, по-специално общата т.нар дясна ръка и лявата ръка система. Ние ще използваме системата на дясната - тя се използва в рамката за XNA. Неговата схематично представяне е дадено на фиг. 5.1.


Фиг. 5.1. Десняк координатна система

Особеността на тази координатна система се крие във факта, че произходът може да бъде свързана с левия долен ъгъл на монитора, положителната част на оста Х е вдясно от произхода, положителната част на оста Y - горната част, както и положителното Z-ос - отпред. Това означава, че видимата част на ос Z - е неговата негативна роля. Тази част от оста е като "да наблюдава дълбочината", а като положителна част е "в предната част на монитора." Фиг. 5.1. пунктираната линия показва отрицателна част на Z. оста

В двумерен координатна система, има точка концепция - координатите са определени от две стойности - съществуват X и Y. точки в триизмерна координатна система - те вече са определени три стойности - X, Y, Z.
Точките се използват за определяне на координатите на върховете на многоъгълник (полигони), по-специално - триъгълници. По този начин, триъгълник е показано на фиг. 5.1. се определя от три точки - А, В, С

Като правило, по-сложни тримерни обекти са изградени от триъгълници.

има такова нещо в триизмерна графика, тъй като аспект (лице). Това е - един плосък предмет, който се определя от няколко върхове. В този случай, един обикновен триъгълник - това е лицето. От няколко плоските лица могат да бъдат сглобени триизмерен обект.

Колкото повече триъгълници, използвани при конструирането на модела - по-подробните това се получава. Точките, съответстващи на върховете на триъгълника, които могат да се визуализират в триизмерното пространство, наречени върхове. Работа с триизмерна графика в XNA често ще трябва да отговори на английската версия на думата връх - връх. Може би ще се срещнат в началото на множествено число думата "отгоре" се появява на английски като "върховете". Понякога се използва за означаване на върха проследяване от английски - връх.
Триъгълникът не е случайно избран за основните геометрични форми - на първо място - това е винаги полигон е изпъкнал, и второ - не е възможно да се организира трите точки, така че те не принадлежат към една и съща равнина. Това означава, че на триъгълника - цифра, която винаги е изпъкнал и плосък, което го прави възможно да се използва успешно за целите на триизмерна графика.

Няколко аспекта, които съставляват триизмерен обект, наречени на отворите (меша). "Мрежа" е набор от триъгълници.

Друга идея, която ще дойде по-удобно, когато се работи с триизмерна графика - това е концепцията за вектор. Векторът (вектор), както и точка може да се определи от три параметъра, но не описва положение в пространството и посоката и скоростта на движение.

Векторът има начало и край, за пълното му дефиниция трябва да знаете координатите на началото и края на вектора, т.е., вместо от трите стойности на координатите, ние се нуждаем от шестте стойности. Въпреки това, ако приемете по подразбиране за началото на вектора на произход (0,0,0 точка) на - след това да се определи, че е достатъчно за трите точки.

Например, вектор с координати (1,0,0) означава "посока - полето скорост - 1". Ако отложи вектора от произхода, ясно се вижда, че той го е изпратил в дясно (фиг. 5.2.).

посока вектор, определен от положението на втората точка спрямо първата (в нашия случай - позицията на вектора на крайна точка, където векторът се определя по отношение на произхода), и скоростта на - дължината на вектора - това е - разликата между началната и крайната точка. В този случай, дължината на вектора съвпада с координатите на своя край.


Фиг. 5.2. Вектор (1,0,0)

Има специален вид вектори - нормалните (нормалните). Нормали могат да бъдат изградени за лицата и върховете на обекта. Нормално за лицата, перпендикулярни на тези лица. Те се използват при изчисляването на цвета на обекта.

Преобразуване в триизмерното пространство

Знаейки, координатите на върховете на полигоните, които съставляват предмета, ние можем да го поставите в пространството. Сега ние трябва да се справят с промяната в позицията на обекти в пространството. Има няколко основни операции, които могат да бъдат използвани, за да местят предмети в триизмерното пространство. Това - на движението (превод), въртене (ротация) и скала (скала).

Резултатите от триизмерни графики на играта, което виждаме на монитора на компютър с плосък екран - симулира триизмерен сцена се проектират върху двуизмерна повърхност. При прогнозирането да изберете точка, която действа като камерата ви позволява да видите триизмерното пространство. На свой ред, обектите в триизмерното пространство, могат да бъдат преместени в съответствие с определени правила. няколко матрици се използват за контрол на всичко това. Това - в световен матрица (World Matrix), тип матрица (Виж Matrix) и прожектиране матрица (Projection Матрицата) на.

Матрицата може да бъде представена като маса, състояща се от м редове и колони п. В компютърната графика, използвани 4х4 матрица. Първите три колони на матрицата, отговорни за промяната на координатите X, Y, Z обект върховете участващи в трансформация.

  • Матрицата на глобална трансформация позволява настройка - Транслация, ротация и трансформация съоръжения.
  • вид на матрица позволява да контролирате камерата.
  • Матрицата на проекцията се използва за регулиране на проекцията на триизмерната сцена на екрана.

Да предположим, че имате триъгълник, определена от следните върхове (Таблица. 5.1.).

Таблица 5.1. върховете на триъгълника, за да се движат

Същият ефект може да се постигне, като се умножи координатите на всеки от върховете на световния матрица. За тази цел координатите на върховете са в матрица, състояща се от един ред и четири колони. Първите три колони съдържат координати X, Y, Z, в четвъртата - 1. Глобалната матрица е представен като маса 4x4. Ето матрица размножаването на (формула 5.1.):

Формула 5.1. Размножаване на горния и световен матрицата

При конвертиране всеки един от върховете се умножава по глобалната матрица.

Всяка от трансформации в пространството изисква специална конфигурация на света на матрицата. Във формула 5.2. е глобална матрица шаблон, който ви позволява да се движат обекти в пространството.

Формула 5.2. Световната матрица за преместване на обекта

Световната матрица за завъртане на обекта около Х-оста е както следва (формула 5.3.).

Формула 5.3. Световната матрица за завъртане на оста Х

тук # 945; - ъгъл на въртене в радиани

Световната матрица за завъртане на обекти от Y ос е както следва (формула 5.4).

Формула 5.4. Световната матрица за въртене по оста Y.

Матрицата за завъртане обекти около ос Z е показано във формула 5.5.

Формула 5.5. Световната матрица за въртене на ос Z

Формула 5.6. Тя представлява матрица, която служи за трансформиране обекти.

# 966 х. # 966; у, # 966; Z - е претеглящите фактори, които се прилагат към върха. Те ви позволяват да "компресира" или "стреч" обекти.

Осветление обекти в игри изпълнява същата роля, отредена му в реалния свят. Има много видове осветление.
  • Атмосферния разсеяна светлина (околна светлина) - е светлината, която осветява обектите от мястото със същата интензивност. Източникът на разсеяната светлина не е позиция.
  • точков източник на светлина (точка светлина) - това е източник, който излъчва светлина във всички посоки. Тя може да се сравни със светлината от крушките, не са обхванати от сянка.
  • насочен източник на светлина (насочена светлина). Този източник, за разлика от една точка, не е място, но има ориентация
  • Зонално светлина (светлина място) или място прожектор, ориентация и светлинен поток се ограничава от формата на конус.
Източниците на светлина могат да имат различна интензивност, с различен цвят, с леки сцени могат да използват няколко различни източници. Всичко това прави покритието на съществен елемент на триизмерни графики.

Шейдърите или шейдър програми - програми, които ви позволяват да прилагате различни ефекти към моделите. Те са написани на специален език за програмиране, като правило, а не на ръка, а с помощта на подходящ софтуер. Шейдърите са разделени на връх и пиксел. Vertex шейдъри ви позволяват да прилагате различни ефекти към върховете на моделите, пикселни шейдъри се справят с цвета на всеки пиксел на модела, преди да го показва на екрана.

Texture - растер (двуизмерни) изображения, които се наслагват върху триизмерен модел. Например, триизмерен модел превозно средство може да бъде една кола, която така да се каже "рязани" от твърд материал и след това наслагва върху модел превозно средство става подходящ цвят текстура, създавайки илюзията, че е имал части клирънс малък и т.н. Минимална единица се нарича текстура Texel. Колкото повече пиксели на един Texel от bolshshe резолюция текстура - толкова по-добре ще изглежда моделът след прилагане на текстура към него.

XNA обекти за работа с 3D-графика

XNA на обектен модел има няколко обекти, които са интензивно използвани за работа с триизмерна графика.

Класът Matrix ви позволява да създадете една матрица, която се използва за преобразуване на обектите в пространството, за да контролира камерата и триизмерна проекция на сцената на екрана. Този клас, който, както е обичайно в NET Framework, е от същия тип данни и се състои от статичен метод, използван за създаване на матрици. Като правило, е необходимо, например, "ръчно" за модифициране на свят матрица за организиране на въртене или движението на модела - всички необходими операции могат да се извършват с помощта на статични методи на класа на матрица, както обекти Matrix клас имат различни полезни свойства. Помислете за някои от тях.

  • стойности Информацията Mxy връщане, които са разположени в един ред с индекс х и индекс колона у, която се променя от 1 до 4. Например, M11 имот връща стойността в пресечната точка на първия ред и първата колона на матрицата, M23 - втория ред и третата колона , M44 - четвъртият ред и четвърта колона.
  • Методът позволява да се създават CreateLookAt modelview матрица (камера).
  • метод CreateOrthographic ви позволява да създадете ортогонална проекция матрица.
  • CreatePerspective метод дава възможност да се създаде перспектива проекция матрица.
  • CreateRotationX методи, CreateRotationY, CreateRotationZ ви позволяват да се създаде въртене матрица около подходящата ос.
  • метод CreateScale е да се създаде матрица на мащабиране (преоразмеряване) обект.
  • метод CreateTranslation ви позволява да създадете матрица от движещ се обект.
  • метод CreateWorld създава световната матрица.

Клас Vector3 използва за съхраняване на координати на точки в пространството, и да се определят вектори за някои други проблеми, например - да се определят параметрите на матриците.

BasicEffect клас съдържа много елементи, които са важни при създаването на триизмерен сцена. Той е обект на този клас съдържа описания на матрици, описващи източници на светлина в играта, както и много други важни свойства и методи. В своята вътрешна същност, този клас е набор от шейдъри, всяка от които се използват в зависимост от свойствата на nizheperechislennyyh:

  • AmbientLightColor имот ви позволява да настроите светлината на околната светлина на околната среда
  • Имоти DirectionalLight0, DirectionalLight1, DirectionalLight2 ви позволява да настроите посоката на цвета на източник
  • Имоти FogColor, FogEnabled, FogEnd, FogStart ви позволи да контролирате ефекта на мъглата
  • LightingEnabled имот ви позволява да включите светлините
  • PreferPerPixelLighting имот ви позволяват да контролирате ефекта на осветлението на пиксел - Този тип покритие е на разположение за графични карти, които поддържат Pixel Shader Model 2.0 (Pixel Shader Model 2.0.)
  • Projection имот ви позволява да контролирате проекционната матрица.
  • Texture имот е предназначен за контролиране на консистенцията
  • TextureEnabled имот ви дава възможност да включват използването на текстура
  • Преглед на собствеността ви позволява да контролирате матрицата на формата (камерата)
  • Световната имот се използва за контрол на глобалната матрица
  • Започват и завършват методи позволяват да определите началото и в края на действието на устройството за обработка.
  • метод EnableDefaultLighting позволява да се даде възможност на осветлението по подразбиране.

клас MathHelper

Тя осигурява полезни техники за различни математически операции. Например, статична стойност метода ToRadians pozvloyaet трансфер от градуси в радиани.

Когато се работи с триизмерна графика с помощта на XNA и други обекти, ще се запознаят с тях в бъдещата работа.

Подкрепете проекта - споделете линка, благодаря!