×
Menu

Nif.Xml

Файл настроек Нифскопа содержащие записи о типах объектов.
Допускает создание, новых и редактирование уже имеющихся записей.
Что открывает ряд новых возможностей по работе с моделями!
К сожалению, все эти годы (до 2020го), этому файлу уделялось крайне малое внимание...
Меж тем, список известных нифскопу объектов задается именно здесь!
Что,  позволяет сделать не только исправление и добавления, но и... перевод описаний параметров?
 
Впрочем было отмечено, что существует некоторые названия которые нельзя изменять!
Изменение может приводить к потере работоспособности объекта.
Это было отмечено при работе с niParticleSystemController-ом.
Надо полагать, что это поправимо, разве что, придется поправить исходный код, благо он доступен в оп-сорсе.
 
Впрочем, эта статья лишь, простое уточнение о наличии в архиве заметок исправленного файла.
А также, некоторые примечания, о том, что было изменено (для истории).
- исправления в настройках частиц.
- исправления в настройках дефлекторов .
- исправлена бомба! теперь ее можно создавать и редактировать.
- исправлена niCamera.
- добавлено niCollisionSwitch. Т.е. целый новый и полезный узел можно добавлять и редактировать.
- добавлено NiTriShapeDynamicData еще один узел который можно внедрять и изменять!
- добавлено NiSortAdjustNode.
- добавлено NiBSPNode.
- добавлено NiAccumulator.
- добавлено NiScreenPolygon.
- добавлено NiRendererSpecificProperty.
- добавлено niBltSource.
- добавлено NiKeyframeManager
- обновлено NiSkinPartition
- значительно обновлено и расширено описание работы Боундинг Бокса. Это опциональные правки и не рекомендуются к внесению на постоянных началах!
 
Примечание.
Отдельные исправленные, или добавленные, настройки объектов, можно найти в их разделах.
См. (например) здесь и далее.
Все обновленные, или добавленные объекты, получили отдельный параграф в заметках, для удобства поиска и исправлений.
 
Полная версия Nif.xml файла находится здесь:
@_Notes_for_Modmaking\Additional_Files\Nifskope\Nifskope_(XML_file_Only)(for_1.1._1.2versions)
Версия под Нифскоп 1.1.3, но подойдет и для 1.2а.
Не забудьте сделать резервную копию!
 
Файл содержит еще ряд исправлений названий, которые здесь не был указаны, по причине значительного объема таких правок.
Но всегда можно использовать утилиты для сравнения двух файлов и посмотреть, чем этот файл отличается от исходного.
 
Большинство дополнений и измененных разделов перенесено в конец файла, что, хоть как-то, должно упростить поиск основного массива изменений.
 
Примечание.
Как дополнительный вариант, можно заменить Nif.xml файл, на специальный билд оного - содержащий записи подходящие только для МВ.
См. здесь.
@_Notes_for_Modmaking\Additional_Files\Nif_xml
Это оптимизированный Nif.xml файл предотвращающий случайное добавление не известного для МВ объекта.
А также, несколько ускоряющий работу Нифскопа.
 
Версии для Нифскопа 2.0 и 1.1.3 (1.2)
Удалено все лишнее!
Однако!
Эта версия не позволит открыть ниф файлы от других игр, т.к. нужные для этого записи удалены!
Используйте замену только если знаете, что делаете.
Впрочем, никто не мешает использовать несколько копий Нифскопа.
В т.ч. портейбл.
 
Примечание.
Если изменить запись abstract="1", на abstract="0" появится возможность преобразования объектов в больших приделах!
Т.е. быстро сменить тип объекта на базовый и затем преобразовать, базовый тип в другой объект.
Например превратить частицы в niObject, который затем превратить в шейп.
Это возможность, следует использовать с осторожностью!
Но в некоторых случаях, такое действие может оказаться удобным.
 
Для быстрого теста (этой возможности), в любом текстовом редакторе выполнить "найти и заменить" по всему тексту:
"abstract="1" -> abstract="0"
Теперь перезагрузив Nif.Xml выбрать любой объект и нажать на нем ПКМ->Convert.
В этом меню будет много больше опций, чем было прежде.
Но неправильная конверсия приведет к ошибкам!
Делайте это только если уверены и понимаете, что вы делаете!
 
