Мега информатика Теория и практика на 3D игрите - Изграждане на игрова сцена

[Начало] [Новини] [Статии] [Игри] [Проекти][автор]Основи на DirectX8.1 3D програмиране в Delphi 6-7: теоретични и практически основи за създаване на игри.

Продължаваме поредица от уроци за разработването на Delphi DirectX игри.

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

[Всички класове]При разработването на проекта Something: Inexplicable стана необходимо да се създаде анимация чрез прости трансформации на обекти.

практика

Ние ще вършим тази работа, използвайки като пример 3Ds Max 7. Но ако използвате версия 8 или 9, тогава всичко описано може да се приложи и към тези версии.Постановка на проблема: моделът на автомобила, показан на фигурата, е създаден. Състои се от тяло и 4 колела, представени от отделни мрежи. Необходимо е да се създаде анимация на въртящи се колела.

Първото нещо, което идва на ум, е просто да вземете колело и да ги завъртите във времето около оста си. Изглежда, че всичко е просто. Но се оказва, че в този случай, тъй като моделите на колелата са създадени на базата на цилиндри (примитивен цилиндър), завъртян на 90 градуса около оста Y, опит за завъртане на получените колела около оста X води до сложно въртене, съчетаващо промяна в първоначалната ориентация. С други думи, желаната трансформация не може да бъде създадена.

Освен това, ако се опитате да изнесете дори статичен модел на тази кола в тази форма - тяло и 4 колела, тогава по някаква причина колелата ще се окажат напълно не на място. Това се отнася както за експортиране от програмата за експортиране на DXExport DX9, така и за PandaDX за 3Ds Max 7. Освен това е възможно да се използва правилно анимация в приложението DX8.само ​​при експортиране на PandaDX!

Решението се оказва тривиално просто, ако използвате така наречените Dummy обекти и изградите йерархия от тях.

Какво е Dummy?

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

В 3ds Max 7 този обект се намира в панела Създаване в групата Помощници -

теория

Ако се вгледате внимателно в снимката на колата в началото на тази статия, ще видите само тези кутии. Те също са разположени в близост до тялото - 1 голям и близо до всяко от колелата.

Как да приложим получения обект за решаване на проблема?

Трябва да създадете 1 голяма кутия от обект Dummy и да я поставите в центъра на каросерията на колата -

създайте Dummy обект, мащабирайте до желания размер, подравнете в центъра спрямо тялото (Align).

Следващата стъпка е да създадете по-малък манекен и да го подравните с едно от колелата.

Сега трябва да свържете (да установите йерархична връзка) мрежата на даденото колело към дадения малък Dummy - wheel_Dummy. Това се прави чрез избиране на обекта колело, щракване върху бутона Избор и свързване и плъзгане на пунктирана връзка към родителския обект wheel_Dummy, докато се маркира в бяло. След това wheel_Dummy става родителски обект за wheel и като завъртите wheel_Dummy около оста X, можете да получите необходимото въртене на колелото. След като направите това - т.е. запишете ротационната анимация на това wheel_Dummy за необходимия брой кадри, просто трябва да клонирате това wheel_Dummy още 3 пъти, да поставите копията спрямо останалите 3 колела и да свържете тези колела към съответните им обекти Dummy.

В резултат на това всичките 4 колела ще се въртят по същия начин.

Сега просто трябва да свържете каросерията на колата с голям Dummy обект - base_Dummy, и да свържете Dummy обекти за всичките 4 колела към него.

В резултат ще имате следната йерархия на обекти - GraphEditors > Нов схематичен изглед

изграждане

И експортирането чрез PandaDXExporter ще даде желания резултат.