Міністерство освіти та науки України

Вид материалаДокументы

Содержание


Об'єктно-орієнтована модель програмних компонент
4.4 Бібліотека візуальних компонент
Головне меню та панель інструментів.
Run містить команди налагодження та запуску програми. Меню Component
Палітра компонентів.
Вікно форми.
Редактор коду.
4.5. Робота з компонентами
AlRight - вирівнювання по правому краї. AlTop
5. Опис графічних бібліотек для написання 3D – програм та ігор
5.1 Опис графічної бібліотеки OpenGL
5.2 Графічна бібліотека DirectX
5.3 Візуальні бібліотеки компонентів для OpenGL та DirectX.
5.4 Опис закладок GLScene
GLScenePFX(візуальні ефекти)
GLScene Utils
6. Проектування системи
Подобный материал:
1   2   3   4   5   6   7

Об'єктно-орієнтована модель програмних компонент


Основна акцепція цієї моделі в Delphi [7, 8] робиться на максимальному повторному використовуванні коду. Це дозволяє розробникам будувати додатки вельми швидко з наперед підготовлених об'єктів, а також дає їм можливість створювати свої власні об'єкти для середовища Delphi. Ніяких обмежень по типах об'єктів, які можуть створювати розробники, не існує. Дійсно, все в Delphi написано на них же, тому розробники мають доступ до тих же об'єктів і інструментів, які використовувалися для створення середовища розробки. В результаті немає ніякої різниці між об'єктами, поставляючими Borland або третіми фірмами, і об'єктами, які ви можете створити самі.

В стандартну поставку Delphi входять основні об'єкти, які утворюють вдало підібрану ієрархію з 270 базових класів. На Delphi можна однаково добре писати як додатки до корпоративних баз даних, так і, наприклад, ігрові програми. Багато в чому це пояснюється тим, що традиційно в середовищі Windows було достатньо складно реалізовувати призначений для користувача інтерфейс. Модель події в Windows завжди була складна для розуміння і відлагодження. Але саме розробка інтерфейсу в Delphi є найпростішою задачею для програміста.

Завдяки такій можливості додатку, виготовлені за допомогою Delphi, працюють надійно і стійко. Delphi підтримує використовування вже існуючих об'єктів, включаючи DLL, написані на С і С++, OLE серверу, VBX, об'єкти, створені за допомогою Delphi. З готових компонент робочі додатки збираються дуже швидко. Крім того, оскільки Delphi має повністю об'єктну орієнтацію, розробники можуть створювати свої об'єкти, що повторно використовуються, для того, щоб зменшити витрати на розробку.

Delphi пропонує розробникам – як у складі команди, так і індивідуальним – відкриту архітектуру, що дозволяє додавати компоненти, де б вони не були виготовлені, і оперувати цими введеними компонентами у візуальному будівельнику. Розробники можуть додавати CASE-інструменти, кодові генератори, а також авторські help’и, доступні через меню Delphi.

4.4 Бібліотека візуальних компонент


Компоненти, що використовуються при розробці в Delphi [7, 8], вбудовані в середовище розробки додатків, представляють з себе набір типів об'єктів, що використовуються як фундамент при будівництві додатку.

Цей називається Visual Component Library (VCL). В VCL є такі стандартні елементи управління, як рядки редагування, статичні елементи управління, рядки редагування із списками, списки об'єктів. Ще є такі компоненти, які раніше були доступні тільки в бібліотеках третіх фірм: табличні елементи управління, закладки, багатосторінкові записники. Всі об'єкти розбиті на сторінки по своїй функціональності і представлені в палітрі компонент.

VCL містить спеціальний об'єкт, який представляє інтерфейс графічних пристроїв Windows, і дозволяє розробникам малювати, не піклуючись про звичайні для програмування в середовищі Windows деталях.

Ключовою особливістю Delphi є можливість не тільки використовувати візуальні компоненти для будівництва додатків, але і створення нових компонент. Така можливість дозволяє розробникам не переходити в інше середовище розробки, а навпаки, вбудовувати нові інструменти в існуюче середовище. Крім того, можна поліпшити або повністю замінити існуючі за умовчанням в Delphi компоненти.