Примечание.
Если объект имеет значение abstract="1", то ниф файл содержащий этот объект не может быть открыт корректно.
Т.е. если обозначить (например) NiBsAnimationManager как abstract="1", модель будет открыта с ошибками.
Но если обозначить abstract="0", откроется корректно.
Однако, некоторые объекты не полезно создавать в ниф файлах, тот же NiBsAnimationManager.
Другие объекты являются абстрактными над классами и должны иметь значения abstract="1", т.к. их "физическое" добавление не предполагается в принципе. Т.к. приводит к вылетам игры  редактора.
Следует это учитывать при редактировании файла и внесение в него правок.
 
Если объект не планируется добавлять в ниф файлы и нет необходимости открывать файлы его содержащие, то можно переводить значение из 0 в 1. Это уберет такие объекты из контекстного меню Convert нифскопа и предохранит от случайного добавления, через меню Insert. Выглядит так, что ряд объектов будет полезно перевести в abstract="1"!
NiBone,  NiBsAnimationManager и пр.
 
Таким образом можно сократить кол-во опций для добавления и конверсии только известными и рабочими в МВ типами объектов, убрав все от старших игр и не нужное для использования в МВ.
Впрочем, будет лучше иметь две версии Nif.xml файла, одна только для работы с МВ.
Вторая для открытия всего прочего. Т.е. ниф файлов старших версий.
 
При желании, параметр abstract="Х" можно вовсе удалить из строк ХМЛ файла.
 
Примечание.
Как вариант, из Ниф.хмл файла, можно выкинуть вообще все лишнее, что не требуется для ниф файлов 4.0 версии.
Это уберет названия таких объектов из контекстного меню.
Но равно не позволит открыть ниф файлы от старших версий.
Что, конечно, легко решается, другой копией нифскопа, с полной версией ниф.хмл.
 
(возможно) Полный список правок см. в разделах объектов.
Все правки относятся ТОЛЬКО к ниф файлам 4.0 версии и после их внесения, нифскоп НЕ СМОЖЕТ открывать ниф файлы других версий.
Т.е. это оптимизированные только под МВ правки.
Используйте их только в специальной сборке нифскопа.
 
NiBone - удалить из ниф хмл!
NiBSAnimationManager лучше не добавлять. Т.е. объект не показывает пользу для использования в ниф файлах.
NiKeyframeManager лучше не добавлять
NiRenderedTexture опционально
NiRendererSpecificProperty опционально
NiScreenPolygon опционально
BrickNiExtraData опционально
BSMirroredNode опционально
TES3ObjectExtraData опционально
NiParticleMeshes лучше не добавлять, т.е. не работает в МВ!
Bounding Box - тестовые правки с возможностью быстрого отката оных.
 

Разделы пробивать поиском.
 
Примечание.
" default="4845"> значение после default обозначает предустановку.
Т.е. можно настроить некоторые значения под себя, просто добавив " default="ХХХХ" в желаемую строку.
Значение по дефолту.
 
На что заменять.
Флаг альфы по умолчанию.
 <add name="Flags" type="Flags" default="237">
<=
<add name="Flags" type="Flags" default="4845">
подклас анимационной ноды, а не обычной.
    <niobject name="NiBSParticleNode" abstract="0" inherit="NiNode">
      Bethesda-specific extension of Node!
    </niobject>
 
    <niobject name="NiBSParticleNode" abstract="0" inherit="NiBSAnimationNode">
      Bethesda-specific extension of Node!
    </niobject>
 <niobject name="NiParticleBomb" abstract="0" inherit="NiParticleModifier">
        A particle modifier.
        <add name="Decay?" type="float">Unknown.</add>
        <add name="Duration?" type="float">Unknown.</add>
        <add name="DeltaV?" type="float">Unknown.</add>
        <add name="Start?" type="float">Unknown.</add>
        <add name="Decay Type?" type="DecayType">Unknown.</add>
        <add name="Symmetry Type?" type="SymmetryType" ver1="4.1.0.12">Unknown.</add>
        <add name="Position?" type="Vector3">The position of the mass point relative to the particle system?</add>
        <add name="Direction?" type="Vector3">The direction of the applied acceleration?</add>
    </niobject>
