×
Menu

NiLODNode - notes

 
Не может быть использована в качестве корневой!
Если ЛОД указан, корнем файла - начинаются разного рода "глюки" и ошибки!
Объект не выделяется в редакторе, камера центрируется не корректно и т.п.
В этом случае, также, становится невозможным добавление обычных нод и шейпов в файл!
 
Примечание.
niLodNode это подкласс NiSwitchNode.
Отчего имеет сразу оба значения и Switch и LOD.
Однако, в МВ работает только одно значение определяющее состояние уровней детализации.
Видимый по умолчанию уровень, определяется порядком номера.
Верхние в списке отображаются рядом с камерой, последующие используются при удалении.
 
Примечание.
Каждый следующий уровень начинается от Far Extent предыдущего!
Но можно установить с небольшим смещением в минус.
Т.е. Если у первого уровня Far Extent 512, то следующий начнется в Near Extent  412.
Это создает некоторое наложение объектов, для их более плавной замены.
Чем больше уровней, тем ровнее будет «анимация».
Также, можно смещать вложенные объекты, создавая дополнительные эффекты «взлета», или иного смещения.
 
Примечание.
Лодированные ноды крайне плохо переваривают контроллеры анимаций!
Лучше всего, прямо на них ничего не размещать! Помещая все анимации во вложенных Нодах.
Также, имеет смысл вкладывать в уровни Лодов не сами объекты (шейпы), но создав пустую ноду класть в нее шейпы.
 ЛОДноды с контроллерами анимации, или имеющие в своем составе niBsanimationNode вне простых НОД, могут некорректно отрабатываться игрой. Вовремя не появляться, или внезапно вылезать из воздуха.
 
Примечание.
Не может работать в качестве тригера анимаций.
Т.е. если поместить в уровни ЛОД эмиттер частиц, а сами частицы оставить отдельно, это не приведет к исчезновению частиц вместе с эмиттером. Что в принципе логично, ЛОД это не контроллер, но статичный объект.
 
Примечание.
Текстурные эффекты размещенные в детях ЛодНоды, ведут себя обычным образом.
Т.е. если загрузить текстурный эффект напрямую, или в составе обычной ноды в ЛодНоды,
а в качестве "цели" воздействия эффектов указать объект вне ЛодНоды - результата не будет.
Т.е. нет возможности, сменять текстурные эффекты в зависимости удаления от камеры игрока.
 
Примечание.
Лоды полезно использовать в магических щитах!
Дабы не мешать виду из глаз героя.
Значение первого уровня, 0-128.
Т.е. до 128 ед. поместить "пустышку", чтобы ничего не мешало обзору.
 
Примечание.
В ниф файлы, содержащие Лоды, полезно добавлять маркеры.
Это удобно при работе в редакторе.
Т.е. объект остается доступен для выделения на любой дистанции от камеры.
В игре маркеры не отображаются.
Маркеры можно добавлять и в файлы существ содержащих ЛОДы.
 
Примечание.
В ЛОДах можно использовать всего один уровень.
Особенно если нужно просто скрыть, а не заменять объект, на определенном удалении от камеры.
Т.е. для некоторых объектов будет достаточно первого, самого ближнего уровня.
Num Levels = 1.
 
Примечание.
Лоды могут быть в любом месте ниф файла.
Т.е. нет никаких ограничений на их размещение в иерархии.
Кроме, использования в качестве корня, см. выше.
 
Примечание.
По видимости, возможна упаковка в ЛОДы, костей скелета существа.
См. скрин. костяного Лорда ниже.
Безымянная ЛОДа не нарушает иерархии скелета, но позволяет скрывать всех потомков.
Возможно срабатывает, только в случае использования КФ файла.
Т.е. когда нет анимации непосредственно на объектах.
 
Примечание.
Обращайте внимание на иерархию нифа! Если лоды повредят ее, анимация перестанет работать.
Имеется в виду, те самые названия костей, ссылки на которые есть в КФ файле.
Если их "иерархия" будет нарушена, игра улетит в ошибку.
Т.е. не полезно встраивать новые Лодированные кости с названиям в уже существующую иерархию костей.
Однако, уже существующие кости можно упаковывать в безымянные ЛОДноды, это не нарушит иерархии.
Для шейпов это не играет роли, т.к. они, обычно, не записываются в кф файл.
 
Примечание.
В лодах можно использовать Билбордные объекты.
Но, нельзя использовать анимированные ноды!
Их обязательно следует помещать в состав обычной ноды!
 
Примечание.
Тоже касается нод и шейпов частиц.
Их лучше упаковать в обычные ноды!
И только эти "контейнеры" указывать в уровнях детализации.
 
Примечание.
ЛОДы полезно использовать в открытых шлемах.
Т.е. вблизи, можно будет видеть глаза (или часть лица) обладателя шлема, но по мере удаления, щели будут затеняться.
Хорошо совмещать "физические" лоды с текстурными, это придаст больше мягкости переходам между уровнями.
Такие шлемы можно посмотреть в Симфонии.
 
Примечание!
Если в разных уровнях используется одинаковый
шейп, то можно указать в его настройках одну и туже шейпдату!
Это еще больше оптимизирует модель.
Наиболее частый случай, это ЛОДы для Ореолов.
Где, на разных уровнях используется одинаковый элемент, но разного размера, или с различными текстурами.
Общая shapedata, может использоваться и в других случаях.
Например см. плагин:
https://www.nexusmods.com/morrowind/mods/45339
 
Для частиц это также верно!
В разных системах частиц, можно использовать одну общую
дату оных.
При этом, это даже проще чем с шейпами.
Т.к. частицы это динамический объект управляемый своим контроллером и ему без разницы откуда брать базовые данные.

 Выдержка из оригинальной справки. (NDL Gamebryo 1.1)
 
NiLODNode implements discrete level-of-detail. Level-of-detail objects allow Gamebryo to automatically adjust the level of detail used when rendering a scene graph object. The children of the NiLODNode represent the different levels of detail. The specific algorithm used to determine the current LOD level is based on the NiLODData. The application specifies the geometry associated with each level of detail Whichever NiLODNode child chosen by the NiLODData is the only NiLODNode child that is rendered.

Ящик с оптимизацией лодами.
В удалении ящик максимально упрощается, но по мере приближения, появляются мелкие детали и улучшается текстура.
Т.е. на ближних уровнях, размещена текстура в большем разрешении и лучшего качества.
Костяной лорд.
Корневая кость руки упакована в ЛОД.
Это не нарушает анимации, но позволяет скрывать все последующие объекты.
Тестовый объект.
По мере приближения один объект заменяется на другой.