Тут слід зазначити, що звичайних обмежень, властивих середовищам візуальної розробки, в Delphi немає. Сама Delphi написана за допомогою Delphi, що говорить про відсутність таких обмежень.

Класи об'єктів побудовані у вигляді ієрархії, які складається з абстрактних, проміжних, і готових компонент. Розробник може користуватися готовими компонентами, створювати власні на основі абстрактних або проміжних, а також створювати власні об'єкти

Проект - це сукупність файлів, з яких складається Delphi - програма.

Інструменти середовища Delphi.

Основними інструментами є:
  • головне меню;
  • панель інструментів;
  • палітра компонентів (Component Palette);
  • інспектор об'єктів (Object Inspector);
  • вікно форми;
  • редактор коду (Code Editor).

ЦІ інструменти стають доступними після запуску програми Delphi: три знаходяться в головному вікні (верхня частина екрана, рис. 1), а решта — в окремих вікнах.

Головне меню та панель інструментів.

Головне меню складається з таких елементів: File, Edit, Search, View, Project, Run, Component, Database, Tools, Help (Рис. 25).

Меню File містить стандартні команди роботи з файлами проекту. За допомогою цих команд можна створити новий проект (New Application), нову форму або модуль (New Form і New Unit),відкрити чи закрити файл проекту (Open і Close), закрити всі відкриті файли (Close All), зберегти файл, проект або все відразу (Save, Save As, Save Project As, Save All).

За допомогою команд меню Edit можна вирівнювати компоненти відносно сітки або між собою (Align to Grid, Align), задавати порядок відображення компонентів, які перетинаються (Bring to Front, Senid to Back), змінювати розмір вибраного компонента (Size), масштабувати візуальні компоненти (Scale) тощо. Меню Search містить стандартні команди пошуку та заміни фраг­мента тексту (Find, Replace, Search Again, Incremental Search) та інші. У меню View знаходяться команди візуалізації елементів середовища. Меню Project містить команди компіляції (Compile, Build All) та перевірки синтаксису програми (Syntax Check).

Інтерфейс Delphi 2006 Рис.25.

Меню Run містить команди налагодження та запуску програми. Меню Component використовують для створення та інсталяції нових компонентів. Меню Database містить команди виклику інструментів бази даних. У меню Tools знаходяться команди коригування параметрів середовища.

На панелі інструментів розташовані кнопки інструментів. На ній можуть міститися кнопки всіх згаданих команд.

Палітра компонентів.

Палітра компонентів розташована у головному вікні і має вигляд багато сторінкового блокнота. Кожній сторінці відповідає свій набір компонентів. Щоб помістити компонент у центрі вікна форми, двічі клацають на його піктогра­мі. Якщо потрібно розмістити компонент десь на формі, клацають один раз на його піктограмі і один раз у потрібному місці форми. Для багаторазового вставляння одного й того ж компонента потріб­но натиснути клавішу Shift і клацнути на його піктограмі — тепер можна клацати у вікні форми. Щоб відмовитися від цього режиму, треба натиснути на кнопку палітри компонентів з зображенням стрілки. Вибраний компонент можна переміщати на формі, а також змінювати розміри, перетягуючи його маркери.

Інспектор об'єктів. За допомогою інспектора об'єктів можна за­давати початкові значення властивостей об'єктів та їхню реакцію на стандартні події. Вікно інспектора об'єктів містить список компонентів поточної форми, а також дві закладки: властивостей. (Properties) та подій (Events). Щоб активізувати вікно інспектора об'єктів, використовують клавішу F11. Розглянемо це вікно (рис. 26). Закладка властивостей складається з двох стовпчиків: лівий містить назви властивостей компонентів, а правий — їхні значення. Властивості можуть бути простими або комплексними. Комплексні властивості складаються з набору інших властивостей. Такі властивості в інспекторі об'єктів позначені символом "+", наприклад, +Font.Закладка подій також має два стовпці. У лівому відображаються назви (імена) стандартних подій, на які об'єкт може реагувати, а в правому — назви методів (процедур), які будуть реалізовувати реак­цію на подію. Кожній