<=
    <niobject name="NiParticleBomb" abstract="0" inherit="NiParticleModifier">
        <add name="Decay" type="float"></add>
        <add name="Duration" type="float"></add>
        <add name="DeltaV" type="float"></add>
        <add name="Start Time" type="float"></add>
        <add name="Decay Type" type="DecayType"></add>
        <add name="Symmetry Type" type="SymmetryType"></add>
        <add name="Position" type="Vector3"></add>
        <add name="Direction" type="Vector3"></add>
    </niobject>
Настройка параметров частиц в более читабильном виде.
Полностью заменить оригинальный блок!
Обратите внимание, переименовывать некоторые строки - нельзя!
Это приведет к графическим ошибкам в отображении поведения частиц, либо вовсе:
частицы перестанут отображаться!
 
 
Код с коментариями: A generic particle system time controller object. Particle speed in old files Particle speed Particle random speed modifier vertical emit direction [radians] 0.0 : up 1.6 : horizontal 3.1416 : down The declination angle (from the positive Z axis) for the velocity vector of newly created particles. The expected range of declination is from 0.0, which will set the velocity vector to [0,0,1], to pi, which will set the velocity vector to [0,0,-1]. emitter's vertical opening angle [radians] horizontal emit direction emitter's horizontal opening angle "#X_AXIS#" "#VEC4_ONE#" Particle size Particle emit start time Particle emit stop time reset animation perframe. Particle emission rate (particles per second) Particle lifetime Particle lifetime random modifier The dimensions of the volume from which new particles will be generated. The dimensions of the volume from which new particles will be generated. The dimensions of the volume from which new particles will be generated. The object which acts as the basis for the particle emitter. The number of spawn generations a particle can go through The percentage of particles that will actually spawn when a spawn event occurs. Expected values are between 0.0 and 1.0. The number of new particles that will be generated by a spawn event. The change in speed that new particles generated by a spawn event will have. A value of 0.0 indicates no change in speed, a value of 1.0 indicates between a 0% and 100% increase in speed, and a value of –1.0 indicates between a 0% and 100% decrease in speed. There is not currently a way of allowing the system to randomly increase or decrease the speed of a new particle. The change in direction that new particles generated by a spawn event will have. A value of 0.0 indicates no change in direction, and a value of 1.0 indicates between a 0% and 100% change in direction. Unknown Size of the following array. (Maximum number of simultaneous active particles) Number of valid entries in the following array. (Number of active particles at the time the system was saved) Individual particle modifiers? niViscontroller and etc. Link to some optional particle modifiers (NiGravity, NiParticleGrowFade, NiParticleBomb, ...) Link to Colliders. Compute Dynamic Bound Per Frame. Indicates whether or not the controller updates the target particle system bounding volume every frame. 1 A generic particle system time controller object. The initial speed for the newly created particles. The speed variation of the newly created particles. The initial speed of new particles will be equally distributed over the range [Speed – SpeedVariation/2, Speed + SpeedVariation/2]. The declination angle (from the positive Z axis) for the velocity vector of newly created particles. The expected range of declination is from 0.0, which will set the velocity vector to [0,0,1], to pi, which will set the velocity vector to [0,0,-1]. The variation on the declination angle. The initial declination will be computed from the declination and declination variation in the same manner as the initial speed is computed from the speed and speed variation. The planar angle (around the Z axis from the positive X axis) that will serve as the plane in which the declination will occur. The expected range of the planar angle is [0, 2*pi). The variation on the planar angle. The initial planar angle will be computed from the planar angle and planar angle variation in the same manner as the initial speed is computed from the speed and speed variation. The initial value of the normal given to new particles. The initial color values give to new particles. The initial size value given to new particles. The time value at which the NiParticleSystemController will start emitting particles. If this value is less than the "Start Time" variable (derived from NiTimeController), the controller will perform a run-up for the amount of time indicated by the difference. The time value at which the NiParticleSystemController will stop emitting particle. Indicates whether or not the NiParticleSystemController should reset the system when the controller loops. If this flag is set to true, existing particles will be eliminated when the controller loops, and any run-up indicated by the EmitStart variable will occur. Otherwise, the controller will simply continue running from the beginning of the loop, and existing particles will continue to run until they die out naturally. The rate at which particles will be generated. (The number of particles that will be spawned per seconds) The life span for each particle. The life span variation for each particle. The life span of each particle will be computed from the life span and life span variation in the same manner as the initial speed is computed from the speed and speed variation. Indicates whether or not the birth rate variable should be used as the actual birth rate. If this flag is set to false, the max sustainable birth rate based on the life span of the particles will be used. Indicates whether or not a spawn event should occur upon particle death. The dimensions of the volume from which new particles will be generated. The dimensions of the volume from which new particles will be generated. The dimensions of the volume from which new particles will be generated. The NiAVObject that will act as the emitter for the object. The emitter volume is transformed into the world coordinates of the emitter before new particles are generated. This allows the transforms of the emitter to change without affecting the transforms of all the particles in the system. The number of spawn generations a particle can go through. The percentage of particles that will actually spawn when a spawn event occurs. Expected values are between 0.0 and 1.0. The number of new particles that will be generated by a spawn event. The change in speed that new particles generated by a spawn event will have. A value of 0.0 indicates no change in speed, a value of 1.0 indicates between a 0% and 100% increase in speed, and a value of –1.0 indicates between a 0% and 100% decrease in speed. There is not currently a way of allowing the system to randomly increase or decrease the speed of a new particle. The change in direction that new particles generated by a spawn event will have. A value of 0.0 indicates no change in direction, and a value of 1.0 indicates between a 0% and 100% change in direction. The number of initial particles.. The number of active particles in the initial particles array. Data for the initial particles. Modifiers that will influence the particle system. Modifiers that will influence the individual particles. Colliders that will influence the individual particles. Indicates whether or not the controller updates the target particle system bounding volume every frame. 2
<niobject name="NiParticleSystemController" abstract="0" inherit="NiTimeController">
..............
..............
...............
    </niobject>
