Создаём HOM, порталы и сектора

Материал из Mod Wiki.

(Различия между версиями)
Перейти к: навигация, поиск
Версия 18:17, 23 марта 2008 (править)
BAC9-FLCL (Обсуждение | вклад)
(Авторы)
← К предыдущему изменению
Текущая версия (12:39, 17 июля 2008) (править) (отменить)
Don Reba (Обсуждение | вклад)
(мелкие исправления; добавил ссылку на перевод)
 
Строка 1: Строка 1:
-[[Категория:Статьи участников]] 
- 
Для работы нам понадобится X-Ray SDK. Для работы нам понадобится X-Ray SDK.
Строка 21: Строка 19:
message = 1. Делать всё это, актуально для действительно сложных и мощных карт, так как не только подымет скорость в итоге, но и позволит напихать в карту, побольше всякой интересной геометрии. message = 1. Делать всё это, актуально для действительно сложных и мощных карт, так как не только подымет скорость в итоге, но и позволит напихать в карту, побольше всякой интересной геометрии.
-2. Изложенные выше принципы, актуальны не только для сталкера, но и для подавляющего большинства современных игр. Например, лучше всего это всё дело с порталами и секторами продумано на играх на движке Sourse (Half-Life 2 и т. д.)+2. Изложенные выше принципы, актуальны не только для сталкера, но и для подавляющего большинства современных игр. Например, лучше всего это всё дело с порталами и секторами продумано на играх на движке Source (Half-Life 2 и т. д.)
}} }}
Строка 33: Строка 31:
Вот наша карта, на ней кубик, надо для него сделать HOM. Вот наша карта, на ней кубик, надо для него сделать HOM.
-[[Изображение:100.JPG|400px]]+[[Изображение:100.JPG|left|thumb]]<div style="clear:both"></div>
Чтобы сделать HOM, сбрасываем сцену, и идём в Библиотеку статической геометрии, находим там наш кубик. У меня он находится по адресу '''editor\shadertest_box''', вы можете заюзать свой. Чтобы сделать HOM, сбрасываем сцену, и идём в Библиотеку статической геометрии, находим там наш кубик. У меня он находится по адресу '''editor\shadertest_box''', вы можете заюзать свой.
-[[Изображение:200.JPG|400px]]+[[Изображение:200.JPG|left|thumb]]<div style="clear:both"></div>
Теперь, этот кубик, там же, в библиотеке, экспортим в формат LWO, чтобы стереть все настройки материалов, на базе экспортированного объекта мы и сделаем HOM, и материалы с шейдерами ему ни к чему: обозвал я его '''shadertest_box_occ''', (OCC - значит окклюдер, отсекатель). Теперь, этот кубик, там же, в библиотеке, экспортим в формат LWO, чтобы стереть все настройки материалов, на базе экспортированного объекта мы и сделаем HOM, и материалы с шейдерами ему ни к чему: обозвал я его '''shadertest_box_occ''', (OCC - значит окклюдер, отсекатель).
-[[Изображение:300.JPG|400px]]+[[Изображение:300.JPG|left|thumb]]<div style="clear:both"></div>
Всё, экспортировали. Теперь импортируем его обратно, заходим в настройки объекта, в поле '''Object Type''' (тип объекта), меняем его тип со '''Static''' на '''HOM''', выходим с настроек и сохраняем изменения. Тут же - видим, вид нашего кубика - изменился, теперь - он стал HOM-объектом. Всё, экспортировали. Теперь импортируем его обратно, заходим в настройки объекта, в поле '''Object Type''' (тип объекта), меняем его тип со '''Static''' на '''HOM''', выходим с настроек и сохраняем изменения. Тут же - видим, вид нашего кубика - изменился, теперь - он стал HOM-объектом.
-[[Изображение:400.JPG|400px]]+[[Изображение:400.JPG|left|thumb]]<div style="clear:both"></div>
Теперь - загружаем снова нашу карту, выбираем режим "объекты", в самом низу, жмём кнопку "обновить список", чтобы в нём появился новый объект, и добавляем наш окллюдер на карту, как обыкновенный объект. Теперь - загружаем снова нашу карту, выбираем режим "объекты", в самом низу, жмём кнопку "обновить список", чтобы в нём появился новый объект, и добавляем наш окллюдер на карту, как обыкновенный объект.
-[[Изображение:500.JPG|400px]]+[[Изображение:500.JPG|left|thumb]]<div style="clear:both"></div>
Осталось только "подогнать" (двигая, вращая и т. д...) окклюдер под имеющийся кубик как можно точнее. Осталось только "подогнать" (двигая, вращая и т. д...) окклюдер под имеющийся кубик как можно точнее.
-[[Изображение:600.JPG|400px]]+[[Изображение:600.JPG|left|thumb]]<div style="clear:both"></div>
Всё! HOM-окклюдер для объекта успешно создан. Таким-же образом, можно (и нужно) поступить со всеми объектами на карте, но создавать окклюдеры лучше всего - ещё в '''3DSMax''', в виде неких "упрощённых муляжей" для создаваемых объектов. Хотя можно и так как я описал выше. Всё! HOM-окклюдер для объекта успешно создан. Таким-же образом, можно (и нужно) поступить со всеми объектами на карте, но создавать окклюдеры лучше всего - ещё в '''3DSMax''', в виде неких "упрощённых муляжей" для создаваемых объектов. Хотя можно и так как я описал выше.
Строка 63: Строка 61:
Переходим в режим '''Секторы''' и создаём базовые порталы, нажав соответствующую кнопку. Если объектов много, целесообразно "проверить на правильность" одноимённой кнопкой. Сектора созданы. Переходим в режим '''Секторы''' и создаём базовые порталы, нажав соответствующую кнопку. Если объектов много, целесообразно "проверить на правильность" одноимённой кнопкой. Сектора созданы.
-[[Изображение:700.JPG|400px]]+[[Изображение:700.JPG|left|thumb]]<div style="clear:both"></div>
'''Переходим в режим "порталы"''' и "вычисляем все порталы". '''Переходим в режим "порталы"''' и "вычисляем все порталы".
-[[Изображение:800.JPG|400px]] +[[Изображение:800.JPG|left|thumb]]<div style="clear:both"></div>
Всё. Occlusion Mapping - сделан, сектора созданы, а порталы к ним вычислены. Спасибо за внимание. Всё. Occlusion Mapping - сделан, сектора созданы, а порталы к ним вычислены. Спасибо за внимание.
Строка 76: Строка 74:
Коррекция: [[Участник:BAC9-FLCL|BAC9-FLCL]] Коррекция: [[Участник:BAC9-FLCL|BAC9-FLCL]]
 +[[en:Creating HOM, portals, and sectors]]
