×
Меню
Индекс

Particles from scratch via Nifskope only

Основная статья: NiParticle
 
Все "элементы" частиц могут быть свободно добавлены по Insert.
Правильная настройка оных и назначение контроллеров в нужной последовательности, может оказаться не совсем простым занятием, но только на первый взгляд.
На деле, не все так "страшно" и частицы, могут быть довольно легко созданы с нуля только при помощи одного Нифскопа.
При этом, можно добавить все возможные модификаторы, пускай и в несколько "урезанном" виде.
Т.к. подобрать некоторые настройки на глазок - не самое простое занятие.
Но, создать простую систему частиц не составит большого труда.
 
Собственно, создавать сложные траектории движения оной, посредством коллайдеров, будет несколько затруднительно.
Т.к. оные не имеют визуализации, что и усложняет нахождение нужных позиции.
Впрочем, если устанавливать тестовые плоскости (ака простые шейпы) в качестве ориентиров, то это становится, вполне, возможным.
Достаточно будет копировать позиции (оных плоскостей) и подставлять данные в настройки коллайдеров.
 
Ок! Создаем частицы с нуля только через Нифскоп.

Открыть любой ниф файл 4.0 версии!
Что важно!
Это укажет нифскопу правильный формат файла.
 
Выделить корневую ноду и Remove Branch.
Т.е. удалить ВСЕ содержимое файла!
Это упростит ориентацию в сцене и только.
 
Либо, можно ничего не удалять, но создать частицы прямо в этом файле.
И только затем удалить "лишнее" содержимое.
 
Теперь, добавить базовые элементы частиц.
Insert->
2. NiParticlesData (возможно лучше добавлять NiAutoNormalParticlesData)
4. NiNode (это будет эмиттер)(сразу задать имя "emitter")
5. NiParticleGrowFade (опционально).
 
Поправочка от Svergy за 2025ый!
"Внезапно" выяснилось, что NiParticlesData палка о двух концах.
Т.е. может работать не совсем стабильно вызывая интересные глюки.
По крайней мере, в файлах существ, такое было отмечено.
- может нарушаться размер частиц (это не очень интересно)
- все существа в сцене, будут проигрывать анимации частиц синхронно, даже если они "мертвы". (а это уже интересно, да).
Например существо должно испустить частицы только в момент кончины, что срабатывает исправно...
Только для всех существ в сцене, в т.ч. (еще) живых! Они синхронно с "убиенным" испустят положенные на анимацию частицы.
Также, испустят из себя частицы, уже "не живые" существа.
Таким образом получается возможность создавать затейливые анимации.
При этом, виновником "торжества" являются ТОЛЬКО NiParticlesData!
Ни NiParticles, ни BsparticleNode с хитрыми флагами, ни еще какие-то замороченные пляски с бубнами, а один этот объект!
Таким образом, (теперь) стоит рекомендовать использовать не NiParticlesData, а NiAutoNormalParticlesData.
Которая не имеет подобного странного поведения.
 
Можно было бы добавить NiRotatingParticles, но практической пользы в этом нет. Этот объект не работоспособен полностью.
Поэтому, сразу используем NiParticles с NiParticlesData, либо (что оказывается надежнее!) с NiAutoNormalParticlesData!

Еще!
Если начали сумневаться в NiParticles, то используйте NiAutoNormalParticles.
Хотя тесты показали, что "хомяк" схоронился именно в дате частиц и название их контейнера не оказывает эффекта.
Также, описанный выше момент, имел место быть в файлах существ.
Т.е. влияние на частицы светильников, касторов, активаторов и пр. объектов будет не столь "радикально".
Конечно, если не начать использовать затейливые скрипты и МВСЕ.
 
И да, дальше по заметке везде продолжат упоминаться NiParticlesData.
Просто держите в уме, ЕСЛИ появились странности в работе частиц, то смените тип их даты на NiAutoNormalParticlesData.
 
Едем дальше!
 