<=
 <niobject name="NiParticleSystemController" abstract="0" inherit="NiTimeController">
        <add name="Speed" type="float"></add>
        <add name="Speed Variation" type="float"></add>
        <add name="Vertical Direction" type="float"></add>
        <add name="Vertical Angle" type="float"></add>
        <add name="Horizontal Direction" type="float"></add>
        <add name="Horizontal Angle" type="float"></add>
        <add name="Initial Normal" type="Vector3"></add>
        <add name="Initial Color" type="Color4"></add>
        <add name="Size" type="float" default="1.0"></add>
        <add name="Emit Start Time" type="float"></add>
        <add name="Emit Stop Time" type="float"></add>
        <add name="Reset Particle System" type="byte"></add>
        <add name="Emit (Birth) Rate" type="float"></add>
        <add name="Lifetime" type="float"></add>
        <add name="Lifetime Variation" type="float"></add>
        <add name="Use (Emit) Birth Rate" type="byte"></add>
        <add name="Spawn On Death" type="byte"></add>
        <add name="Emitter Width" type="float"></add>
        <add name="Emitter Height" type="float"></add>
        <add name="Emitter Depth" type="float"></add>
        <add name="Emitter" type="Ptr" template="NiAVObject"></add>
        <add name="Num Spawn Generations" type="ushort"></add>
        <add name="Percentage Spawned" type="float"></add>
        <add name="Spawn Multiplier" type="ushort"></add>
        <add name="Spawned Speed Chaos" type="float"></add>
        <add name="Spawned Speed Direction Chaos" type="float"></add>
        <add name="Num Particles" type="ushort"></add>
        <add name="Num Valid" type="ushort"></add>
        <add name="Particles" type="Particle" arr1="Num Particles"></add>
        <add name="Emitter Controller" type="Ref" template="NiTimeController"></add>
        <add name="Particle Extra" type="Ref" template="NiParticleModifier"></add>
        <add name="Particle Colliders" type="Ref" template="NiParticleCollider"></add>
        <add name="Trailer" type="byte"></add>
    </niobject>  