[[Категория:Статьи участников]] [[Категория:Статьи участников]]

Текущая версия

Для работы нам понадобится X-Ray SDK.

Для начала, зачем оно нужно:

HOM - расшифровывается как Hierarchical Occlusion Mapping, или маппинг иерархических отсечений. Что это значит: упрощённо говоря, с помощью HOM, можно повысить производительность рендеринга сложных уровней на ~20%.

Как работает HOM: Не вдаваясь в технические подробности, объясню упрощённо: то, что закрыто от игрока Occlusion'ом - процессор не обрабатывает, а видеокарта не рендерит - а значит, система экономит свои ресурсы, производительность при этом, естественно, возрастает.

Секторы и порталы: про них - читаем здесь - разъяснено очень просто и доступно. Могу лишь добавить, что в X-Ray 3D Engine, геометрия уровня в построении секторов не участвует, он использует для этого HOM-объекты.

Вывод: Все эти заморочки позволяют практически двухкратно поднять производительность системы, и благодарные юзеры с не слишком сильными компами (а таких большинство), будут таскать вас на руках за такой шикарный подарок ;)

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

2. Изложенные выше принципы, актуальны не только для сталкера, но и для подавляющего большинства современных игр. Например, лучше всего это всё дело с порталами и секторами продумано на играх на движке Source (Half-Life 2 и т. д.)


Итак, приступаем к креативу!

Допустим, есть у вас карта, на которой надо сделать всё вышеперечисленное. Как это сделать, я объясню на примере старого доброго кубика, сделаем ему HOM, поставим на карту, и создадим порталы с секторами.

Начнём с HOM.

Вот наша карта, на ней кубик, надо для него сделать HOM.

Чтобы сделать HOM, сбрасываем сцену, и идём в Библиотеку статической геометрии, находим там наш кубик. У меня он находится по адресу editor\shadertest_box, вы можете заюзать свой.

Теперь, этот кубик, там же, в библиотеке, экспортим в формат LWO, чтобы стереть все настройки материалов, на базе экспортированного объекта мы и сделаем HOM, и материалы с шейдерами ему ни к чему: обозвал я его shadertest_box_occ, (OCC - значит окклюдер, отсекатель).

Всё, экспортировали. Теперь импортируем его обратно, заходим в настройки объекта, в поле Object Type (тип объекта), меняем его тип со Static на HOM, выходим с настроек и сохраняем изменения. Тут же - видим, вид нашего кубика - изменился, теперь - он стал HOM-объектом.

Теперь - загружаем снова нашу карту, выбираем режим "объекты", в самом низу, жмём кнопку "обновить список", чтобы в нём появился новый объект, и добавляем наш окллюдер на карту, как обыкновенный объект.

Осталось только "подогнать" (двигая, вращая и т. д...) окклюдер под имеющийся кубик как можно точнее.

Всё! HOM-окклюдер для объекта успешно создан. Таким-же образом, можно (и нужно) поступить со всеми объектами на карте, но создавать окклюдеры лучше всего - ещё в 3DSMax, в виде неких "упрощённых муляжей" для создаваемых объектов. Хотя можно и так как я описал выше.

Секторы и порталы необходимо генерировать после того, как сборка карты закончена, все объекты на месте, окклюдеры установлены, и т.д. Короче, перед самой прекомпиляцией. Делаются они очень просто, так как в SDK - возможности по ним весьма убогие, а многие так и вообще "временно отключены". Но создавать их можно.

Итак:

Переходим в режим Секторы и создаём базовые порталы, нажав соответствующую кнопку. Если объектов много, целесообразно "проверить на правильность" одноимённой кнопкой. Сектора созданы.

Переходим в режим "порталы" и "вычисляем все порталы".

Всё. Occlusion Mapping - сделан, сектора созданы, а порталы к ним вычислены. Спасибо за внимание.

Авторы

Статья создана: Haron
Коррекция: BAC9-FLCL

Личные инструменты
На других языках