Необходимое программное обеспечение

 

3ds max 7
3ds max plugin: LOM Utils

LO Viewer

CDDS Studio

Брифинг

 

  1. Настраиваем 3ds max для работы с LOM Utils.
  2. Создаем mesh модель здания (Render Mesh).
  3. Если ваше здание будет иметь LOD-ы* – создаем одну dummy (LOD dummy) для них. Прилинковываем к нему все Render Mesh-и относящиеся к LOD-ам.
  4. Создаем низко-детализированную mesh для модели коллизий (Collision Model).
  5. Создаем dummy для bounding box (Object Bounding Box).
  6. Экспортируем в LOM.
  7. Опционально складываем текстуры в CDDS контейнер.

 

* LOD – level of detail, по-русски уровень детализации.
В приложениях рисующих трехмерную графику в реальном масштабе времени, не только сцена, но и каждый кадр имеет бюджет mesh-ей и треугольников. Причина в сложности сцены, когда прорисовка всех объектов сразу невозможна за разумное время из-за огромного суммарного количества mesh-ей и треугольников.

Метод, применяемый в Lock On, состоит в создании моделлером нескольких вариантов одного объекта, с разным количеством mesh-ей и треугольников. При отрисовке кадра будет выбран один из этих вариантов в зависимости от удаления от камеры. Таким образом, будет видна очень детализированная модель вблизи, и очень простая модель с большого расстояния.
Итак, каждый объект имеет несколько своих копий с разным количеством треугольников и мешей. Например, Ми-24В имеет 5 LOD-ов (счет в программировании начинается с нуля):

LOD объектов треугольников расстояние рисования (м)
0 – 30
30 – 50
50 – 150
150 – 400
400 – 3000

Настройка 3ds max для plugin-а LOM Utils


Выполните инструкции из readme от LOM Utils.

 

Настройки 3ds max:

 

ü Customize > Units Setup > Display Unit Scale > Metric > 1 unit = 1 м

 

Time Configuration

ü Frame Rate 100 FPS

ü Animation Start Time -100

ü Animation End Time 100

 

Animation

ü Any object > Motion > Assign Controller >

o Position > Linear Position > Make Default

o Rotation > Linear Rotation > Make Default

 

Интерполяция между ключами анимации должна быть линейной.

Определения

 

Render Mesh

· Mesh модель.

  • Конструкция: Одна или несколько mesh-ей для отрисовки в Lock On (они могут быть прилинкованны к LOD dummy).

ü LOMUtils > Свойства > Тип > Геометрия (значение по умолчанию)

ü LOMUtils > Свойства > Флаги > Рисование (значение по умолчанию)

ü LOMUtils > Свойства > LOD параметры > LOD Level > 0, 1 или 2 (уровень детализации имеет смысл задавать только если mesh присоединен к LOD dummy).

Не обязательно задавать LOD, чтобы объект отображался в Lock On.

Также см. раздел “Общие ограничения”.

 

LOD dummy

Ø Выполняет роль родителя для Render Mesh используемых как LOD. Они прилинковываются к нему и наследуют от него значения LOD. Все что не привязано к LOD dummyрисуется всегда.

  • Конструкция: Dummy.

ü LOMUtils > Свойства > Тип > Уровни детализации

ü LOMUtils > Свойства > LOD параметры > Кол-во уровней > 1, 2 или 3

ü LOMUtils > Свойства > LOD параметры > в окошке под Кол-во уровней – расстояния (в метрах) на которых будут отображаться соответствующие Render Mesh-и.


Для маленьких объектов лучше использовать меньшую дистанцию видимости. Хотя, возможно использования для этого альтернативного решения – переменной vis в перечне объектов (см. раздел “Переменные перечней *.sht”).


LOD dummy может быть опущен, если объект имеет только один LOD. Однако наличие хотя бы двух LOD-ов очень важно для производительности.

Также см. раздел “LOD-ы и clipping в Lock On”.

 

Collision Model

Ø Используется для расчета коллизий.

  • Конструкция: Низкодетализированная mesh модель (в 7-10 раз меньше треугольников чем у LOD00 Render Mesh).

ü LOMUtils > Свойства > Тип > Геометрия (значение по умолчанию)

ü LOMUtils > Свойства > Флаги > Столкновения

Причем, если вы собираетесь сажать на крышу здания вертолет, надо, чтобы макушка Collision Model соответствовала крыше. И придется задуматься о надстройках (отобразить их в Collision Model).

 

