×
Menu

NiParticlesData

 
Это базовые значения частиц используемые контроллером в качестве отправной точки!
NiParticlesData objects contain the actual geometry data necessary to render an NiParticles object.

Также, некоторые параметры этого раздела отвечают за правильность отключения рендеринга частиц на краю видимости.
Т.е. определяют когда частицы должны перестать отображаться при выходе из поля зрения камеры.
 
Если частицы были получены из 3д МАХа, то особого смысла менять, что-то в этом разделе, может не быть.
Как правило, настройки корректны и работоспособны.
Однако, если частицы добавляются через нифскоп вручную, эти параметры имеют существенное значение...
Также, если требуется создать массив частиц без анимации с заданными положениями частиц в пространстве.
Т.е. полезно понимать, что за что отвечает в этом разделе!
 
Примечание.
- в целях оптимизации полезно использовать одну общую NiParticlesData для всех систем частиц в файле.
- кроме случая использования NiBSPArrayController использующего другую систему частиц в качестве своего эмиттера!
В таком случае, каждая система частиц должна иметь свои уникальные (по номеру) (но не по настройкам) NiParticlesData.

Настройки
(одинаковы для всех типов частиц NiParticlesData, NiAutoNormalParticlesData и NiRotatingParticlesData).
Поэтому, вынесено все в один раздел.
Значение
Описание
Num Vertices
Кол-во вертексов.
В данном случае, вертекс = частица.
Кол-во может быть любым.
Но не выше 65535.
 
Указывается всегда.
Если равно нулю, в игре будет пусто!
 
Для двух систем частиц использующихся в NiBSPArrayController стоит указывать равные значения.
Т.е. если одна система частиц использует другую в качестве своего эмиттера, кол-во доступных вертексов полезно указать равным.
Кроме случаев когда это не нужно по художественным соображениям.
 
Particles and the Active Vertex Count
Note that if the vertex count is changed, it is important to update the model-space bounding sphere and call Update and MarkAsChanged upon the object or a parent to ensure that the vertices are correctly updated--see the NiGeometry and NiGeometryData notes for details. Also, if the active particle count is incremented (using NiGeometry::SetActiveVertexCount), the application should call Update on the object to ensure that newly active particles at the end of the array are updated.
 
Has Vertices
Всегда - ДА.
Иначе частицы перестанут отображаться.
 
Хотя бы несколько частиц должно быть всегда!
Это некоторые базовое значение из которого контроллер частиц будет выстраивать данные.
Т.е. если кол-во частиц здесь равно нулю, то контроллер частиц не сможет их произвести.
 
Также, это раздел отвечает за позицию частиц!
Т.е. здесь указывается их положение в начале анимации.
Это может быть использовано при создании Статичных Частиц.
 
Но, в большинстве случаев, достаточно указать кол-во (вертексов) частиц.
А их позиции оставить в нулях.
Просто нажав обновить.
 
При создании частиц с нуля в нифскопе, требуется обязательно указать хотя бы несколько частиц!
Если частицы были получены из 3д МАХа и значения в этом разделе = нулю, следует это исправить!
Иначе в игре не будет ничего видно.
Тип частиц Pcloud - может установить здесь пустые значения, если экспортировать этот тип частиц, с настройками по умолчанию! Это некорректно и требует исправления!
 
Если же контроллер не используется вовсе, то здесь можно указать значения позиций для каждой частицы.
Что критически необходимо для этого варианта!
 
Has Normals
Позиции нормалей частиц в первом кадре их анимации.
Т.е. ориентация частиц к свету (или выравнивание частиц на камеру, что более вероятно в этом случае).
 
Активность этого значения зависит от типа частиц:
- для NiRotatingParticles не активно.
- для NiAutoNormalParticles активно.
- для NiParticles зависит от первоначального типа частиц.
Т.е. из какого типа их конвертировали. Т.к. последний тип, можно получить только в Нифскопе.
 
Не актуально, т.к. движок берет все на себя, автоматически выравнивая частицы по отношению к камере.
 
Для NiAutoNormalParticles и NiParticles.
Можно установить, как YES и нажав обновить, на этом остановиться.
Т.е. что-то менять в положениях частиц смысла нет(С)
 
These functions get and set the initial value of the normal given to new particles.
 
Particles and Normals
The normal array passed into this object should be NULL.
Even if normals are provided, they will not be used.
Some renderers automatically generate a normal for each particle at the time the particle is rendered.
This auto-generated normal is always set to face the camera, just like the quad that represents the particle.
 