Рис. 26.

стандартній події можна поставити у відповідність деякий метод, назва якого з'явиться після подвійного клацання мишею у правому стовпчику. Одночасно у вікно програми додається шаблон базового коду (процедури) для цього методу. Шаблон потрібно заповнити текстом процедури

Для введення значень властивостей числового та текстового типу (Width, Name тощо) використовується стандартне поле введення. Значення властивостей перерахованого типу (Align, Cursor тощо) за­даються комбінованим списком, звідки вибирають потрібне. Деякі комплексні властивості (Font, Pictures, Glyph тощо) використовують діалогові вікна, набір керуючих елеііентів яких залежить від конкретної властивості.

Вікно форми. Форма — це вікно Windows, яке утворюється в одному з можливих для вікон стилів. Увесь внутрішній простір є робочою областю, яка має сітку вирівнювання для зручного розта­шування компонентів на формі. Для виконання групових операцій декілька компонентів можна об'єднувати. Для цього необхідно натиснути на ліву клавішу миші і переміщенням вказівника охопи­ти всі потрібні компоненти. У групу додаються компоненти, які хо­ча б частково попадають в охоплену область. Можна також дода­ти/вилучити окремий елемент. Для цього потрібно натиснути на клавішу Shift та, не відпускаючи її, вибрати мишею потрібний ком­понент на формі. Вилучення виокремлених компонентів чи групи виконується клавішею Delete. Переміщення виокремленого компо­нента в межах форми здійснюється мишею. Над компонентами та їхніми групами. можна виконувати операції вирізування, копіювання в буфер обміну і вставляння з буфера.

Вирівнювати компоненти можна як відносно вікна форми, так і від­носно один одного. Для цього використовується команда Edit => Align головного меню або палітра вирівнювання (команда View => Alignment Palette головного меню). Інша можливість — безпосередньо задати властивості Left та Тор компонентів. Компоненти у групі ви­рівнюються відносно того компонента, який попав у групу першим.

Редактор коду. Редактор коду (програми) є в окремому вікні. Це вікно організоване як багато сторінковий блокнот відкритих на даний час файлів. У момент відкриття нового проекту в модуль Unitl, який відповідає формі Forml, редактор автоматично додає програмний код опису цієї форми. Під час, додавання нових компонентів у вікно форми до програми опису форми автоматично додається програмний код опису візуальних параметрів цих компонентів (висота, ширина, розташування, стиль тощо). Додавання у програму обробника подій певного об'єкта веде до появи заготовки базового коду відповідної процедури у вікні редактора. Заготовка (шаблон) складається з заголовка процедури та стандартних слів begin і end.

4.5. Робота з компонентами

Основна форма [8] – це вікно майбутньої програми. На ньому можно розташовувати візуальні компоненти у будь-якому виді і порядку.

Якщо виділити якийсь компонент, то в об'єктному інспекторі з'являться його властивості і події. Зараз ми розглянемо основні властивості і події форми. Більшість з них присутні й у компонентів.

ActiveControl - Вказує на компонент, що повинний бути активним за замовчуванням.

Align - Вирівнювання компонента. Кожний компонент може бути вирівняний по одній зі сторін батьківського компонента. Цій властивості можна привласнити наступні значення:

alNone – немає вирівнювання.

alBottom – вирівнювання по нижньому краї.

alLeft - вирівнювання по лівому краї.

AlRight - вирівнювання по правому краї.

AlTop - вирівнювання по верхньому краї.

Компоненти вирівнюються щодо форми, а форма вирівнюється щодо вікна.

Anchors - Ця властивість є й у форми й у компонентів. Вона показує, як відбувається закріплення до батьківського об'єкта. Це властивість що розкривається. Якщо клацнути по квадраті ліворуч від імені властивості, то розкриється список з чотирьох додаткових властивостей:

akLeft – прикріплювати лівий край (за замовчуванням true).

akTop – прикріплювати верхній край (за замовчуванням true).

akRight – прикріплювати правий край (за замовчуванням fаlse).

akBottom – прикріплювати нижній край (за замовчуванням false).

За замовчуванням прикріплення відбувається по лівому і верхньому краї.

