Создаём HOM, порталы и сектора
Материал из Mod Wiki.
Что понадобится: x-Ray SDK
-- Для начала, зачем оно нужно:
HOM - расшифровывается как Hierarchical Occlusion Mapping, или маппинг хиерархических отсечений. Что это значит: Упрощённо говоря, с помощью HOM, можно повысить производительность рендеринга сложных уровней на ~20%.
-- Как работает HOM: Не вдаваясь в технические подробности, объясню упрощённо: То, что закрыто от игрока Occlusion'ом - процессор не обрабатывает, а видеокарта не рендерит и значит система экономит свои ресурсы, производительность при этом, естественно, возрастает.
-- Секторы и порталы: Про них - читаем здесь: http://www.gamedev.ru/articles/?id=30131 - разъяснено очень просто и доступно. Могу лишь добавить, что в X-Ray 3D Engine, геометрия уровня в построении секторов не участвует, он использует для этого HOM-объекты.
-- Вывод: Все эти заморочки, позволяют практически двухкратно поднять производительность системы, и благодарные юзеры с не слишком сильными компами (а таких большинство), будут таскать вас на руках, за такой шикарный подарок ;)
Замечания:
1). Делать всё это, актуально для действительно сложных и мощных карт, так как не только подымет скорость в итоге, но и позволит напихать в карту, побольше всякой интересной геометрии.
2). Изложенные выше принципы, актуальны не только для сталкера, но и для подавляющего большинства современных игр. Например, лучше всего, это всё дело с порталами и секторами продумано на играх на движке Sourse (Half-Life 2 и т. д..)
Итак, приступаем к креативу!
Допустим, есть у вас карта, на которой надо сделать всё вышеперечисленное. Как это сделать, я объясню на примере старого доброго кубика, сделаем ему HOM, поставим на карту, и создадим порталы с секторами.
Начнём с HOM.
Вот наша карта, на ней кубик, надо для него сделать HOM.
Чтобы сделать HOM, сбрасываем сцену, и идём в Библиотеку статической геометрии, находим там наш кубик. У меня он находится по адресу editor \ shadertest_box, вы можете заюзать свой.
Теперь, этот кубик, там же, в библиотеке, экспортим в формат LWO, чтобы стереть все настройки материалов, на базе экспортированного объекта мы и сделаем HOM, и материалы с шейдерами ему ни к чему: обозвал я его shadertest_box_occ, (OCC - значит окклюдер, отсекатель).
Всё. Зэкспортили. Теперь импортируем его обратно, заходим в настройки объекта, в поле Object Type (Тип объекта), меняем его тип со Static на HOM, выходим с настроек и сохраняем изменения. Тут же - видим, вид нашего кубика - изменился, теперь - он стал HOM-объектом.
Теперь - загружаем снова нашу карту, выбираем режим "объекты", в самом низу, жмём кнопку "обновить список", чтобы в нём появился новый объект, и добавляем наш окллюдер на карту, как обыкновенный объект.
Осталось только "подогнать" (двигая, вращая и т. д...) окклюдер под имеющийся кубик как можно точнее.
Всё! HOM-окклюдер для объекта успешно создан. Таким-же образом, можно (и нужно) поступить со всеми объектами на карте, но создавать окклюдеры лучше всего - ещё в 3Ds Max, в виде неких "упрощённых муляжей" для создаваемых объектов. Хотя можно и так как я описал выше.
Секторы и порталы необходимо генерировать ПОСЛЕ того, как сборка карты закончена, все объекты на месте, окклюдеры установлены, и т. д... Короче перед самой прекомпиляцией. Делаются - они очень просто, так как в СДК - возможности по ним весьма убогие, а многие так и вообще "временно отключены". Но создавать их можно.
Итак:
Переходим в режим "Секторы" и создаём базовые порталы, нажав соответствующую кнопку. Если объектов много, целесообразно "проверить на правильность" одноимённой кнопкой. Сектора созданы.
Переходим в режим "порталы" и "вычисляем все порталы".
Усё! Occlusion Mapping - сделан, сектора созданы, а порталы к ним вычислены. Спасибо за внимание.
--Haron 13:06, 23 марта 2008 (EET)