Из справки к Нифскопу.
The lighting normals.
Do we have lighting normals? These are essential for proper lighting: if not present, the model will only be influenced by ambient light.
 
Center
центр опоры массива частиц.
 
Вероятно, влияет на просчет Raduis, в следующем разделе.
 
Из справки к Нифскопу.
Center of the bounding box (smallest box that contains all vertices) of the mesh.
 
Radius
Радиус массива частиц.
Аналогично radius во всех прочих элементах.
 
Влияет на прекращение рендеринга объекта когда тот оказывается на границе экрана.
Если радиус не подходящий, весь массив частиц исчезнет с экрана раньше "положенного".
Т.е. это будет выглядеть неестественно.
С другой стороны, этим можно пользоваться в некоторых целях.
 
После назначения всех параметров, можно выбрать опцию ПКМ->Update Centre Radius.
Либо поставить 1.0000 и перейти к следующему пункту.
Но лучше использовать Update!
 
Может принимать значения:
Radius = <float_max>
Radius = <float_min>
Т.е. можно установить значение всегда устанавливающее максимально (минимально) возможный радиус.
Можно предполагать, что это как-то сказывается на движке.
Т.е. либо способствую повышению точности просчета радиуса объекта.
Либо затрачивая на это вычислительные ресурсы, на постоянный мониторинг параметра.
Что (не проверялось) может как-то сказываться на фпс.
 
См. здесь.
 
Пример неправильного радиуса модели можно увидеть здесь:
Tours\@How_To\NiTextureEffect\ENVIRONMENT_MAP\Reflect_on_Particles(ENVIRONMENT)(bad_particle_radius!)(forExampleJust).NIF
 
Из справки к Нифскопу.
Radius of the mesh: maximal Euclidean distance between the center and all vertices.
 
Из справки к движку.
This parameter is scaled by the world-space scale of the particles object and is used to size the particles according to depth. This parameter allows applications to adjust particles to be the correct size for the objects that they are representing.
 
Has Vertex Color
Включается если применить niParticleColor модификатор.
См. в МАХ здесь.
 
Если частицы создаются в нифскопе и им планируется добавлять тот модификатор, следует активировать этот раздел здесь!
Цвет вертексов может быть белым.
Т.е. не обязательно указывать каждой частице особый цвет.
Достаточно установить YES и нажать обновить (стрелки).
 
Из справки к Нифскопу.
Do we have vertex colors? These are usually used to fine-tune the lighting of the model.
Note: how vertex colors influence the model can be controlled by having a NiVertexColorProperty object as a property child of the root node. If this property object is not present, the vertex colors fine-tune lighting.
Note 2: set to either 0 or 0xFFFFFFFF for NifTexture compatibility.
 
The vertex colors
Задает цвета вертексной окраски для каждой частицы.
Активируется из предыдущего раздела.
 
Работает для каждой частицы индивидуально!
Одна частица = один цвет.
 
Актуально менять, только если на частицах нет NiParticleSystemController.
Т.е. только при создании пассивных частиц.
В остальных случаях, цвет можно оставлять по умолчанию.
Либо на активировать вовсе.
 
Из 3д МАХа можно получить значения цвета в этом разделе, если был использован niParticleColor.
 
Num UV Sets
кол-во каналов развертки.
Всегда нуль.
Обратные случаи не известны.
 
Т.к. 3д МАХ не позволяет использовать управление разверткой на частицах.
Однако через нифскоп можно, попробовать, добавить новые каналы.
 
Из справки к Нифскопу.
The lower 6 (or less?) bits of this field represent the number of UV texture sets. The other bits are probably flag bits. For versions 10.1.0.0 and up, if bit 12 is set then extra vectors are present after the normals.
 
Has UV
В теории, может позволить создать дополнительную развертку. (?)
Тесты с развертками, не проводились (С)
В теории, развертки, могли бы быть актуальны при использовании контроллера смещения текстур.
Однако, он, по видимости, не может быть нормально использован на частицах.
А также имеет проблемы с выбором активного канала.
 
По умолчанию NO.
 
На практике, см. выше. 3д МАХ отказывается накладывать модификаторы UV на частицы.
 
UV Sets
Настройки развертки для каждого канала.

По умолчанию NO.
 
Texturing and Particles
Even though no application-supplied texture coordinates are supported, particles may still be textured.  If a texture is applied to a particles object, then each particle will have the entire texture mapped to it.  In other words, the upper-left corner of each particle is mapped the texture coordinate [0,0], and the lower-right corner of each particle is mapped to the texture coordinate [1,1].  This approach can be extremely useful for creating particles that do not look square -- using alpha blending, alpha testing or color key transparency to make each particle appear spherical or rough.
 