Через Attach Properties выделив NiParticles:
Т.е. добавляем к частицам необходимые свойства.
NiZBufferProperty =  флаг 1.
NiAlphaProperty = флаг 13.
NiMaterialProperty = изменить уровень Alpha на 0.9 (опционально) ибо альфа свойства =13.
Emissive Color = установить цвет белый, либо сделать чуть светлее. Актуально если частицы не в источнике света.
Если это будет пламя огня, или магический эффект, можно оставить черным.
Все остальное по умолчанию.
NiTexturingProperty ПКМ: - textures - add base texture - выбрать текстуру по желанию.
 
Далее:
1. NiParticles в слоте Controller указать номер NiParticleSystemController.
2. NiParticles в слоте Data указать NiParticlesData.
 
Теперь переходим в NiParticlesData.
Где прописываем базовые параметры частиц от которых будет стартовать NiParticleSystemController.
Также, это нужно для отображения частиц в нифскопе и в окне редактора, сразу после размещения в сцену частиц.
 
NiParticlesData во всем идентичны NiAutoNormalParticlesData!
 
Num Vertices
15
указать общее кол-во частиц которое хотим задействовать.
В качестве примера укажем: 15
 
Has Vertices
yes
иначе ничего не отобразится.
 
Radius
1.000
отвечает за просчет отображения частиц в сцене.
 
Num Particles
15.
Т.е. =Num Vertices
Particle Radius
1.000
Радиус самих частиц. Т.е. каждой в отдельности.
О радиусах всякие подробности см. здесь.
 
Num Active
15
Кол-во активных частиц в момент времени.
Может быть меньше, но не больше. Установим как равное.
 
Has Sizes
yes
Размеры частиц.
 
Sizes
0
Ограничиться установкой
Has Size: Yes
и не забыть нажать обновить (стрелочки). Этого достаточно!
 
Менять настройки размера для каждой частицы во вложенном разделе, нет смысла.
Т.к. размер частиц будет перезаписан действием контроллера.
 
Has UV, Has Normals, Has Vertex Colors и прочее - не трогаем, т.е. оставляем как NO.
Для базовой настройки частиц это не обязательно.
 
Далее!
Переходим к настройке анимации частиц!
Выделяем NiParticleSystemController.
1. NiParticleSystemController в строке Target указать номер NiParticles.
2. NiParticleSystemController в Emitter указать номер  NiNode (которая была названа Emitter).
3. NiParticleSystemController в Particle Extra указать номер NiParticleGrowFade.
 
Должно получиться что-то подобное:
Это уже полностью настроенный контроллер.
Можно установить настройки аналогичные этим.
 
Flags
8
Анимация проигрывается постоянно.
Если требуется наоборот создать статичное облако частиц, без пульсаций и прочего - ставить флаг 12!
За подробностями см. основные разделы.
 
Frequency
1
 
Скорость анимации ровная, без ускорения и замедления. За подробностями см. основные разделы.
Phase
1000
 
Можно любое другое число. За подробностями см. основные разделы.
Start Time
0.0000
 
Начало анимации в нулевом фрейме. За подробностями см. основные разделы.
Stop Time
3.0000
 
 
Продолжительность доступного времени в файле. За подробностями см. основные разделы.
Здесь это 100 кадров (примерно). Что вполне достаточно для гладкой анимации.
Target
ХХ
 
номер niParticles.
Speed
30.000
 
Здесь указана средняя скорость движения частиц.
Поскольку создаем прямой поток частиц, значения коррекции рассеивания, не трогаем. Т.е. Speed Random, Vertical Direction, Horizontal Dir и пр.
Size
15.0000
 
 
Размер частиц влияет на их "заметность".
15 вполне достаточно, например для использования в модели Костра.
Emit Start
0.0000
 
Это время начала рождения частиц
Emit Stop
3.0000
 
 
Время завершения генерации частиц.
Для создания ровного потока частиц, здесь оно равно примерно половине общего времени анимации.
Emit Rate
100.000
 
Плотность потока в момент времени.
Life time
1.0
Время жизни частиц.
Меньше половины от времени генерации. См. выше. Start\Stop Time.
 
Life variation
 
0.0
Здесь создается ровный поток, где все его частицы имеют равное время существования.
Emitter
ХХ
 
номер эмиттера. Очень важно его указать!
Num Particles
10
 