NiPlanarCollider в читабильном и оптимизированном виде.
Заменить оригинальный блок.
    <niobject name="NiPlanarCollider" abstract="0" inherit="NiParticleModifier">
        Unknown.
        <add name="Unknown Short" type="ushort" ver1="10.0.1.0">Usually 0?</add>
        <add name="Unknown Float 1" type="float">Unknown.</add>
        <add name="Unknown Float 2" type="float">Unknown.</add>
        <add name="Unknown Short 2" type="ushort" ver1="4.2.2.0" ver2="4.2.2.0">Unknown.</add>
        <add name="Unknown Float 3" type="float">Unknown.</add>
        <add name="Unknown Float 4" type="float">Unknown.</add>
        <add name="Unknown Float 5" type="float">Unknown.</add>
        <add name="Unknown Float 6" type="float">Unknown.</add>
        <add name="Unknown Float 7" type="float">Unknown.</add>
        <add name="Unknown Float 8" type="float">Unknown.</add>
        <add name="Unknown Float 9" type="float">Unknown.</add>
        <add name="Unknown Float 10" type="float">Unknown.</add>
        <add name="Unknown Float 11" type="float">Unknown.</add>
        <add name="Unknown Float 12" type="float">Unknown.</add>
        <add name="Unknown Float 13" type="float">Unknown.</add>
        <add name="Unknown Float 14" type="float">Unknown.</add>
        <add name="Unknown Float 15" type="float">Unknown.</add>
        <add name="Unknown Float 16" type="float">Unknown.</add>
    </niobject>