Из справки к Нифскопу.
Bethesda's version of this field for nif versions 20.2.0.7 and up. Only a single bit denotes whether uv's are present. For example, see meshes/architecture/megaton/megatonrampturn45sml.nif in Fallout 3.
 
The UV texture coordinates. They follow the OpenGL standard: some programs may require you to flip the second coordinate.
 
Num Particles:
Максимально число частиц одновременно живущих в сцене.
 
Как пишет справка к Нифскопу, равно числу вертексов.
The maximum number of particles (matches the number of vertices).
На практике, как правило всегда несколько меньше.
Хотя бы на одну единицу.
 
Можно поменять при желании.
- не забыть поменять число вертексов. Т.к. число здесь не должно быть больше, чем там!
- обновить прочие разделы с указанием позиций частиц и пр.
Если не сделать, Нифскоп будет выдавать сообщение об ошибке при сохранении файла.
""infinite recursive link construct detected 4 -> 4""  примерно такого свойства.
 
Актуально, в основном, если с частиц удален NiParticleSystemController.
 
Particle radius:
Здесь это радиус каждой частицы по отдельности.
Но значение работает для всех частиц сразу!
 
Влияет на отсечение конкретной частицы на границе экрана.
Слишком большие или слишком маленькие радиусы могут привести к несвоевременному исчезновению объектов при определенных углах наблюдения.
 
Не влияет на размер зоны частиц.
Т.е. при изменения радиуса, визуально в игре и редакторе, размер области, или самих частиц - не меняются.

См. здесь.
 
Установить 1.0000
В большинстве случаев, этого достаточно.
 
По справке нифскопа, значится:
The individual particel sizes.
 
Num active
Число активных частиц в первом кадре.
 
Кол-во может быть любым, но не больше общего кол-ва (Num Vertices).
Влияет на модель в редакторе при помещении оной в сцену.
Также может просаживать фпс при добавлении объекта непосредственно в игре, через скрипты.
Т.е. не стоит держать большие значения активных частиц.
 
Актуально менять только для частиц без NiParticleSystemController.
Если нет контроллера, в сцене, будет именно указанное число, если есть контроллер - генерация частиц будет на его "совести".
 
Из справки к движку.
Retrieve and set the number of active particles.  Setting this value to be less than the number of vertices in the object will cause particles at the end of the vertex list to be ignored when transforming and rendering the primitive.  If the active particle count is set to some usActive that is less than usVertices, then the last usVertices - usActive particles will be ignored.
 
Has size
Включает возможность установки размера и задает оный для каждой частицы индивидуально.
 
При создании частиц в нифскопе с нуля, достаточно нажать Yes и обновить.
Устанавливать значения, для каждой частицы, не требуется.
 
Изменять размер, актуально, в основном, только для частиц без NiParticleSystemController.
Девять частиц с size 1.0000
И одна частица с size 5.0000
 
Из справки к движку.
Individual Particle Sizes
There are two ways to adjust particle size within an NiParticles object. The radius of each particle is retrieved with GetRadii. There is also a size for each particle, which is a ratio between 0.0 and 1.0 that is multiplied by the radius to obtain the final rendered size of the particle.
 
The elements of this array may be manipulated directly to change the size of each particle at runtime.
 
Has Rotations 2
Активно только в NiRotatingParticlesdata.
 
Rotations 2
Если активно Has Rotation.
Позволяет задать поворот каждой частице индивидуально.
 
Но, это актуально только для NiParticleMeshes.
В любом случае, это устанавливает положение (поворот) только для первого кадра анимации (т.е. первом появления частиц в сцене).
Затем будет перехвачено контроллером частиц.
Менять, или устанавливать значения фактически нет смысла.
 
Для всех прочих случаев, выглядит как неработоспособное.
Поскольку движком МВ обрабатывает все частицы как Билбоардные, т.к. всегда повернутые к камере.
Т.к. во всех случаях поворота, или изменение позиций частиц - не происходит.
Даже если на частицах нет контроллера!
От типа контейнера даты частиц, также не было замечено эффекта.
 
Particles and Rotation
Currently, texture-based (NiParticles) particles do not support rotations due to performance and hardware limitations.  However, the rotation values are used in the NiParticleMeshes subclass to rotate the more complex mesh-based particles.