Указываем кол-во частиц которые хотим задействовать в момент времени.
Num Valid
1
 
Кол-во частиц в нулевом кадре. Чтобы не загружать сцену предпросчетом частиц, указываем 1.
И не забывайте нажать стрелки для обновления параметра!
 
Particle Extra
ХХ
 
указываем номер первого модификатора. Здесь это niParticleGrowFade.
Trailer
0
 
Создания шлейфа, в данном случае, не требуется, по этому оставляем 0.
Если нужен шлейф, поставить 1 и читать далее по этой странице.
 
 
 
Далее, настраиваем модификатор частиц!
Здесь это
NiParticleGrowFade:
Grow 0.0000 - частицы имеют 100% размер в начале рождения.
Fade 1.0000 - и сокращаются до 1% к концу жизни.
Это создаст систему частиц с широким основанием и острым верхом.
Что подходит для создания пламени свечи, или костра.
В слоте Controller (niParticleGrowFade) обязательно следует указать номер NiParticleSystemController!
Иначе модель приведет к вылету игры.
Next Modifier - в данном случае, пусто, т.к. в модели используется только один модификатор.
Но если их (модификаторов) будет использоваться несколько, в этом слоте указывается следующий.
 
Теперь, получившуюся систему следует упаковать в одну ноду!
Которая и будет корнем файла.
NiParticles ->attach parent node->niNode.
Затем выбрать, у новой ноды раздел, Num Children и указать кол-во 2.
Нажать обновить (те зеленые стрелки).
Указать номер ноды эмиттера.
Т.е. в корне файла указывается, как; сама система частиц, так и ее эмиттер!
Если он окажется вне корня (файла) то, частицы не смогут работать.
 
И чтобы анимация частиц проигрывалась постоянно, а не "стояла столбом" следует добавить анимационную ноду.
Если же, по каким-то причинам, нужно получить статичный вид частиц, без какой либо анимации, то больше ничего делать не потребуется.
Но если нужна постоянная анимация потока частиц, то:
Выбрать корневую ноду и:
RCM->Convert->NiB->NiBsAnimationNode
Установить флаг 32.
Теперь частицы будут проигрывать анимацию правильно!
Финальная конструкция, будет выглядеть примерно так:
 
В принципе все, полученная конструкция уже будет работать в игре!
Но для возможности выделения и перемещения модели в редакторе, следует добавить хотя бы один шейп!
Иначе частицы будет невозможно выделять и перемещать.
Самый простой вариант, скопировать шейп из любого другого ниф файла.
Модели открытого огня в каминах будут оптимальны.
Также, будет полезно превратить это в маркер.
 
Впрочем, это зависит уже от ваших целей.
Здесь мы рассматривали сам принцип создания системы частиц в базовой конфигурации, так сказать.
Если создается светильник, то собранные частицы можно будет вставить в файл содержащий шейпы оного.
Если существо, аналогично.
 
В итоге получаем такую конструкцию.
  •  
  • корень файла
  • система частиц
  • контроллер частиц
  • модификатор частиц
  • ссылка на шейп частиц в контроллере оных
  • ссылка на эмиттер
  • z-буфер, предотвращает мерцание полигонов
  • текстурные свойства, назначают текстуру
  •  
  • дата частиц
  • свойства альфы, дает прозрачность текстуре
  • свойства материала, придают оттенок
  • это сам эмиттер
 
 
А после добавления вспомогательных элементов в виде Маркера и Боундинг Бокса, это будет выглядеть вот так:
Маркер - служит для возможности выделения модели в редакторе.
БоундБокс - для управления размером выделения, т.е. просто для удобства.
СтрингЭкстраДата - служит триггером для включения использования маркера, т.е. это также, необходимая запись.
 
Если нужно получить шлейф за частицами, что актуально в основном для факелов, или иных подвижных объектов, то:
Выбрать частицы:
RCM->Node->Attach Parrent Node->NiBSParticleNode
Установить флаг 170.
Также, см. примечания, о том какие флаги, какой эффект дают.
Финальная конструкция будет примерно такой:
При этом, корень файла, можно превратить в обычную ноду.
Т.к. все анимации частиц, теперь будет включаться через бспартиклеНоду.
 
