Общие сведения:
Precombined Geometry - Предварительно объединенные (предкомбинированные) ресурсы, сокращенно называемые Precomb.
Движок объединяет меши похожих элементов в ячейке в один элемент. Это позволяет уменьшить нагрузку на процессор при рендеринге.
Precomputed Visibility - Предварительно вычисленные данные видимости, сокращенно называемые Previs.
Данные previs показывают игре какие предметы в области 3х3 (из центральной ячейки в квадратной области ячеек 3x3) вы видите, а какие нет, потому что их видимость заблокирована другими предметами.
При использовании previs движок игры не будет отображать ничего, что вы не видите.
Фактически в каждый момент времени отображается только очень небольшая часть области 3х3 ячеек пространства вокруг.
Почему и для чего это нужно делать:
Не все знают, но Bethesda предприняла некоторые меры по оптимизации и повышению частоты кадров в игре и особенно в городах. Одной из этих мер и является previs/precomb. Однако, многие моды ломают предкомбинации по умолчанию и не заменяют их, что приводит к значительному падению фпс. Такие моды могут вызывать большие проблемы с производительностью: при большом количестве сломанных предкомбинаций, а значит и данных видимости, все свободные ресурсы (до 100%) процессора\видеокарты будут заняты визуализацией среды - это означает, что при возникновении событий, которые увеличивают нагрузку (спавн больших групп нпц, погодные явления, разные графические эффекты и т.д.) у процессора\видеокарты не будет запаса по производительности, что приведет к падению фпс.
Какие моды потенциально могут отключить previs/precomb?
- Моды, которые удаляют различные статические объекты на карте.
- Моды заменяющие статические объекты: разные озеленители деревьев, реплейсеры, ремоделлеры и т.д.
- Ретекстуры и различные «оптимизаторы» текстур, которые меняют пути стандартных расположений текстур.
Как восстановить предкомбинации и данные видимости отключенные модом? Об этом рассказ ниже.
Подготовка:
- Все Содружество условно можно разделить на area (области, с ячейкой в центре и два диаметра ячеек вокруг нее) - кватдраты 5х5 ячеек.
См. рис. 1:
https://cloud.mail.ru/public/5eqF/4zGwGgU8o
Эмпирически я выяснил, что для вычисления видимости минимальное (достаточное) расстояние между центрами соседних областей (area) - 5 ячеек. Центральная ячейка начальной области (5х5) имеет координаты (0,0) на карте. Остальные области, расположены от нее через одну ячейку, т.е. между соседними областями одна клетка (они не вплотную). См. карту на рис. 2 и 3:
https://cloud.mail.ru/public/7XCb/fw4Xk8HdY
https://cloud.mail.ru/public/5cnd/XZ9PFY3ZQ
Creation Kit будет производить генерацию видимости для каждой области (синие квадраты) из ячеек фиолетового цвета для связанных с ними кластеров ячеек 3х3 вокруг (9 кластеров и соответственно 9 фиолетовых ячеек в центре кластера для каждой области) см. рис. 4:
https://cloud.mail.ru/public/M5GD/UUEZARoDA
Вне зависимости от того в какой части области (синие квадраты) вы выбрали ячейку, previs для нее будет выполнятся именно из этих ближайших фиолетовых ячеек. Настоятельно рекомендую удалять старые precombine, даже если вы их не делали, для каждого измененного Вами статика (или ячейки). Это обезопасит ваш мод от графических артефактов. Как сделать ниже расскажу)
- По карте нужно определиться с местоположением и сделать список с координатами либо ячеек, либо центров областей (желтые ячейки), где находятся наши измененные статики (или область мода).
Создадим precombined geometry для наших областей:
- В CreationKit открываем наш мод.
- В окне Object Window-WorldObjects -> Static удаляем precomb у всех ячеек содержащих измененные статики (те статические объекты, которые изменил или добавил Ваш мод).
Для этого нужно выделить правой кнопкой статик и выбрать Clear Affected Cells for PreCombine Data. Нужно выбирать по одному статику за раз. С выделенной (с шифтом) группой статиков - не работает. Удалятся все предкомбинации в области 3х3 вокруг! статика (с картой это не бьется, тут небольшой подвох, потому что источником глюков, по моему мнению, и являются старые предкомбинации, которые входят в "сетку" по моей карте, но не попали в эту область, ну они попали, но не все).
- Генерируем новый precomb для нужных областей (area), одной ячейки (cell) или сразу для всей карты (в этом случае придется делать previs тоже на все карту, иначе будут артефакты изображения). Идея такая, что если для генерации Вы будете указывать, как по карте желтые квадратики (ячейки), то вокруг них сгенерируется кластеры видимости ИЗ 9-ти фиолетовых ячеек (все вокруг автоматом). 9 кластеров по 9 ячеек))) И чтобы покрыть всю пустошь мне достаточно было генерировать только из желтых ячеек. Это все равно было ооооочень долго, но все же. Я хотел бы, чтобы вы поняли как это происходит) Иными словами, указываешь желтую ячейку и вокруг нее из всех фиолетовых начинается генерация видимости 3х3. Слева-направо, сверху вниз - 9 кластеров 3х3 (белые квадратики). И если ваша ячейка не попала в желтую, то для нее сгенерируется видимость из фиолетовой ячейки в кластер которой она попала + из окружающих (фиолетовых) к которым она ближе. В их кластерах тоже произойдет генерация видимости. Удобнее всего пользоваться разлинованной картой). А также смотреть в Creation Kit какие смежные ячейки сгенерировались (вы это увидите).
Для одной области или ячейки:
-
- В окне Cell View, там, где написано World Space выбираем Commonwealth.
- Нажимаем на Coords, чтобы отсортировать ячейки по координатам.
- Ищем по координатам и загружаем нужную нам ячейку (дв. клик по ней).
- Сверху в выпадающем меню World выбираем PreCombine Geometry for Loaded Area (или PreCombine Geometry for Current Cell).
- Ждем окончания и сохраняем мод.
Для всей карты:
- Сверху в выпадающем меню World выбираем PreCombine Geometry for World.
- Ждем окончания (несколько часов).
- Сохраняем мод.
Теперь сделаем precomputed visibility для выбранных областей/ячеек:
-
- В CreationKit открываем наш мод, если не был открыт.
- Previs выполняется только для одной области (area) или одной ячейки (cell), поэтому следующие шаги повторяем для каждой области/ячейки по отдельности:
- В окне Cell View, там где написано World Space выбираем Commonwealth, если не выбрано.
- Загружаем первую ячейку (cell) с координатами из нашего списка.
- Сверху в выпадающем меню Visibility выбираем Generate Precombined Visibility for All Loaded Cells (илиPrecombined Visibility for Current Cell).
- Ждем окончания и сохраняем мод.
- Помечаем в нашем списке координаты загруженной в пункте b.) ячейки.
- Повторяем п.2 до конца списка.
Что дальше?
В итоге у нас получится две папки по пути:
Data\meshes\PreCombined
Data\Vis
А также модифицированный esp, содержащий данные о previs/precomb наших измененных ячеек.
Теперь можно добавить получившиеся папки к папкам с мешами мода и упаковать в архив типа: "имя esp файла мода" - main.ba2 (без кавычек), любым понравившимся вам способом.
Замечания и рекомендации:
- Сохраняйтесь чаще. Могут быть вылеты и зависания компьютера, предположительно из-за недостатка места на диске для файла подкачки и(или) видеопамяти (рандомное зависание ПК). Места на диске должно быть достаточно: десятки гигабайт.
- У данной технологии с использованием Creation Kit также есть недостатки:
- В областях где была проведена precomb/previs, при прохождении через объекты без коллизии (напр. кусты, ветки с листьями и т.д.) могут появлятся артефактные изображения. Встречается тогда, когда эти объекты образуют непрозрачный фон. Это особенность такого преобразования. Как вариант, исключить ячейки (cell) cтакими статиками из предкомбинации, см. выше (Clear Affected Cells for PreCombine Data).
- Как отдельно одну ячейку исключить из предкомбинации без костылей - FO4Edit со скриптом.
- При строительстве разрушение статиков разрушает все предкомбинации в этой ячейке. Это нужно учитывать.
- Часть статиков никогда не участвует в предкомбинации: трава (только та, которая генерируется процедурно), мелкие предметы на земле (щебень, палки, которые генерируется процедурно), предметы которые можно поднять (мусор, оружие, броня), взорвать (взрывающиеся машины, баллоны), предметы с которыми можно взаимодействовать (двери, стулья, кровати, собираемые растения), некоторые анимированные предметы и т.д.
- Добавление объектов в ячейку не разрушает предкомбинацию. Только
удаление или изменение и только, когда они находятся в предкомбинации.
- Любое редактирование, которое отключает предкомбинацию в ячейке, отключит previs во всем кластере 3x3 включающем эту ячейку, см рис 4.
- Не обязательно внедрять previs/precomb в сам мод, можно сделать патч в виде дополнительного esp и архива .ba2 с данными. Для этого нужно проделать все те же операции только без активации мода в CreationKit и после сохранить все в отдельный esp. Но только для одного мода, если модов больше одного, необходимо объединять меши и есп.
PS: Все, что изложено в этой статье - мое частное мнение, а данные получены опытным путем и из обсуждений на зарубежных форумах. Как все работает по версии Bethesda мне неизвестно, т.к. официальных мануалов нет.
Пример использования технологии:
https://modgames.net/load/fallout_4/globalnye/resurrection_patch_optimizacii_optimization_patch_for_resurrection_mod/425-1-0-23780#comEnt1324940
Перепечатка недопустима.
|