<=
    <niobject name="NiParticleModifier" abstract="0" inherit="NiObject">
         <add name="Next Modifier" type="Ref" template="NiParticleModifier">Next particle modifier.</add>
        <add name="Controller" type="Ptr" template="NiParticleSystemController" ver1="4.0.0.2">Points to the particle system controller parent.</add>
    </niobject>
 
    <niobject name="NiParticleCollider" abstract="1" inherit="NiParticleModifier">
        A particle system modifier.
        <add name="Bounce" type="float">strength of reflection for particles</add>
     </niobject>
 
  
    <niobject name="NiPlanarCollider" abstract="0" inherit="NiParticleCollider">
        Particle Collider.
        <add name="Height" type="float">Unknown.</add>
        <add name="Width" type="float">Icon width</add>
        <add name="Position" type="Vector3">position.xyz</add>
        <add name="X rotation" type="Vector3">rotation1.</add>
        <add name="Y rotation" type="Vector3">rotation.2</add>
        <add name="Plane" type="NiPlane">Distance of reaction and Normal`s alignment.</add>
      </niobject>
NiSphericalCollider в читабильном и оптимизированном виде
*удалить старый раздел!
    <niobject name="NiSphericalCollider" abstract="0" inherit="NiParticleModifier">
        Unknown.
        <add name="Unknown Float 1" type="float">Unknown.</add>
        <add name="Unknown Short 1" type="ushort">Unknown.</add>
        <add name="Unknown Float 2" type="float">Unknown.</add>
        <add name="Unknown Short 2" type="ushort" ver2="4.2.0.2">Unknown.</add>
        <add name="Unknown Float 3" type="float" ver1="4.2.1.0">Unknown.</add>
        <add name="Unknown Float 4" type="float">Unknown.</add>
        <add name="Unknown Float 5" type="float">Unknown.</add>
    </niobject>
<=
    <niobject name="NiSphericalCollider" abstract="0" inherit="NiParticleCollider">
        Spherical Collider.
        <add name="Radius" type="float" />
        <add name="Position" type="Vector3" />
    </niobject>
 
 
Либо использовать такой код.
 
 
    <niobject name="NiParticleCollider" inherit="NiParticleModifier">
        <add name="Bounce" type="float"></add>
    </niobject>
 
    <niobject name="NiPlanarCollider" inherit="NiParticleCollider">
        <add name="Height" type="float"></add>
        <add name="Width" type="float"></add>
        <add name="Position" type="Vector3"></add>
        <add name="X Axis" type="Vector3"></add>
        <add name="Y Axis" type="Vector3"></add>
        <add name="Plane" type="NiPlane"></add>
    </niobject>
 
    <niobject name="NiSphericalCollider" inherit="NiParticleCollider">
        <add name="Radius" type="float"></add>
        <add name="Position" type="Vector3"></add>
    </niobject>
 
NiTriShapeDynamicData Добавить после блока  <niobject name="NiTriShapeData" abstract="0"
 
<=
    <niobject name="NiTriShapeDynamicData" abstract="0" inherit="NiTriShapeData">
        Holds mesh data using a list of singular triangles.
        <add name="Active Vertices" type="ushort">Num Active Vertices.</add>
        <add name="Active Triangles" type="ushort">Num Active Triangles.</add>
    </niobject>
 
Добавить новый раздел в конец файла.
 
 
    <niobject name="NiCollisionSwitch" abstract="0" inherit="NiNode">
    </niobject>
Добавить новый раздел в конец файла.
 
 
    <niobject name="NiAccumulator" abstract="1" inherit="NiObject" />
    <niobject name="NiClusterAccumulator" abstract="0" inherit="NiAccumulator" />
    <niobject name="NiAlphaAccumulator" abstract="0" inherit="NiAccumulator" />
 
    <niobject name="NiSortAdjustNode" inherit="NiNode">
        Sorting alpha.
        <add name="Sorting Mode" type="SortingMode" default="SORTING_INHERIT"></add>
        <add name="Accumulator" type="Ref" template="NiAccumulator"></add>
    </niobject>
 
Экспериментальный раздел. От Greatness7(С)
Добавить новый раздел в конец файла.
BSMirroredNode, TES3ObjectExtraData BrickNiExtraData NiBSAnimationManager NiKeyframeManager.
Эти объекты хотя и не подразумеваются для добавление в ниф файлы, но записи о них могут быть полезны.
Особенно в целях дебагинга.
И если проводился захват дампа памяти в  ниф файл.
 
Если выставить значение abstract="1", модели содержащие эти свойства на смогут быть открыты!
Добавлять записи об этих разделах имеет смысл только в каких-то тестовых целях.
 
 
    <niobject name="NiKeyframeManager" abstract="0" inherit="NiTimeController">
        <add name="Num Sequences" type="uint"></add>
        <add name="Sequences" type="NiSequenceMW" arr1="Num Sequences"></add>
    </niobject>
 
    <niobject name="NiBSAnimationManager" abstract="0" inherit="NiNode">
     For NiBsANimationNodes (only) seems to be.
    </niobject>
 
    <niobject name="BSMirroredNode" abstract="0" inherit="NiNode">
    </niobject>
 
    <niobject name="BrickNiExtraData" abstract="0" inherit="NiExtraData">
        <add name="String" type="string">.</add>
    </niobject>
 
    <niobject name="TES3ObjectExtraData" abstract="0" inherit="NiExtraData">
       <add name="String" type="string">.</add>
    </niobject>
 
еще один экспериментальный твик NiRendererSpecificProperty
Добавить новый раздел в конец файла.
 
 
    <niobject name="NiRendererSpecificProperty" abstract="0" inherit="NiProperty">
        <add name="Flags" type="Flags"></add>
    </niobject>
Добавить новый раздел в конец файла.
 
 
    <niobject name="NiFltAnimationNode" abstract="0" inherit="NiSwitchNode">
        <add name="Period" type="float">Delay time.</add>
    </niobject>
Добавить новый раздел в конец файла.
 
 
    <compound name="NiPlane2" size="16">
        A plane for niBspNode.
        <add name="AlignmentXYZ" type="Vector3">The plane normal`s alignment.</add>
        <add name="Area Size" type="float">The size of plane.</add>
    </compound>
 
    <niobject name="NiBSPNode" abstract="0" inherit="NiNode">
        <add name="Model Plane" type="NiPlane2"></add>
    </niobject>
 
Добавить новый раздел в конец файла.
 
 
    <niobject name="NiScreenPolygon" abstract="0" inherit="NiObject">
        <add name="Num Vertices" type="ushort"></add>
        <add name="Vertices" type="Vector3" arr1="Num Vertices"></add>
        <add name="Has Texture Coords" type="bool"></add>
        <add name="Texture Coords" type="TexCoord" arr1="Num Vertices" cond="Has Texture Coords"></add>
        <add name="Has Vertex Colors" type="bool"></add>
        <add name="Vertex Colors" type="Color4" arr1="Num Vertices" cond="Has Vertex Colors"></add>
        <add name="Num Property States" type="uint"></add>
        <add name="PropertyStates" type="int" arr1="Num Property States"></add>
    </niobject>
 