AutoScroll - Тип властивості – логічний. Чи буде форма автоматично робити скролінг, чи ні.

AutoSize - Тип властивості – логічний. Чи повинні компоненти на формі автоматично коректувати розміри.

BorderIcons - Властивість визначає, які кнопки повинні бути присутнім у вікна. Це комбінована властивість що складається з чотирьох властивостей:

biSystemMenu – показати меню (іконка ліворуч у рядку заголовка вікна) і інші кнопки заголовка вікна.

biMinimize – кнопка мінімізації вікна.

biMaximize – кнопка максимізації вікна.

BorderStyle – Властивість форми. Відповідає за вид межі вікна. Ця властивість може приймати наступні значення.

BorderWidth – ширина межі вікна. Поки що усі вікна, що ми розглядали, мали ширину межі рівну нулю. На прикладі нижче показане вікно з межею рівної 10. У центрі вікна розтягнуто на всю площу поле для введення тексту і незважаючи на це, у вікні по краях видно широку межу. Для більшого ефекту на формі знаходиться кнопка, що зникає при перетинанні межі.

Caption – це рядкова властивість, що відповідає за заголовок вікна.

ClientHeight – це властивість у виді цілого числа показує висоту клієнтської області вікна.

ClientWidth - це властивість у виді цілого числа показує ширину клієнтської області вікна. Це ширина без врахування ширини межі, тільки робоча область.

Constraints – у цій властивості містяться максимальні значення розмірів вікна.

MaxHeight – максимальна висота вікна.

MaxWidth – максимальна ширина вікна.

MinHeight – мінімальна висота вікна.

MinWidth – мінімальна ширина вікна.

Якщо ці значення встановлені , то вікно не можна буде розтягти більше максимального розміру і зменшити менше мінімального.

Enabled – Тип властивості – логічний. Доступність компонента. Якщо ця властивість дорівнює true, то користувач може працювати з цим компонентом. Інакше компонент недоступний і пофарбований сірим кольором.

FormStyle - Стиль форми. Тут доступні для вибору наступні варіанти:

fsNormal – нормальне вікно,

fsMDIForm – вікно є батьківським для MDI вікон,

fsMDIChild – вікно є дочірнім MDI вікном.

fsMDIForm - створює головне вікно,

fsMDIChild створює дочірнє, тобто те вікно, що буде усередині головного,

fsStayOnTop – Вікно з цим параметром буде знаходитися завжди поверх інших.

Height – Тип властивості – ціле число. висота вікна.

Hint – текст підказки, що буде з'являтися в рядку стану при наведенні мишкою на форму/компонент.

HorzScrollBar – параметри горизонтальної смуги прокручування.

Menu – меню, що використовується в головному вікні.