Таким образом, если в файле есть еще какая-то анимация, то;
- корень файла это NiBsAnimationNode!
А сами частицы упакованы в NiBSParticleNode (если нужен шлейф) если не нужен, то используем NiNode.
 
Но если никакой иной анимации в файле нет, то;
- корень файла может быть обычной NiNode, и только частицы упаковать в NiBSParticleNode, либо в NiBsAnimationNode (если не нужен шлейф).
Делать корневую ноду файла NiBSParticleNode - не лучшая идея. Точнее, вот прям совсем проблемная!
 
Для статичных светильников (костры, даэдрические жаровни и пр.) достаточно вложенных NiBSParticleNode.
Корень файла может сохраняться как NiNode.
Анимация частиц будет исправно работать.
NiBsAnimationNode в качестве корня нужна только для моделей содержащих какую-то иную постоянную анимацию в составе нод, или шейпов.
 
Примечания.
НО!
Если что-то не сработало и частицы продолжают "стоять столбом", т.е. не имеют анимации.
Тогда!
Первым делом проверить флаги на нодах.
NiBsAnimationNode - 32.
NiBSParticleNode - см. здесь, т.к. флагов может быть много. Для начала проверить 170 или 32.
Также проверить флаг на Emitter - 2 для начала.
 
Если это также не помогло, тогда:
- корень файла сделать NiBsAnimationNode (32).
- частицы упаковать в обычную NiNode (10).
т.е. отказаться от NiBSParticleNode.
В 99% случаев после этого частицы начинают работать исправно.
Если не помогло и это, проверить флаги контроллера частиц и!
 
А еще, вот если ничего совсем не помогает!
Возможно в редакторе подключена не та модель которую сейчас редактировали (С) ^-^
 
Еще вариант, модель не обновилась по причине ее кешированности!
Либо в текущей сцене уже есть несколько объектов с этой моделью.
Либо, было открыто несколько ячеек редактора, где, эта модель уже находилась.
Отчего при попытке ее обновить оную (в другой ячейки) никаких изменений не будет видно.
В этом случае, подключите совсем другую модель, а затем верните обратно текущую.
Либо перезапустите редактор.
Такой "глюк" можно поймать на поздних этапах работы с плагином.
Если же модель находится в текущей ячейке, но в нескольких копиях, то удалите их все и нажмите отмену.
Это также обновит данные модели.
 
И, теперь собственно все(С)
Проверить частицы в игре!
Если все работает, можно перейти к детальным настройкам контроллера частиц.
Таковые смотрим в файлах готовых частиц и в этих заметках.
В разделе описания настроек этого контроллера.
 
Добавлять по вкусу;  Гравитацию, коллайдеры, смену цвета, или бомбу.
Настройки и примечания оных смотрим в их разделах.
 
Финальный вид созданных в нифскопе частиц.
Шейп, также был создан непосредственно в нифскопе.
О чем смотри ролик.
14 NiNode используется для создания Bounding Box, о чем см. этот раздел.
Он нужен исключительно для удобства выделения модели в редакторе.
 
Модель в игре.
Видно только пламя и никаких багов с мерцанием, чем "грешат" ванильные модели огня.
За исправления этой оказии и отвечает Editor marker.
 
Модель в редакторе с отображением Маркера.

За доп. подробностями см. ролики:
@_Notes_for_Modmaking\Additional_Files\Tours\
NiParticle\NF_particle_from_scratch.flv
также там можно найти файлы с примерами.
 
Дополнительное примечание!
Видео руководство по работе с частицами, только средствами нифскопа, можно найти здесь:
https://youtu.be/oZRVoQ8-T74
Язык английский, но в целом можно смотреть и без звука.
Скромные 8 часов (:) ролика покажут все тонкости работы с частицами)))
Рекомендуется скачать файл на диск!
*используя подходящие для этого внешние сервисы.
 
Также см.
https://www.fullrest.ru/files/particlealchemetrics
Здесь архив с моделями из того видео.
Не требует регистрации для скачивания.
 
Оригинальная страница проекта:
https://www.nexusmods.com/morrowind/mods/48623
Требует регистрации для скачивания.