Object Bounding Box

Ø Bounding Box* объекта в Lock On. В частности используется для просчета столкновений; после попадания летательного аппарата или снаряда в Object Bounding Box начинается просчет столкновения с Collision Model.

  • Конструкция: Dummy масштабируется чтобы все, включая модель коллизий, помещалось в нем. Причем все что анимируется должно во всех кадрах умещаться внутри Object Bounding Box. И при этом Object Bounding Box должен быть как можно меньше.

ü LOMUtils > Свойства > Тип > Bounding Box

 

Object Bounding Box – единственное что нельзя анимировать.

* Bounding Box – см. определение в статье “Bounding Box (Glossary)” в руководстве пользователя 3ds max.

 

Освещенные ночью окна

Ø Отдельная mesh, которая отрисовывается в Lock On когда процент угла возвышения солнца (100 зенит, 0 горизонт) находится между двумя ключами анимации.

  • Конструкция: Mesh модель с самосветящимся материалом.

Dope Sheet > выделяем mesh с окнами >

    • Tracks > Visibility track > Add
    • Controller > Assign > ArgBased Visibility > Add

Аргумент так и оставляете 0.

 

Не забудьте выбрать цвет поярче для Self-Illumination (Material Basic Parameters).

 

Дым

Ø Отдельный объект, который отрисовывается от точки появления дыма.

  • Конструкция: В 3ds max поставьте точку появления дыма с помощью Helpers > Point. И назовите её “smoke” (без кавычек). Она может находиться вне Object Bounding Box.

В structtable.sht в параметрах вашего объекта задайте classname = "LSmoker";

Материал

 

  • Diffuse map только BMP или TGA (если нужен альфа канал).

4. Разрешение карт текстур равно 2-ум в степени n (64, 128, 256, 512, 1024..).

  • Тип только Standart.

 

Можно настраивать:

 

Shader Basic Parameters:

ü 2-Sided

 

Material Basic Parameters:

ü Ambient

ü Diffuse (можно карту)

ü Specular

ü Self Illumination

 

Specular Highlights:

ü Specular level

ü Glossiness

 

Полигон с TGA текстурой может не отбрасывать тени. Для этого TGA текстуре должно быть присвоено имя, начинающееся на "ns_". В версии 1.12(а,б) этот метод не работает.

Переменные перечней *.sht

 

Перечни параметров объектов – это файлы с расширением sht. Они находятся в директории Bazar.

 

file – имя файла модели объекта (имя файла без расширения).

desrt – имя файла модели разрушенного объекта (имя файла без расширения).
life – прочность объекта (методом lifebar*)

vis – множитель видимости (для маленьких объектов лучше ставить поменьше).

classname – класс объекта (от него зависит поведение объекта и анимация).

 

*Lifebar –состояние объекта представленное одним числом.

Анимация


Анимация в Lock On состоит из двух элементов:

1. Анимация в 3ds max.

2. Состояние аргумента рисования в Lock On.

 

Объекты Lock On делятся на классы. Различные классы добавляют объектам дополнительную функциональность, например:

  • Анимация аргументов рисования (краны, аэродромные радары).
  • Фейерверк при уничтожении (склад боеприпасов).
  • Крепление проводов (ЛЭП).

 

За каждую анимацию отвечает свой идентификатор анимации, или как его ещё можно назвать, аргумент рисования. Значение аргумента рисования можно назвать относительной величиной, которая используется для управления анимацией.

 

Например:

· У освещенных ночью окон значением аргумента является процент текущего угла возвышения солнца.

· У радара РСП-7 класс "lRadarRSP7". У этого класса две анимации (не считая анимации разрушения). Аргумент №3 отвечает за вращение модели антенны курса, а аргумент №4 за вращение модели антенны глиссады. Значениями обоих аргументов является относительная величина вращения. Она меняется от -1.00 до 1.00 за 2 сек.

 

Посмотреть классы объектов можно в перечнях *.sht. Аргументы существующих анимаций можно найти только с помощью LO Viewer, открывая файлы объектов в Bazar\world\Shapes или Bazar\Terrain\Structures\High.

 

 

Обычно здания анимируются вращением. В LOM Utils для этого есть специальный контроллер ArgBased Rotation.

 

Все анимации зданий цикличные. В LO Viewer цикл представлен нижней полосой прокрутки от -1.00 до 1.00 (как и в Lock On). В 3ds max циклу соответствует интервал от -100 до 100 кадров.