NiBSPArrayController- notes
Примечание.
В файле может быть только несколько контроллеров этого типа!
Одни работают с поверхностями, другие с иерархией объектов.
Однако, такие файлы лучше создавать в нифскопе, копируя частицы и контроллеры.
Файл с несколькими контроллерами полученный непосредственно из 3д МАХа приводил игру и редактор к вылету...
Случайный баг (?).
Предположение (!) - была нарушена иерархия объектов.
Частицы оказались выше своего эмиттера.
Критически важно размещать эмиттер выше частиц если использован флаг 24!
Для флага 8 это не важно.
Но если в качестве эмиттера использовалась поверхность шейпа, она должна быть выше самих частиц!
Правильный порядок в файле!
Tri Plane01 (3) работает эмиттером для частиц с NiBSPArrayController (9) и размещена выше в списке.
Именно флаг управления запуском анимации отвечает и за метод работы этого контроллера!
ArrayType - режим работы этого контроллера.
At_vertices - наиболее эффективен при использовании с шейпами в качестве эмиттеров. Флаги 24, 26, 28.
At_nodes - создает цепочку эмиттеров из иерархии нод. Возможно вложенные шейпы также участвуют (?). Флаги 8, 10, 12.
Других режимов получить не удалось. Ни флагами в нифскопе, ни экспортом из 3д МАХа.
Т.е. есть только два доступных режима.
Примечание.
Режим Start at ALL vertices дает флаг 24.
Все прочие настройки зон генерации частиц Parray в 3д МАХ дают флаг работы этого контроллера 8.
Примечание.
МАХ устанавливает в качестве эмиттера (при Start at ALL vertices) не шейп, а ноду!
Что и не позволяло получить правильные настройки в прежние годы.
Т.е. сразу после экспорта модель следует править.
Сменив цели и проверив иерархию!
- шейп вместо ноды в слоте Emitter
- шейп выше частиц по списку объектов в ниф файле.
Примечание.
По видимости не создает клоны частиц для первой, предпоследней и последней костей в иерархии.
Т.е. для этих объектов в цепочке, система частиц не клонируется.
Покрайней мере так можно полагать исходя из имеющихся данных.
Bone01 работает эмиттером, все остальные объекты в иерархии становятся вспомогательными эмиттерами (?).
Примечание
Тесты разных флагов:
|
|
|
|
|
|
флаг 8
|
флаг 10.
|
флаг 24
|
флаг 26
|
флаг 42
|
флаг 56
|
8 - флаг совмещающий
метод старта анимации и метод эмиттинга. В данном случае, по иерархии нод.
10 - позволяет штатно запустить реверс анимации частиц. Можно использовать на иерархии объектов.
12 - clamp (одноразовый) режим старта частиц для режима "по иерархии" нод.
16 - анимация выключена.
24 - флаг включающий запуск частиц от каждого вертекса поверхности в обычном режиме CYCLE (ака Loop).
26 - реверс анимации частиц для режима At_vertices.
28 - аналог 12 флага для режима At_vertices.
42 и 56 - тестовые флаги. Ничего, кроме типа работы анимации, не меняют.
Да, в
SSG, появляется строка с непонятным значением, но это "глюк" (скорее всего).
В игре анимация проигрывается как для обычных флагов 8 и 10.
Флаги 32, 128 - ничего не показали.
Что логично, т.к. анимация помечена как выключенная.
Примечание.
Актуально для флага 24.
Возможно NiBSPArrayController плохо работает со скиненными поверхностями.
Смещаются точки появления частиц.
Покрайней мере, было проведен быстрый тест с Ужасом Клана.
Да, работает, но не так как хотелось бы.
Возможно дело в настройках частиц, а не в скининге, как таковом.
Нужно больше тестов(С)
Примечание.
Для флага 24.
Примечание.
Этот контроллер частиц можно использовать с невидимыми анимированными поверхностями.
Т.е. создать в МАХе некую сложную поверхность меняющую свой вид под действием морфинга.
А затем указать в качестве
эмиттера использовав не ней
материал с полной прозрачностью.
Что позволит создавать самые замысловатые формы движения частиц.
Примечание.
Флаг 10 (42) может давать позитивные результаты.
Заставляя частицы "мигать"
Словно огонь вспыхивает а потом быстро гаснет.
Примечание.
По видимости, хорошо работает только с прямо указанной поверхностью.
Т.е. если указать в качестве эмиттера некоторый шейп при флаге 24, все работает корректно.
Частицы рождаются из его вертексов.
Но, если указать ноду (с несколькими шейпами), при том же флаге 24, работоспособность сохраняется только для одного шейпа.
Либо слетает вовсе.
Примечание.
"Внезапно" обнаружилась еще одна возможность этого контроллера.
А именно использовать в качестве эмиттеров не только поверхности и цепочки нод, но и другие частицы!
Т.е. можно в слоте Emitter указать номер любой другой системы частиц (NiAutoNormalParticles, NiRotatingParticles, или NiParticles).
Тогда, все частицы тех систем смогут работать эмиттерами!
Нифскоп никак это не отображает.
Но в игре это работает...
Примечание.
so if emit mesh has lot of vertexes particle emit will be one of the vertexes randomly. If you use a mesh with lot of vertexes, it won't mean lot of particles, only emit position will be randomly selected from the vertexes i guess. So i got to increase particle number a lot to use all the mesh vertexes
Т.е. чем больше вершин, тем плотнее должен быть поток частиц.
Emit rate не ниже 100 - 300.
Уточнение, в идеале, кол-во Vertexes у систем частиц должно быть равным!
Если у первой, работающей в качестве эмиттера системы частиц - их больше, будут возникать сгустки частиц у второй системы!
С другой стороны, это также можно использовать.
Примечание.
К сожалению для решения этой задачи НЕЛЬЗЯ использовать общую ParticlesData!
Такой вариант стабильно приводит к КТД, хотя в других случаях показывает себя позитивно.
Но ничто не мешает указать в обеих ParticlesData одинаковое кол-во частиц, как в целом, так и активных в момент времени.
Либо скопировать ParticlesData первой системы частиц, вставить в конец файла и, указать этот номер второй систем частиц.
Это гарантированно установит базовое число частиц равным для всех систем в сцене.
Затем останется только удалить старые ParticlesData .
Также, следует синхронизировать значение Emit Rate для обоих
контроллеров частиц!
Получается примерно такая схема:
- корень файла обычная нода (0).
- все частицы и их
эмиттер убраны в NiBSParticleNode с флагом 170. (1)
- первый эмиттер (здесь) это шейп (9) помещенный в ноду (2) с контроллером движения.
- этот эмиттер находится по списку выше, чем его частицы!
- сами частицы находятся в другой ноде (12).
- при этом, частицы (13) используют в качестве эмиттера шейп 9.
- другие частицы (21) используют в качестве эмиттера частицы 13.
- которые находятся также выше их по списку! Хотя и в одной с ними ноде.
- у каждой системы частиц свой уникальный номер NiParticlesData, но с одинаковыми настройками.
- также, у систем частиц, равные настройки Emit Rate в их контроллерах.
- отдельный шейп (18) находится вне ноды частиц и нужен только для перемещения модели в редакторе.
Т.к. NiBSParticleNode имеют проблемы с выбором и передвижением.
NiBSParticleNode также выполняет функции
анимационной ноды, отвечая за проигрывания анимаций и создания хвоста частицам.
Примечание.
Нифтулз отображает корректно только первый фрейм. Размещая частицы во всех объектах иерархии.
Для режима эмиттинга с вертексов - аналогично.
Т.е. составить общее представление вполне возможно.
СкенеВиювер - не открывает файлы с этим контроллером! Т.к. не понимает его от слова совсем.
ТЕС КС - показывает частицы в правильных позициях после смещения объекта в сцене.
Примечание!
- Некорректно работает в одежде (броне, бодипартах) НПС!
Частицы остаются в стартовом положении НПС и не следуют за своей целью просто застывая в сцене.
Либо ограниченно смещаясь и вновь возвращаясь к исходной позиции, не меняя своего положения.
Достаточное странный результат получается по виду.
Связано сие, с организацией файлов НПС, где анимации берутся из одного файла, а броня берется из другого.
Верно для всех режимов! Что для "at vertex", так и для "on chain".
- Также, есть проблемы, если выбрать режим "at vertex" и для Существ.
Поведение немного иное, но результат схожий - не работает, так как хотелось бы!
Они не принимают правильные положения и, похоже стоят в исходной позе существа в ниф файле.
т.е. не смещаются вместе с движением существа.
В режиме "on chain" работает нормально, да.
- Для существ использующих файлы базовой анимации (bipedal) могут возникать проблемы и для "on chain" режима!
Т.е. эмиттинг по цепочек, нормально работает только для существ со своими уникальными файлами анимаций.
- В активаторах в виде анимированной поверхности, все работает как следует.
Оба режима т.е.
- Возможно проблема связана со
скинингом модели.
Примечание.
С одного форума.
Greatness7
2-Reverse
4-Clamp
8-Active
16-At Vertices
they can be mixed
e.g. 12 is 4+8, Active+Clamp
Mr.007
? flag 16-animation is disabled.
Greatness7
16 changes from AT_NODES to AT_VERTICES
Mr.007
Yes! yes! is it!
Greatness7Сегодня, в 8:41
without 8 (Active), animations will be inactive, e.g. disabled
24 == 8+16, Active+AtVertices
Скриншоты.