×
Меню
Индекс

NiBSPArrayController примечания

 
Примечание.
В файле может быть любое кол-во контроллеров этого типа!
Одни работают с поверхностями, другие с иерархией объектов.
Однако, такие файлы лучше создавать в нифскопе, копируя частицы и контроллеры.
Файл с несколькими контроллерами полученный непосредственно из 3д МАХа (может) приводить игру и редактор к вылету...
Случайный баг (?).
Предположение (!) - была нарушена иерархия объектов.
Частицы оказались выше своего эмиттера.
 
Критически важно размещать эмиттер выше его частиц!
Верно для всех случаев, как для эмиттинга по иерархии нод (цепочка) так и для использование в качестве эмиттера, шейпа.
Вот пример правильного порядока объектов в файле!
Tri Plane01 (3) работает эмиттером для частиц с NiBSPArrayController (9) и размещена выше в списке.
Если номер 3 будет ниже, чем номер 9, это гарантированно приведет к КТД!
 
Примечание.
Ранее отмечалось, что для флага 8 (метод Цепочки) NiBSPArrayController  может размещаться в любом месте иерархии, как ниже, так и выше, самой цепочки эмиттеров. Однако, это может оказаться не совсем точным.
Т.е. для стабильной работы NiBSPArrayController, следует размещать в иерархии объектов ниф файла, ВСЕГДА ПОСЛЕ (ниже) объектов указанных в качестве эмиттеров.
 
Именно параметр Flags управления методом запуском анимации и отвечает за метод работы этого контроллера!
ArrayType - режим работы этого контроллера в 3д МАХе.
At_vertices - Режим эмиттинга с поверхности.
Используется для получения эффекта испускания частиц с некоторой поверхности (шейпа).
Флаги включения этого режима, в ниф файле, будут: 24, 26, 28.
 
At_nodes - создает цепочку эмиттеров из иерархии нод.
Обратите внимание, эмиттерами выступают только ноды (niNode), вложенные шейпы не используются.
Т.е. если вложенный шейп, сместить внутри его родительской ноды, это не приведет к появлению еще одной точки испускания частиц.
Частицы испускаются только из координат указанных в настройках ноды.
Флаги включения этого режима, в ниф файле, будут: 8, 10, 12.
Других режимов получить не удалось. Ни флагами в нифскопе, ни экспортом из 3д МАХа.
Т.е. в движке Морровинда, есть только два доступных режима.
 
Примечание.
В МАХе, именно режим Start at ALL vertices дает на выходе в ниф файле, флаг 24.
Все прочие настройки зон генерации частиц Parray в 3д МАХ дают флаг работы этого контроллера 8.
 
Примечание. ВАЖНО!
МАХ устанавливает в качестве эмиттера (при Start at ALL vertices) не шейп, а ноду!
Что и не позволяло, ранее, получить правильные настройки.
Т.е. сразу после экспорта, ниф файл, необходимо доработать.
Сменив цели и проверив иерархию!
- указав шейп вместо нод в слоте Emitter.
- разместив контроллер ниже эмиттера по списку объектов в ниф файле.
 
Примечание.
По видимости, не использует в качестве эмиттеров, первую и последнею ноды в цепочке.
Т.е. частицы будут испускаться изо всех нод, кроме крайних.
Покрайней мере так можно полагать исходя из имеющихся данных.
Здесь видно, что Bone01 работает основным эмиттером, а все остальные объекты в иерархии становятся вспомогательными эмиттерами(?).
Что интересно, в параметрах контроллера имеются и шейпы, вложенные в ноды (здесь, tri Bone это шейп, а Bone это нода).
Однако, в игре видно, что, частицы создаются только в позициях нод.
 
Примечание
Тесты разных флагов:
флаг 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.
Может работать с морфированными объектами!
Т.к. морфинг вещь сама в себе, никак не связывает поверхность (шейп) с анимациями "скелета", если таковой вообще имеется.
Т.е. да, применить NiBSPArrayController на голову алчущего, или медведя - можно.
Для активаторов и статичных объектов, это вдвойне верно. Все работает согласно задуманному...
Пока (если) объект не будет дополнительно масштабирован в редакторе.
 
