Информация о работе в Object Builder - подчерпнута от Xakuda, конфигов StellRat, большая часть перевод мануалов БИС. Однако разобраться с ним без выше указанных товарищей было бы сложновато.
Хотел сразу продолжить предыдущий урок, но понял, что не разобравшись с LOD-ами будет сложно рассказывать дальше. Поэтому разбираемся в этом уроке, чтобы дальше уже не останавливаться.
Итак поехали:
Что такое LOD детализации ? (выдержка из мануаля WikI Bistudio перевод)
Lod расшифровывается как уровень детализации (Level of Detail), однако для Арма3 в LOD определяется не только детализация различных вариантов модели, (как она выглядит на том или ином расстоянии), но и взаимодействие этой модели с окружающей средой. Такие лоды называются не просто набором цифр, а имеют уникальные имена, например Path или ViewGeometry и тд.
В object builder LOD-ы детализации можно создать путем клика правой кнопкой мышки в окне List of LODs
lod1.jpg 35.68К 24 Количество загрузок:
и выбором New…
по умолчанию создастся номерной LOD-детализации и ему будет присвоен порядковый номер вслед за предыдущим. В настройках, которые я предложил для урока, это верхнее правое окно.
Все остальные типы LOD-ов будут создаваться через LOD-ы детализации путем изменения в пункте Properties их свойств.
В любой 3D игре, даже выполненной низкоплигональными моделями (как Арма3), а особенно если этот мир открытый, для каждой модели применяется несколько уровней детализации, что позволяет за счет снижения детализации (читай числа полигонов) на более удаленных от наблюдателя моделях, снизить общее число полигонов в сцене, а следовательно нагрузку на CPU и видеокарту и повысить FPS для игрока.
Переключение между LOD-ами происходит в Арма 3 автоматически, на основе сразу нескольких параметров – расстояние до объекта, качество видеокарты, загрузки CPU.
При этом, - ПОРЯДКОВЫЙ НОМЕР LOD-а в Арма3 НЕ ОКАЗЫВАЕТ НИКАКОГО ВЛИЯНИЯ, на то, в какой момент и в каком диапазоне его надо показывать, и никаких методов определить когда этот LOD надо отображать – нет.
Поэтому моделист, должен обеспечить МНОГОКРАТНОЕ разрешение LOD с различной плотностью полигонов. В object builder LOD –ы должны быть обязательно упорядочены в соответствии с их polygoncount (LOD в котором модель имеет самое большое число полигонов должен носить порядковый номер 0 и тд..)
Вот, например, таблица lod-ов на модели T-100 Varsuk из мануаля BiStudio
lod2.jpg 43.18К 15 Количество загрузок:
Обычно практикуется “уполовинивание’ полигонов для более низкого разрешения в качестве ориентира, самый последний LOD должен иметь самое низкое число полигонов обычно менее 500. При этом следует учитывать, что в случае когда в модели меньше 500 полигонов, (которые нагружают GPU). - число секций (нагружающих в свою очередь CPU), будет иметь большее значение при влиянии на производительность чем число полигонов… (число точек (points) полигонов (face), секций(Sections), указывается внизу Object Builder). Для LOD –ов с низким разрешением, не имеет смысла указывать материалы, нормали и тд. (так как смысла при удалении от объекта они не имеют, но дают нагрузку на модель.)
Число полигонов в каждом LOD-е должно быть ниже, чем максимальное возможное значение и это совсем не значит, что все модели должны иметь максимально значение нормалей вершин.
В Арма, Арма2, и ранней версии Арма3 максимальный предел нормалей вершин (vertex normal) составлял 2 ^ 15 = 32768. Однако в версиях Арма3 после 70 версии, которая используется уже direct X 11 число вершин было увеличено до 2^16= 65536, что однако не сильно повысило производительность.
Обратите внимание это не полигоны!!! Почему полигоны не важны объясняет Black_General
В случае превышения максимально возможного числа вершин, - модель либо не будет отображаться, либо приведет к крашу системы.
Важно так же соблюдать некие правила.
- Не делать точные копии, lod-а который уже есть, так как кроме увеличения размера Вашей модели это ни к чему хорошему не приведет.
- В name property для всех LOD-ов резолюций необходимо указывать параметр LodNoShadow=1 дабы отключить автоматическую генерацию теней. В принципе LOD-ы с числом поверхностей более 300 не отбрасывают теней, но тратят ресурсы на их вычисление, поэтому данный параметр повышает производительность.
- В случае использования альфа канала в текстурах, и наличия багов связанных с отбрасыванием теней от альфа канала, необходимо в Geometry LOD указать параметр "Forcenotalpha=1"
Что такое LOD Geometry?
Этот LOD определяет, где и как модель будет сталкиваться с другими объектами. При этом Geometry LOD будет работать при столкновениях, если один из сталкивающихся объектов не является объектом PhysX (например солдат, танк и тд). Для объектов PhysX критическими при столкновении будут являться масса и сила инерции.
Geometry LOD должен быть максимально простым, и для нормальной работы соответствовать следующим критериям.
- Весь LOD должен быть разделен точки (вершины, компоненты), которые должны называться ComponentXX (где XX представляет собой порядковый номер от 01 до 99). (Делается это автоматически путем применения на выделенном объекте CTRL+A точек в меню Structure)
lod3.jpg 50.31К 13 Количество загрузок:
- Каждая точка-компонент, должна иметь массу… Задается она в окне массы
lod4.jpg 21.41К 6 Количество загрузок:
Выглядит это окно примерно так, если оно у вас не отображается найти его можно тут ->
lod5.jpg 44.41К 7 Количество загрузок:
После того, как билдер, нашел все компоненты, выделяем все (CTRL+A) и вписываем массу. Учитывайте, что масса распределяется по всем компонентам (точкам) равномерно, поэтому указывайте большую массу например 200000… если я правильно понял, как это работает, то объект с большей массой проходит через объект с меньшей массой.
- Geometry LOD не должен иметь незамкнутых точек.
- Настройки по умолчанию для для Geometry LOD являются: canocclude = 0 и canbeoccluded = 1 (для транспортных средств, персонажей и оружия).
- Максимальный размер Geometry LOD-а 50 метров от центра объекта (перекрестье на сетке вашего редактора) т.е. общая длина либо ширина 100 м. В высоту (по оси z) ограничений нет вообще. Однако в случае если на LOD будет накладываться Roadway, то его размеры будут ограничены размерами Roadway.
- Так же необходимо помнить, что LOD геометрии несет в себе материалы для организации спецэффектов при нанесении объекту урона. В случае если материалы не назначены, (или при бинаризации объекта неправильно настроен диск P:\ в этом случае материалы “слетят”), будет отображаться тип воздействия – земля (грязь).
Материалы для спецэффектов проникающих в объект повреждений можно взять тут в библиотеке шаблонов; P:\a3\data_f\penetration
lod8.jpg 70.28К 5 Количество загрузок:
в свитке Name Property LOD Geometry, прописываются следующие параметры:
map: [иконки, которые будут отображаться на 2D карте] Building, bunker, busstop, bush, church, chapel, cross, fountain, fortress, fuelstation, fence, hide (не отображать объект на карте), hospital, house (показывает черный квадрат и displayName= при наведении мыши в Mission Editor), lighthouse, mainroad, power lines // note the space, powersolar, powerwave, powerwind, quay, railway, rock, rocks, road. ruin, shiprwreck, smalltree, stack, transmitter, tourism, tree, track, view-tower ,wall, watertower.
сlass: [указывает, как объект перемещается по поверхности и влияет на поведение объекта, моделирование разрушений и namesound c дополнительным соображением для класса = house]. В случае если указан * работает если в конфигурации классов модели указан Land_xxx параметры: building*, bus, fuelstation*, fence*, house* (‘параметр требуется для любых анимаций строений включающих в себя ladders, doors и attendant), streetlamp и housesimulated (для объектов светящихся ночью в зависимости от параметров указанных в cfgVehicles), road (для дорог и мостов), tree (деревья).
dammage: - описание модели повреждений – основывается на параметре armor в config.cpp возможные параметры: building, house, tree (объект наклонится), fence (объект упадет), engine (взрыв при разрушении), bush (объект разрушится), tent (объект коллапсирует), no (никаких визуальных эффектов при разрушении объекта), wall (объект упадет).
canOcclude – используется с LOD-ами Geometry и ViewGeometry. В тех редких случаях когда надо, чтобы спрятавшегося за объектом было видно например в листве дерева, и объект не исчезал полностью. CanOcclude = 0
canbeOccluded – оказывает противоположный эффект, объект будет полностью скрыт за другими объектами.
Что такое LOD Path?
Lod path предназначен для Ai. Дело в том, что они игнорируют LOD Geometry поэтому проходят сквозь здания либо застревают в них и других объектах. Чтобы этого избежать необходимо указать некий путь, по которому собственно Ai и будет передвигаться, как вокруг дома, так и внутри его. Путь для Ai рисуется с помощью полигонов квадратной формы и выглядит примерно так:
Lod6.jpg 47.28К 11 Количество загрузок:
К рисованию Path необходимо относиться внимательно, иначе не избежать глюков. После того, как мы посмотрели во всех проекциях и убедились, что на нашем пути нет никаких предметов, в которые будут утыкаться Ai, необходимо в окне Selection задать точки входа и выхода для Ai. Для этого выделяем отдельные точки и даем им названия. Примерно так.
lod7.jpg 45.58К 7 Количество загрузок:
После того как все будет проделано необходимо нажать Shift –E и отредактировать Y ось, на 0,2 чтобы наш Path Way гарантированно был выше поверхности (как бы парил над ней).
Что такое LOD Phys Geometry?
Это еще один геометрический LOD который определяет модель столкновений между объектами PhysX. Он должен быть еще меньше чем LOD Geometry так как на вычисление physx требуется больше ресурсов. Отдельный момент использовать этого LOD-а на технике с вращающимся объектами (стволу орудий, башенки, винты роторов и тд.) т.к. эти объекты могут внезапно и достаточно быстро двигаться приводя к сбоям.
Однако для некоторых предметов *(на пример гранаты) он необходим и используется вместо FireGeometry.
Что такое LOD FireGeometry?
LOD FireGeometry определяет в каком месте модель будет сталкиваться с пулями и ракетами. Если у модели нет этого LOD-а, то вместо него будет использоваться LOD геометрии.
По своей структуре, этот LOD подобен Geometry, в нем так же должны быть найдены ComponentXXX, где X представляет собой порядковый номер, геометрии должен быть «замкнутым/закрытым/closed» и «выпуклым/convex»/. Для того, чтобы достигнуть этого необходимо в меню выбрать сначала ->
Structure | Topology | Find Non-Closed
затем закрыть точки
Structure | Topology | Close.
После чего проследовать в
Structure | Convexities | Find Non-Convexities (либо Structure | Convexities | Convex Hull)
и закрыть их.
Подобно LOD геометрии на этот LOD будут накладываться материалы penetration.
Что такое LOD Roadway (Мостовая)?
Собственно, этот LOD необходим, чтобы игроки могли передвигаться по поверхности. У него есть ограничение 36 м от центра (рабочий центр пересечение оси координат Object Builder) в обе стороны. Поэтому максимальная длинна объекта 72 метра. Соответственно если длина объекта больше, то придется делать отдельные прокси с p3.
scr38.jpg 64.99К 14 Количество загрузок:
scr37.jpg 58.75К 12 Количество загрузок:
Этот LOD используется так же для определения звуковых эффектов окружения которые будет слышать игрок. Используемая среда определяется текстурой поверхности roadway (Название текстуры соответствует классам в Cfg Surfaces). Все это счастье находится вот здесь…P:\a3\data_f\surfaces и его вполне достаточно, чтобы создать полное звуковое окружение в вашем объекте.
Что такое LOD ViewGeometry?
Видимая геометрия модели. Если этот LOD правильно настроен, то Аи и другие игроки не смогут увидеть вас в том случае, если вы скрыты за объектом.
Что такое ShadowVolume LOD?.
Этот лод используется для отбрасывания тени на землю, другие объекты и на самом объекте. Этот лод должен быть упрощен по отношению к другим лодам. Но может быть более подробным чем лоды geometry или firegeometry. Тень должна слегка усаживаться по сравнению с лодами разрешения. Обычно делается парал лодов теней. Один для с большим разрешением второй для удаленных объектов.
Этот лод должен быть;
- Закрытым (Closed),
- Триангулированным (Triangulated),
- С острыми краями (Sharp Edges)
На сегодня все.
Сообщение отредактировал vitacite: 16 September 2016 - 18:15