Заменить оригинальный раздел!
 
 
    <niobject name="NiLinesData" inherit="NiGeometryData">
        Wireframe geometry data.
     <add name="vertexConnectivityFlags" type="byte" arr1="Num Vertices">Is vertex connected to next vertex.</add>
    </niobject>
 
Заменить оригинальный раздел!
 
 
       <niobject name="NiCamera" inherit="NiAVObject">
        <add name="Frustum Left" type="float"></add>
        <add name="Frustum Right" type="float"></add>
        <add name="Frustum Top" type="float"></add>
        <add name="Frustum Bottom" type="float"></add>
        <add name="Frustum Near" type="float"></add>
        <add name="Frustum Far" type="float"></add>
        <add name="Viewport Left" type="float"></add>
        <add name="Viewport Right" type="float"></add>
        <add name="Viewport Top" type="float"></add>
        <add name="Viewport Bottom" type="float"></add>
        <add name="LOD Adjust" type="float"></add>
        <add name="Scene" type="Ref" template="NiNode"></add>
        <add name="Num Screen Polygons" type="uint"></add>
        <add name="Screen Polygons" type="Ref" template="NiScreenPolygon" arr1="Num Screen Polygons"></add>
    </niobject>
NiPlane
Добавить новый раздел в конец файла.
Это не новый объект, а лишь правильное название для настроек.
Используется в планарном коллайлдере.
 
 
    <compound name="NiPlane" size="16">
        A plane.
        <add name="Normal" type="Vector3">The plane normal`s alignment.</add>
        <add name="Distance" type="float">The distance of particles reaction.</add>
    </compound>
 
Добавлять в конец файла.
 
 
    <niobject name="NiBltSource" inherit="NiObject">
        <add name="Use External" type="byte" default="1"></add>
        <add name="File Name" type="FilePath" cond="Use External"></add>
        <add name="Has Pixel Data" type="byte" default="1" cond="Use External == 0"></add>
        <add name="Pixel Data" type="NiPixelFormat" cond="Has Pixel Data"></add>
    </niobject>
 
также добавлять в конец файла в тестовых целях.
 
 
   <compound name="NameControllerPair">
        <add name="Name" type="string"></add>
        <add name="Controller" type="Ptr" template="NiKeyframeController"></add>
    </compound>
 
    <compound name="NiSequenceMW">
        <add name="Sequence Name" type="string"></add>
        <add name="Use External" type="byte"></add>
        <add name="Keyframe File Name" type="string" cond="Use External != 0"></add>
        <add name="unknown int" type="int" cond="Use External == 0"></add>
        <add name="unknown object" type="Ptr" template="NiObject" cond="Use External == 0"></add>
        <add name="Num Name Controller Pairs" type="uint"></add>
        <add name="Name Controller Pairs" type="NameControllerPair" arr1="Num Name Controller Pairs"></add>
    </compound>
 
    <niobject name="NiKeyframeManager" abstract="0" inherit="NiTimeController">
        <add name="Num Sequences" type="uint"></add>
        <add name="Sequences" type="NiSequenceMW" arr1="Num Sequences"></add>
    </niobject>
 
Использовать только в тестовых целях и только для МВ!
    <niobject name="NiSkinPartition" abstract="0" inherit="NiObject">
        Skinning data, optimized for hardware skinning. The mesh is partitioned in submeshes such that each vertex of a submesh is influenced only by a limited and fixed number of bones.
        <add name="Num Skin Partition Blocks" type="uint">Unknown.</add>
        <add name="Skin Partition Blocks" type="SkinPartition" arr1="Num Skin Partition Blocks">Skin partition objects.</add>
    </niobject>
 
    <niobject name="NiSkinPartition" abstract="0" inherit="NiObject">
        <add name="Num Partitions" type="uint"></add>
        <add name="Partitions" type="Partition" arr1="Num Partitions"></add>
    </niobject>