Virtual Laboratory Wiki
Advertisement

Мои проекты[]

Игровой объект - модуль который инкапсулирует в себе внутреннию реализацию и предоставляет публичные интерфейсы определяющие его тип и класс в игровом мире.

Пример: Игровой обьект - видимый объект на сцене.

Содержит или может содержать:

1. Шейдер улучшающий визуальное представление. Возможно использование нескольких шейдеров. Для каждой группы полигонов свой шейдер, но с точки зрения быстродействия предпочительно использование одного шейдера, а еще лучше использование внешнего к обьекту шейдера.

2. Каркас или геометрия. Конструкция из набора полигонов. Каркас состоит из групп полигонов объединенных по признаку материала. Это сделано тоже для повышения быстродействия отображения.

Материал группы полигонов:

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

- техника шейдера, входные параметры для работы шейдера (цвет, основная текстура, текстура нормалей и т.д.).

3. Анимация обьекта в случае реализации интерфейса анимации.

4. Физическая характеристики объекта. Зависит от модуля физической среды будующего существования объекта.

Поэтому конкрентные параметры зависят от ссылки на модуль реализации физики.

5. Програмная реализация дополнительных интерфейсов предоставляемых объектом. Реализация внутренней логики объекта и его взаимодействие в внешним миром.

6. Внешние настройки объекта при помещении его на сцену. Собственно уникальные особенности объекта и его состояние. По аналогии с программирование - это свойства или поля объекта.

7. Авторские права на созданный модуль. Так как разработанный объект представляет собой объект авторского права разработчика данного модуля. Арт-дизайнера, 3D-модельера, аниматора, прогрммиста внутренней логики поведения и т.д.

Сейчас я разрабатываю конструктор видимых объектов. Что реализовано.

Основное назначение:

- среда для конструирования, отладки, компиляции видимых объектов сцены.

Входные данные:

- ссылки на внешние модули. Это могут быть как стандартные так и свои модули. Обязательные ссылки - модуль камеры, модуль освещения, модуль рендеринга. В зависимости от выбранных модулей меняется представление объекта в конструкторе, что бы дизайнер максимально реально представлял себе будующий вид объекта на сцене.

- файл геометрии, в формате *.3ds, *.obj, *.x в дальнейшем можно расширить список поддерживаемых типов. Для удобства работы полигоны геометрии должны быть сгрупированы по критерию одинакового материала.

- шейдер. Здесь проблема. Файл шейдера *.fx в использовании, по моему мнению слишком сложный для простого дизайнера. И я хочу набор наиболее распространенных шейдеров упаковать в модули с предоставлением простого интерфейса. Который будет предоставлять внешний вид эффекта реализованного в шейдере и требуемые настройки которые должен задать дизайнер. Т.е по принципу материала как в 3D MAX. Сторонние разработчики могут применять свой, авторский набор шейдеров упакованные в модуль.

- текстуры определяющие внешний вид и как параметры для шейдера. в виде файлов *.jpg, *.tga, *.dds и т.д.

Работа с объектом:

Задание группе полигонов материала отображения и настройка его.

Оптимизация отображения обьекта, генерация текстур нормалей, для сглаживания переходов между полигонами. Основная цель - облегчение труда дизайнера. Хотя это опционально.

Генерация или импорт уровней детализации объекта в зависимости от экспортируемого параметра - на пример расстояния наблюдения.

Подключение файлов внутренней программы для реализации дополнительных интерфейсов или внутренней логики отображения и поведения объекта на языках .NET (C#, VB.net и подобхых).

Компиляция объекта:

Сборка объекта в файл типа *.dll. Геометрия, текстуры, настройки упаковываются в виде внутренних ресурсов *.dll. Конечным продуктом дизайнера объекта является этот файл-модуль.

Следующий этап - сборка сцены из модулей и настройка их характеристик. Этот конструктор в стадии проектирования. Он должен включать в себя программирование логики игры. Конечным продуктом будет являться скомпилированный файл *.exe либо модуль с ресурсами для окончательной сборки в среде IDE.

Advertisement