NiSortAdjustNode примечания
Хорошие новости!(С) от 05 2020.
Не прошло и 20 лет, как нашлась проблема не позволявшая использовать этот объект раньше.
Именно: неправильные настройки Nif.xml файла.
Благодаря изысканиям уважаемого Greatness7 это ошибка была найдена и устранена.
Высказывавшиеся ранее предположения об ошибке движка, к счастью, оказались ошибочны!
NiSortAdjustNode это может в полной мере работать в игре!
Совсем хорошие новости от 2023его!
В 2023ем добавили еще один флаг (костыль) позволяющий использовать эту ноду в полную силу!
Т.е. в МВСЕ завезли патч, исправляющий отсечение прозрачных объектов, находящихся ЗА этой нодой.
И в полной мере позволяющий использовать сортировку внутри ноды.
- Использовать МВСЕ от 2023его и старше.
- В ниф файле Sorting Mode = 64. Т.е указать (флаг) 64.
Теперь в игре сортировка будет происходить корректно!
https://www.youtube.com/watch?v=KVhfy6KwAHY
Примечания.
- Равно и для изображение нескольких вложенных объектов с разной полупрозрачностью.
- Позволяет отказаться от z-буффера в некоторых случаях.
Что бывает полезно, когда требуется перекрытия нижнего слоя с альфой, верхним, также с этим свойствами.
Т.е. будут видны только определенные участки слоя!
- Не для частиц! Т.е. частицы для устранения строба всегда требуют наличия z-буффера.
- Сортировка работает только в приделах своей ноды.
- Возможно работает только с двумя объектами!
Т.е. не больше двух вложенных объектов. (это не точно, требуется больше тестов)
Но выглядит так, если в ноде 3 и более полупрозрачных объектов, корректно отображаются только два "верхних".
Хотя тесты брата Карпа, показали, что более 7 объектов работают вместе без каких либо проблем.
Т.е. два, три объекта, возможно является некоторым багом редактора, который и показал такое поведение моделей с более чем двумя вложениями.
- Возможно использование нескольких NiSortAdjustNode в одном файле.
- Есть мнение, что каждая NiSortAdjustNode должна использовать и свой уникальный NiAlphaAccumulator.
- Однако, есть и иное мнение, что NiAlphaAccumulator как раз и нужен для использования в разных NiSortAdjustNode.
Чтобы обобщать их свойства.
Т.е. несколько NiSortAdjustNode могут использовать один общий NiAlphaAccumulator или NiClusterAccumulator, какой либо разницы замечено не было.
- NiSortAdjustNode не имеет никаких видимых атрибутов и свойств по SSG, однако работает.
Уникальные настройки.
Sorting Mode
|
SORTING_INHERIT - это обычное поведения сортировки, т.е. все рисуется как обычно.
SORTING_OFF - включает сортировку!
SORTING_SUBSORT - фактически равно первому пункту. Т.е. не оказывает видимого эффекта!
64 - новый флаг (костыль) который требуется использовать вместе с МВСЕ. Этот флаг, следует ставить ВМЕСТО SORTING_OFF, для достижения правильной прозрачности всех объектов.
|
Accumulator
|
|
В этом разделе (Ниф.хмл файла) и была проблема, т.е. вместо ссылки на NiAccumulator шло значение Unknown Int 2.
Которое и создавало ошибку.
Дальнейшие эксперименты показали возможность указания номера альфа свойств объекта.
Это также может срабатывать!
А еще более детальные изыскания (сообщества Морровинда), показали необходимость добавления нового блока NiAccumulator.
После этого, все стало работать исправно!
Примечание.
Что интересно, по SSG, niSortAdjustNode никак не отмечается.
То есть совсем не имеет никаких уникальных параметров.
Если niLode, или niSwitch ноды имеют дополнительный раздел, ниже niNode, то SortAdjust нода, не имеет ничего.
Это просто (занятное) наблюдение, ничего принципиально ценного в нем нет.
Хотя по идее, должны были бы отображаться значения сортировки...
Примечание.
Текстурные эффекты в составе БилБорд нод испытывают проблемы при работе по объекту помещенному в СортАджустНоду.
Т.е. упаковка целевого объекта в эту ноду, приводит к "пляске" эффекта и нарушению его положения на поверхности.
Т.е. включение! Именно включение Sorting_Off приводит к нестабильному наложению эффекта на целевой объект.
По видимости, не следует использовать эту ноду в моделях призраков (и тому подобных объектов) использующих текстурные эффекты, т.к. отключение сортировки, приводит к пляске эффекта по поверхности объекта, что нарушает "творческий замысел", ака предполагаемую проекцию эффекта (по контуру модели).
Примечание.
В ванили объект основательно забагован.
Например, в слот аккумулятора, можно поставить вообще любой объект.
Когда-то (году так в 2018ом), сюда поместили АльфаСвойства и модель, о чудо!
Не вылетела в ошибку и нормально отобразилась в Тес КС!
Но это так, для истории примечание.
Техническое наблюдение, заметка, на эту тему:
- сотраджуст нода искажает поведение текстурных эффектов в режим "билборда"
т.е. сбрасывает проекцию (если нажать меню, то видно как эффект "спрыгивает".
если вернуть обычную ниноду, эффект остается на месте с любого ракурса камеры.
если упаковать сортноду в обычную ноду и повесить эффект на обычную ноду, искажения сохраняются.
местами (для получения обрисовки контура сетки) это оказывается критично.
т.е. вероятно не стоит пользовать эту ноду для "призраков" хотя именно здесь она и нужна в первую очередь.
сам текстурный эффект размешен в составе обычной ноды (в билборде).
помещение ноды с эффектами в состав скелета (бип01) не изменяет поведения.
т.е. что-то странное с нодой сортировщика.
все это верно только для режима сортингОФФ (сабсорт не работает в принципе).
А для обычного, сортингИхнерит, все работает штатно.
возможно, меняя поворот билборд ноды с эффектами, получиться, хотя бы от части, компенсировать эту проблему.
при -90 0 -90 эффект лег по краю контура модели. Однако некоторое "подергивание", все равно, сохранялось.
также зависит от ракурса обзора объекта.
сзади все нормально но спереди смещение эффекта с края на центр.
Создание в 3д МАХ.
ТЕС экспортер и старая версия ФФЕ экспортера, не умеют создавать (либо правильно экспортировать) этот узел!
Только, версия экспортера Gamebryo 1.1 имеет опцию создания этой ноду.
Хотя это странно, в коде 4.0-4.2 версий модулей экспорта, есть упоминание этой ноды.
Но не заметно ничего такого, что могло бы указывать, как ее создавать, или экспортировать...
Примечание.
Greatness7 (2023)
NiSortAdjustNode does work in vanilla engine but it has bad interaction with alpha blend stuff that makes it largely useless in that context.
But if you're not needing alpha blending, and just need stencil order, then it should work.
yea it has same problem in both openmw and vanilla, with bad interaction of alpha blend stuff
Т.е. отмечается, что в ванили и в билдах ОпМВ (покрайней мере до 0.49) этот объект имеет некоторые проблемы.
Или его полный потенциал, не был еще завезен в движок netimmerse 4.0 версии, или объект забагован.
Впрочем, как было отмечено выше, МВСЕ приносит с собой патч, значительно улучшающий поведение этого объекта!
|
|
Объекты содержащие NiSortAdjustNode в режиме SORTING_OFF.
- нет строба полигонов.
- видны полупрозрачные вложенные сферы.
- отсечен уровень воды. Если приглядеться у правого черепа, в районе виска, видно серую полосу.
- также, воду не видно через сферы.
|
Более наглядный результат отсечения объектов с альфой.
При этом, в отличие от специфических флагов альфы, NiSortAdjustNode не создает нежелательной зоны полного отсечения прозрачных объектов.
|
|
|
Картинка из официальной справки.
Собственно показывает эффект сортировки на прическе мумии.
В левой голове есть строб полигонов.
В правой, где использовано NiSortAdjustNode - строба нет.
|
Два ряда сфер (6 штук)
Слева направо.
- SORTING_INHERIT (это = обычному поведению)
- SORTING_OFF (вот это позволяет решить ряд задач!) - SORTING_SUBSORT (похоже не работает, ака = обычному)
Впрочем, в чистом КС, это все одно забаговано. Однако, некоторый эффект можно видеть! Пуская не вполне корректно, но Sorting_Off влияет на взаимодействие прозрачных объектов.
|
|
|
Два объекта с прозрачностью материала 0.9.
NiSortAdjustNode и SORTING_OFF.
Оба объекта отображаются корректно.
|
NiSortAdjustNode и SORTING_INHERIT.
Вложенный объект перестает отображаться, с некоторых ракурсов.
Т.е. результат ничем не отличается от обычного режиме сортировки объектов с альфой внутри простой НиНоды.
|
|
|
Система частиц и ее эмиттер (квадрат в центре) в обычной ноде.
Видна пляска полигонов окружающих частицы объектов!
|
Также и вложенные объекты "мерцают".
|
|
|
Sorting OFF частицы упакованы в SortAdjuctNode.
Отображение стабильно, пляски полигонов не происходит.
Как во вложенных, так и на внешних объектах.
|
Однако, частицы становятся как бы более "призрачными", фактически переставая закрывать собой объекты.
|
|
|
Это обычный z-буффер с флагом 1.
Который позволяет рисовать все вложенные объекты без строба.
НО, как видно, не позволяет рисовать прозрачность, так чтобы прочие полупрозрачные объекты были видны!
|
А это NiSortAdjustNode со значением Сортинга = 64 и МВСЕ. Хорошо видно, как все прозрачности на своих местах.
Видны все вложенные объекты и земля за ними.
|
|
|
|
Т.е. именно это и должна (по идее) делать эта нода.
Позволять объектам с различной прозрачностью в режиме смешивания оной, корректно работать между собой и прочими объектами в игре!
|
|
|
Еще одно практическое применение! Прозрачный магический кристалл и прозрачное же свечение внутри оного!
|
Даже, за другими прозрачными объектами (теперь) не возникает пляски полигонов, или иных артефактов!
|
|
|
sorting_OFF
часть объектов перестала отображаться, т.е. пошла "пляска".
|
и Sorting = 64 с МВСЕ. 7 прозрачных объектов прекрасно работают вместе!
(2 ауры, кристалл и несколько вложенных в него эффектов!)
|