Name – ім'я форми/компонента. Ім'я яке тут введене, стане назвою екземпляра об'єкта ( до назви класу(об'єкта) додасться літера Т). По замовчуванню Form1( в тексті програми тип об'явлено як TForm1).


5. Опис графічних бібліотек для написання 3D – програм та ігор

Для прискорення розробки ЗD [11] - програм та ігор використовуються спеціалізовані прикладні програмні (графічні) бібліотеки. Ці бібліотеки можуть бути як стандартними (розробленими лідерами ЗD- індустрії), так і фірмовими (розробленими виробниками ЗD- прискорювачів). Функції бібліотеки доступні через відповідний API (Application Programming Interface) - програмний інтерфейс розробника. Можна приблизно сказати, що API - мова опису тривимірної графіки. Відповідно, кожна ЗD - програма написана з використанням деякого API і відповідно працюватиме у вашій системі тільки в тому випадку, якщо відео карта підтримує відповідний API, Від самого API багато в чому залежить якість і продуктивність роботи відеоадаптера.

В даний час відео карти підтримують два стандартних API:

OpenGL корпорації Silicon Graphic (SGI). Доступний в ОС Windows NT. У Windows 9x реалізований не повністю. У свою чергу, Microsoft створила бібліотеку MCD (Mini Client Driver), що дозволяє задіювати основні можливості OpenGL в Windows 9x.

Direct3d корпорації Microsoft для ОС Windows 9x і NT, скорочено D3d. Він є частиною Microsoft DirectX, який стандартно вбудований до цієї ОС.


5.1 Опис графічної бібліотеки OpenGL

OpenGL [6,15] є на даний момент одним з найпопулярніших програмних інтерфейсів для розробки застосувань в області двовимірної і тривимірної графіки. Наприклад в таких програмних продуктах як для моделювання 3D – графіки це є 3Ds Max, Alias Maya, Auto CAD, Google SketchUp, а також в комп’ютерних іграх як DOOM 3, Quake 1 - 4, Half-Life.

Стандарт OpenGL був розроблений і затверджений в 1992 році провідними фірмами в області розробки програмного забезпечення, а його основою стала бібліотека IRIS GL, розроблена Silicon Graphics.

Характерними особливостями OpenGL, які забезпечили розповсюдження і розвиток цього графічного стандарту, є:

Стабільність - доповнення і зміни в стандарті реалізуються так, щоб зберегти сумісність з розробленим раніше програмним забезпеченням.

Надійність і переносимість - застосування, використовуючи OpenGL, гарантують однаковий візуальний результат незалежно від типу використовуваної операційної системи і організації відображення інформації. Крім того, ці застосування можуть виконуватися як на персональних комп'ютерах, так і на робочих станціях і суперкомп'ютерах.

Легкість застосування - стандарт OpenGL має продуману структуру і інтуїтивно зрозумілий інтерфейс, що дозволяє з меншими витратами створювати ефективні застосування, що містять менше рядків коду, чим з використанням інших графічних бібліотек. Необхідні функції для забезпечення сумісності з різним устаткуванням реалізовані на рівні бібліотеки і значно спрощують розробку застосувань.

Основні можливості OpenGL

· Набір базових примітивів: точки, лінії, багатокутники і тому подібне

· Видові і координатні перетворення

· Видалення невидимих ліній і поверхонь (z-буфер)

· Використання сплайнів для побудови ліній і поверхонь

· Накладення текстури і застосування освітлення

· Додавання спеціальних ефектів: туману, зміна прозорості, сполучення кольорів (blending), усунення ступінчастості (anti-aliasing).

Також, існує реалізація OpenGL для різних платформ, для чого було зручно розділити базові функції графічної системи і функції для відображення графічної інформації і взаємодії з користувачем.

На даний момент реалізація OpenGL включає декілька бібліотек (опис базових функцій OpenGL, Glu,glut).

Не дивлячись на те, що бібліотека OpenGL (скорочено GL) надає практично всі можливості для моделювання і відтворення тривимірних сцен, деякі з функцій, які потрібні при роботі з графікою, безпосередньо відсутні в стандартній бібліотеці OpenGL. Тому для OpenGL існують так звані допоміжні бібліотеки.

Перша з цих бібліотек називається GLU. Ця бібліотека вже стала стандартом і поставляється разом з головною бібліотекою OpenGL. До складу цієї бібліотеки увійшли складніші функції, наприклад для того, щоб визначити циліндр або диск буде потрібно всього одну команду. Також до бібліотеки увійшли функції для роботи реалізовані додаткові операції над матрицями і додаткові види проекцій.

Наступна бібліотека, також широко використовувана - це GLUT. Це також незалежна від платформи бібліотека. Вона реалізує не тільки додаткові функції OpenGL, але і надає функції для роботи з вікнами, клавіатурою і мишкою. Для того, щоб працювати з OpenGL в конкретній операційній системі наприклад Windows, треба провести деяку попередню настройку і ця попередня настройка залежить від конкретної операційної системи. З бібліотекою GLUT все набагато спрощується, буквально декількома командами можна визначити вікно, в якому працюватиме OpenGL, визначити переривання від клавіатури або мишки і все це не залежатиме від операційної системи. Бібліотека надає також деякі функції, за допомогою яких можна визначати деякі складні фігури, такі як конуси, тетраедри, і навіть можна за допомогою однієї команди визначити чайник!

5.2 Графічна бібліотека DirectX

Одним з головних конкурентів вважається Direct3d з пакету DirectX[20]. Якщо порівнювати ці дві бібліотеки, то не можна сказати, що одна з них краще, а інша гірше, у кожної бібліотеки є свої особливості. Наприклад, якщо порівнювати їх в плані переносимості програм з однієї платформи на іншу, то Direct3d працюватиме тільки на Intel платформах під управлінням операційної системи Windows, у той час програми, написані за допомогою OpenGL можна успішно перенести на такі платформи як Linux, Windows і багато інших. А ось в плані об'єктно-орієнтованого підходу OpenGL поступається Direct3d. OpenGL працює за принципом переходячи з одного стану в інше, здійснюючи при цьому якісь перетворення. І ще OpenGL легше чим Direct3d для вивчення основ графіки, OpenGL можна застосовувати наприклад для початкового вивчення тривимірної графіки.


5.3 Візуальні бібліотеки компонентів для OpenGL та DirectX.

У наш час програми[3] не прийнято писати «з чистого листа». Багато елементів майбутнього шедевра вже зроблене, і простіше їх запозичити, ніж створювати самостійно. Так з давніх років влаштоване програмування. І в першу чергу розробники звичайно прагнуть користуватися готовими рішеннями для проектування інтерфейсу. Цій меті служить, наприклад, бібліотека DirectX або OpenGL.

Але і ними в чистому вигляді користуються достатньо рідко. Над ними існує немало різних «надбудов».

Якщо програміст починає вивчати 3d-графіку, то не варто відразу ж починати вивчати DircetX API . Краще скористатись якою-небудь візуальною бібліотекою компонентів. До цих пір найвідомішою такою бібліотекою DelphiX(що має завдатки ігрового двіжка).

Строго кажучи, ігрове ядро(Game Engine) – являє собою загальну систему бібліотек та інструментів, на базі якого можна створити закінчений продукт. Також є ще надбудови для DirectX такі як LKI-Creator, Truevision3D та багато інших можна знайти в Інтернеті. Є декілька бібліотек компонентів для Delphi, що полегшують (і прискорюють!) роботу з OGL, це є з найвідоміших - Glscene.

Glscene[11] - це універсальний багатофункціональний тривимірний ігровий ядро під Delphi. He зовсім коректно називати цей ядро ігровим. Його творці ніколи і ніде не підкреслювали, що він може уживатися тільки для створення ігор. З його допомогою можна зробити як прекрасну тривимірну гру, так і пакет для створення тривимірної графіки або красиву презентацію. Не встигла компанія nvidia анонсувати свої програмні шейдери, як творці Glscene заявили, що їх підтримка вже включена в нову версію Glscene. Отже ядро йде в ногу з часом.

Glscene ліцензує суспільною ліцензією MPL(Mozilla Public License). Це означає, що можна використовувати ядро в будь-яких цілях, не порушуючи його авторських прав. Якщо внесли якісь зміни до структури двіжка, ви повинні зробити ці зміни загальнодоступними. Також можна зробити хоч тричі комерційний проект на основі Glscene з повною упевненістю, що з вас за нього ніхто не зажадає ні цента. Хіба що, ради порядності, не забудьте вказати походження двіжка де-небудь в титрах.

Glscene для виводу на екран використовує бібліотеку OPENGL, на відміну від багатьох інших движків, орієнтованих в першу чергу на Direct 3d. Добре це або погано, питання складне. З одного боку, OPENGL спритніший, ніж Direct 3d. З іншої - на деяких старих акселераторах була сира підтримка OPENGL, і ігри на його основі нерідко не хотіли запускатись. Але тепер ці проблеми у минулому. Нормальна підтримка OPENGL вбудована у всі сучасні акселератори.

Як і будь-який нормальне ядро, Glscene підтримує цілий ряд перед встановлених примітивів. Це означає, що, набравши просту команду, можна миттєво створити куб, сферу, лінію, чайник. Це така добра традиція у всіх сучасних графічних бібліотеках - для створення чайника виділяється спеціальна команда або об'єкт.

З одних кубиків і чайників світ не створиш. Тому будь-які об'єкти можна комбінувати - наприклад, зробити в одному об'єкті дірку за формою іншого об'єкту. Ця функція незамінна при створенні дверних і віконних отворів в іграх, подібних "Half-life".

Якщо мова йде про розробку складної гри, одними стандартними примітивами не обійтися. Добре б мати можливість завантажувати в ядро об'єкти, зроблені в популярних тривимірних редакторах. Glscene уміє завантажувати файли форматів 3ds (що експортується добре відомою програмою 3ds max), Obj/objf, SMD, Md2, STL, TIN і PLY.

Сучасні ігри вимагають сучасних технологій. На жаль, ще в дуже багатьох іграх використовується метод анімації персонажів по-старому - по тривимірних кадрах. Процес цей повільний і неефективний. Інша справа - скелетна анімація. Тривимірна модель насаджується на віртуальні кістки, і аніматор оперує не всією моделлю, а тільки цими кістками. Що це дає? Перш за все, розмір файлів-анімацій істотно зменшується, оскільки в них зберігаються зміни координат не всіх вершин моделі (а їх, як правило, дуже і дуже багато), а тільки ключових точок, на які як би спираються кістки. Скелетна анімація реалістичніша, ніж кадрова, і позбавляє аніматора від головного болю, пов'язаного з переходом між діями. У старих іграх ви напевно спостерігали таку картину: персонаж біжить, ви тиснете на "стрибок", і персонаж стрибає не зі свого положення, а як би миттєво повернувшись в стан по стійці струнко. Через це створюється враження уривчастості анімації. При використанні скелетної анімації положення між різними кадрами інтерполюється, тобто прораховуються пропущені кадри. Результат - персонажі рухаються плавно, а переходи між рухами виглядають природніше.

Glscene підтримує скелетну анімацію і інтерполяцію кадрів. Моделі, які в початковому варіанті були кривими або незграбними, вже в процесі виводу на екран згладжуються, стають рівними і красивими. Піхотинець, в якому всього 1000 полігонів, виглядає так, як ніби в нім декілька десятків тисяч трикутників.

Останнім часом в рамках Glscene активно створюється фізичний ядро. Вже працюють ефекти інерції, прискорення, розрахунку зіткнень, застосування декількох сил. Скоро буде доступна система Verier, що розраховує складні фізичні взаємодії об'єктів, не навантажуючи процесор і акселератор.

Glscene надає можливість зміни будь-яких властивостей матеріалів і накладення текстур, починаючи з основи основ "оточення, розмиття, віддзеркалення і блиск" і закінчуючи декількома видами підтримки прозорості і обробки альфа-каналів. Модуль роботи з матеріалами включає зручний візуальний редактор як це показано Рис.27, в якому замість того, щоб вводити незрозумілі цифри, можна інтуїтивними рухами миші підігнати властивості матеріалів під моделі.

Рис.27.Візуальний редактор матеріалів

Модуль текстур підтримує всі відомі науці графічні формати, навіть тридцяти двох бітові формати bitmap, які поки взагалі мало де підтримуються.

В Glscene також є велика частина потрібних в роботі кольорів, представлена у вигляді зрозумілих порівняльних написів, наприклад "мокра пшениця", "спокійне море", "персик", "темний лимон". Так індексовано понад 150 відтінків. По простих і зрозумілих написах легко зорієнтуватися у виборі потрібного кольору.

Не забуті і спец ефекти. Потрібний дощ, туман, сніг, яскраві сонячні відблиски, виверження вулкана, димові завіси від лісу, що горить, блискавки.



Рис.28. Спец ефекти GLScene

Glscene має підтримку тривимірного звуку через бібліотеку FMOD і BASS. Недавно з'явилася підтримка розширених пристроїв введення, зокрема джойстиків із зворотним зв'язком і гейм-падів.

5.4 Опис закладок GLScene

Після встановлення GLScene на Delphi[11], закладки компонент "GLScene" буде доступна у палітрі компонентів Delphi. Типовими встановленими компонентами є:

Закладка GLScene




GLScene – основний, містить дані про всі об’єкти сцени.




GLSceneViewer – площина для відображення віртуального світу.




GLMemoryViewer - компонент для "невидимого" рендерінга 3D-обєктів; цей компонент використовується для деяких спеціальних об'єктів, наприклад, для розрахунку тіней.




GLMaterialLibrary – бібліотека матеріалів для зберігання текстур




GLCadencer – модулятор часу для оновлення сцени і обробки команд




GLGuiLayout - мета компонента GUI - створити 2D диспетчерів вікна, як нам відомо з Delphi, - форми, групи, мітки, перемикачі, і т.д.





GLBitmapFont, GLWindowsBitmapFont, WideBitmapFont - компоненти для опису растрового або Windows-шрифта.




GLFullScreenViewer – налаштування повно екранного відображення.





GLSoundLibrary, GLSMWaveOut, GLSMFMMod, GLSMBass - компоненти для роботи із звуком.




GLODEManager, GLODEJointList – компоненти для моделювання фізики ODE(Open Dynamic Engine).




GLSDLViewer - компонент для відображення SDL- інформації.

Закладка GLScenePFX(візуальні ефекти)




GLCustomPFXManager – компонент для швидкого способу створення свого менеджера частиць.




GLPolygonPFXManager - компонент для управління візуальними ефектами, використовує розфарбовані правильні багатокутники в якості частиць.




GLPointLightPFXManager - майже даремний менеджер. Малює майже те ж саме, що і попередній, але в більшості випадків працює повільніше, оскільки використовує текстури. Автори рекомендують використовувати його як шаблон для створення своїх менеджерів.




GLCustomSpritePFXManager - спрайтовий менеджер. Текстура створюється за допомогою обробника подій.




TGLPerlinPFXManager - спрайтовий менеджер. Текстуру генерує сам (параметри генератора доступні). Найбільш підходить для створення диму і вогню.




GLFireFXManager – компонент для налаштування відображення ефекту вогню.




GLThorFXManager - компонент для налаштування відображення ефекту блискавки.

Закладка GLScene Utils




AsyncTimer – компонент для синхронізації настання подій




GLCollision - компонент для визначення подій при колізіях.




GLAnimationControler - компонент диспетчер анімацій використовується разом з об'єктом TGLActor. Диспетчер анімацій запам'ятовує анімації, які використовує актор.




AVIRecorder – компонент для запису зображення у відео файл.




GLDCEManager - компонент для опрацьовування простої фізики і для обробки зіткнень (щоб персонажі не проходили крізь стіни ну і просто для визначення зіткнення). DCE-Dinamic Collision Engine.




GLFPSMovementManager – менеджер руху використовується здебільшого для ігор від першого лиця.




ScreenSaver – компонент для створення скрінсейверів.




GLNavigator – компонент корисний при створенні шутерів або ігор з управлінням мишею.




GLUserInterface - Аналогічно попередній компоненті (дивитися мишею, чутливість миші і ін.)




GLTimeEventsMGR – компонент для створення часових подій.




GLVfsPAK – компонент для роботи з архівами




GLJoystick - компонент для роботи з джойстиками.



6. Проектування системи

В даному дипломному проекті мною був розроблений програмний додаток "Фрактальні ландшафти" для генерування карт висот за допомогою алгоритму фрактального шуму та з метою про демонструвати можливості бібліотеки OpenGL і візуальної бібліотеки GLScene(із завдатком ігрового ядра) по побудові 3Д ландшафтів по карті висот.

Крім цього, програма має розвинений графічний інтерфейс користувача та забезпечувати сервісні функції, типові для сучасних Windows-програм.

Вибір середовища реалізації проекту є однією з основних задач процесу розробки програмних продуктів.

Вибір середовища реалізації має дві складові:
  1. операційна система (системи), під управлінням якої працюватиме програмний продукт;система (системи) програмування, за допомогою якої роз­роб­лятиметься програма.

Програма «Фрактальні ландшафти» призначена для роботи під управ­лінням операційної системи Windows XP та Windows Vista, 7.

Вибір цих ОС пов’язаний з тим, що зараз на переважній більшості персональних комп’ютерів використовується саме ці система або системи, споріднені з нею. Тому такий вибір забезпечуватиме можливість роботи з програмою на більшості з робочих станцій.