Примечание.
Для флага 24.
Отчасти частицы могут работать со скиненными объектами при использовании флага бспартикле ноды 42 (32).
Частицы появляются на вертексах сетки, а дальше отправляются в "свободный полет".
И тот факт, что сетка фактически статична и не двигается, несколько маскируется.
Если использовать флаг бспартикле ноды 170, то, частицы застынут на стартовых позициях.
 
Примечание.
Для флага 24.
Попытка переименования Ниф файла в Хниф с последующим добавлением в него частиц, дабы проверить принципиальную возможность,
получения анимации сетчатой оболочки для использования частицами - не дала положительного результата.
Т.е. частицы все также появлялись в позиция статичного положения сетчатой оболочки, полностью игнорируя ее изменения от действия анимации.
Т.е. получить обновляемую анимацию появления частиц с имеющей скин поверхности, не показали положительной возможности такого получения.
При этом, с морфированными поверхностями, все работает исправно.
 
Примечание.
Этот контроллер частиц можно использовать с невидимыми анимированными поверхностями.
Т.е. создать в МАХе некую сложную поверхность меняющую свой вид под действием морфинга.
А затем указать её в качестве эмиттера использовав не ней материал с полной прозрачностью.
Что позволит создавать самые замысловатые формы движения частиц.
Т.е. сам шейп содержащий анимации морфинга, может быть скрыт!
Но если скрыть и его родительскую ноду, частицы перестанут отображаться.
 
Примечание.
Эмиттеры частиц, как шейп, так и ноды (цепочка) могут и полностью скрытыми.
Т.е. частицы будут создаваться (и появляется в игре) не только если имеются настройки прозрачности по материалу, но даже если все эмиттеры, скрыты.
КРОМЕ СЛУЧАЕВ, когда скрыты; или нода шейпа использованного в качестве эмиттера, или первая нода в цепочке объектов.
Т.е. если скрыть первый в цепочке объект, который был указан в качестве эмиттера в настройках NiBSPArrayController, это скроет и все частицы.
Но если поставить флаг Hidden на любые (ноды) находящиеся по цепочке после, это не будет скрывать частицы!
Вероятно это связано с принципом работы этого контроллера, который - клонирует систему частиц, выше по иерархии.
 
Примечание.
Флаг 10 (42) может давать позитивные результаты.
Заставляя частицы "мигать"
Словно огонь вспыхивает а потом быстро гаснет.
Это верно, не только для этого контроллера, но и для обычного NiParticleSystemController.
 
Примечание по флагу 24.
По видимости, хорошо работает только с явно указанной поверхностью.
Т.е. если указать в качестве эмиттера некоторый шейп при флаге 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!
Т.е. использование общей ParticleData в теории могло бы полностью синхронизировать настройки обоих двух систем частиц, а также немного сократить размер файла. На практике, к сожалению, это не сработало.
Такой вариант, использования единой ParticleData , стабильно приводит к КТД, хотя в других случаях, это, показывает себя позитивно.
Т.е. несколько систем частиц, никак не связанных между собой через вызовы друг друга в качестве эмиттеров.
Но ничто не мешает указать в обеих 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" режима!
Т.е. эмиттинг по цепочке, нормально работает только для существ со своими уникальными файлами анимаций.
См. оригинальную модель огненного атронаха.
Но если сменить метод его движения на Bipedal, частицы перестанут нормально работать.
 
- В активаторах в виде анимированной поверхности, все работает как следует.
Оба режима т.е.
 
- Проблема явно связана со скинингом модели, но об этом уже писали выше.
Т.е. морфированные модели, в основном, работают стабильно.
 
Примечание.
С одного форума.
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
 
Скриншоты.
См. здесь.