×
Menu

NiSortAdjustNode - notes

 
 
Хорошие новости!(С) от 05 2020.
Не прошло и 20 лет, как нашлась проблема не позволявшая использовать этот объект раньше.
Именно: неправильные настройки Nif.xml файла.
Благодаря изысканиям уважаемого Greatness7 это ошибка была найдена и устранена.
Высказывавшиеся ранее предположения об ошибке движка, к счастью, оказались ошибочны!
NiSortAdjustNode это может в полной мере работать в игре!
 
Примечания.
- Наиболее актуально использовать для устранения строба полигонов в двухслойных объектах, где каждый слой имеет альфа.
- Позволяет отказаться от z-буффера в некоторых случаях.
Что бывает полезно, когда требуется перекрытия нижнего слоя с альфой, верхним, также с этим свойствами.
Т.е. будут видны только определенные участки слоя!
- Не для частиц! Т.е. частицы для устранения строба всегда требуют наличия z-буффера.
- Сортировка работает только в приделах своей ноды.
- Возможно работает только с двумя объектами!
Т.е. не больше двух вложенных объектов. (это не точно, требуется больше тестов)
- Возможно использование нескольких NiSortAdjustNode в одном файле.
- Есть мнение, что каждая NiSortAdjustNode должна использовать и свой уникальный NiAlphaAccumulator.
- Однако, есть и иное мнение, что NiAlphaAccumulator как раз и нужен для использования в разных NiSortAdjustNode.
Чтобы обобщать их свойства.
Т.е. несколько NiSortAdjustNode могут использовать один общий NiAlphaAccumulator или NiClusterAccumulator.
- NiSortAdjustNode не имеет никаких видимых атрибутов и свойств по SSG, однако работает.
 
 
 
Уникальные настройки.
Sorting Mode
SORTING_INHERIT - ничем не отличается от обычного поведения сортировки.
SORTING_OFF - включает сортировку!
SORTING_SUBSORT - фактически равно первому пункту.
Accumulator
ссылка на NiAlphaAccumulator
В этом разделе и была проблема, т.е. вместо ссылки на NiAccumulator шло значение Unknown Int 2.
Которое и создавало ошибку.
Дальнейшие эксперименты показали возможность указания номера альфа свойств объекта.
Это также может срабатывать!
Но более детальные изыскания, показали необходимость добавления нового блока NiAccumulator.
После этого, все стало работать исправно!
 
Примечание.
Начальные данные нифскопа базировались на изучении моделей из игры Lokki версии ниф файла 10.
Отчего, вероятно и возникло неправильное определение параметров, т.к. от версии к версии ниф файлы будут сильно отличаться.
Unknown Int 2 - значение "-1".
Отвечает за порядок сортировки объектов.
Т.е. какой объект из какого будет вычитаться.
 
Создание в 3д МАХ.
ТЕС экспортер и старая версия ФФЕ экспортера, не умеют создавать (либо правильно экспортировать) этот узел!
Только, версия экспортера Gamebryo 1.1 имеет опцию создания этой ноду.
Прописать в User Defined.
NiSortAdjustNode = SORTING_OFF
 
Примечание.
R-Zero
the hell is NiAlphaAccumulator
 
Greatness7
its a thing :smile:
i dont think NiSortAdjustNode is restricted to just alpha sorting
there is other accumulator types
e.g. if you wanted depth sorting kinda like you did earlier
there is NiClusterAccumulator
but i havent tinkered with it and there is no examples in docs
her eis the same thing ingame
to prove it works :smile:
in practice this isnt much different than using NoSort except that it is only no-sort within the context of its siblings, and not for the whole scene
(which is a pretty important thing, so it wont fuck up water plane and such)

 
Объекты содержащие NiSortAdjustNode в режиме SORTING_OFF.
- нет строба полигонов.
- видны полупрозрачные вложенные сферы.
- отсечен уровень воды. Если приглядеться у правого черепа, в районе виска, видно серую полосу.
- также, воду не видно через сферы.
 
Более наглядный результат отсечения объектов с альфой.
При этом, в отличие от специфических флагов альфы, NiSortAdjustNode не создает нежелательной зоны полного отсечения прозрачных объектов.
Картинка из официальной справки.
Собственно показывает эффект сортировки на прическе мумии.
В левой голове есть строб полигонов.
В правой, где использовано NiSortAdjustNode - строба нет.
Два ряда сфер (6 штук)
Слева направо.
- SORTING_INHERIT
- SORTING_OFF
- SORTING_SUBSORT
 
Два объекта с прозрачностью материала 0.9.
NiSortAdjustNode и SORTING_OFF.
Оба объекта отображаются корректно.
NiSortAdjustNode и SORTING_INHERIT.
Вложенный объект перестает отображаться, с некоторых ракурсов.
Т.е. результат ничем не отличается от обычного режиме сортировки объектов с альфой внутри простой НиНоды.
 
Система частиц и ее эмиттер (квадрат в центре) в обычной ноде.
Видна пляска полигонов окружающих частицы объектов!
 
Также и вложенные объекты "мерцают".
Sorting OFF частицы упакованы в SortAdjuctNode.
Отображение стабильно, пляски полигонов не происходит.
Как во вложенных, так и на внешних объектах.
 
Однако, частицы становятся как бы более "призрачными", фактически переставая закрывать собой объекты.