Collision detection nif.xml edits
Версия для нифскопа 1.1.3
Для постоянной работы с файлами МВ, эти правки применять НЕ рекомендуется!
Т.к. все одно, в МВ, толком, ничего другого кроме "box" не работает.
А также, после внесения этих правок, меню "edit bounds" нифскопа - станет не активным.
Возможно для этого нужны другие, более глубокие, правки (нифскопа). (?)
Но если хотите поближе познакомиться с этим вопросом, то вот, ниже приведен код для Ниф.хмл файла.
Это стабильно работает для ниф файлов 4.0 и 4.2 версий.
Нифскоп, открывает файлы полученные из МАХ, а
скеневиювер открывает после Нифскопа.
Примечание для 4.0 файлов:
- в МВ, нет режимы капсулы.
Т.е. нельзя выставлять этот режим прокси геометрии от слова совсем!
Модель сразу приведет к вылету редактора.
Примечание.
Нифскоп 2.0 имеет более точные данные по прокси геометрии, однако, для некоторых режимов, они не верны!
ХалфСпейс имеет другие настройки, которые отказывается принимать Скеневиювер и ТЕС КС.
Т.е. также, рекомендуется обновить ниф.хмл файл для Нифскопа 2.0!
Примечание.
Если надоест "играться" с типами геометрии и понадобиться вернуть возможность редактирования Bounding Box через меню.
То просто замените запись:
<add name="Bounding Box" type="BoundingTypes" cond="Has Bounding Box">The bounding box.</add>
на
<add name="Bounding Box" type="BoundingBox" cond="Has Bounding Box">The bounding box.</add>
Т.е. это уберет все прочие записи из меню выбора, но вернет исходный вид ББокса.
А если понадобится, снова "поиграть" возвращаем обратно "BoundingTypes" и не забываем жать Reload Nif + XML в меню Файл Нифскопа.
Заменить:
<compound name="BoundingBox">
Bounding box.
<add name="Unknown Int" type="uint" default="1">Это и есть метод. Бокс, Юнион, Сфера или что там еще.</add>
<add name="Translation" type="Vector3">Translation vector.</add>
<add name="Rotation" type="Matrix33">Rotation matrix.</add>
<add name="Radius" type="Vector3">Radius, per direction.</add>
</compound>
На вот это:
<compound name="BoundingBox">
Box Bounding Volume. Regular BBox.
<add name="Type" type="uint" default="1">1 is a BBox.</add>
<add name="Translation" type="Vector3">Translation vector.</add>
<add name="Rotation" type="Matrix33">Rotation matrix.</add>
<add name="Radius" type="Vector3">Radius, per direction.</add>
</compound>
<compound name="BoxBV">
Box Bounding Volume. It's a common Bbox.
<add name="Translation" type="Vector3">Translation vector.</add>
<add name="Rotation" type="Matrix33">Rotation matrix.</add>
<add name="Radius" type="Vector3">Radius, per direction.</add>
</compound>
<compound name="SphereBv">
A sphere. Work in MW!
<add name="Center" type="Vector3">The sphere's center.</add>
<add name="Radius" type="float">The sphere's radius.</add>
</compound>
<compound name="UnionBV">
Set from few collsions. Can Work in MW!
<add name="Num BV" type="uint" />
<add name="Bounding Volumes" type="BoundingBox" arr1="Num BV">Bounding Volume.</add>
</compound>
<compound name="LozengeBV">
<add name="Center" type="Vector3"></add>
<add name="Axis0" type="Vector3"></add>
<add name="Axis1" type="Vector3"></add>
<add name="High" type="float"></add>
<add name="Extent0" type="float" ver1="4.2.0.2"></add>
<add name="Extent0" type="float" ver1="4.2.0.2"></add>
</compound>
<compound name="CapsuleBV">
Capsule Bounding Volume
<add name="Center" type="Vector3"></add>
<add name="Axis" type="Vector3"></add>
<add name="Extent" type="float"></add>
<add name="Radius" type="float"></add>
</compound>
<compound name="HalfSpaceBV">
<add name="Plane" type="NiPlane"></add>
<add name="High" type="Vector3" ver1="4.2.0.2"></add>
</compound>
<compound name="BoundingVolume">
<add name="Collision Type" type="BoundVolumeType">Type of collision data.</add>
<add name="Sphere" type="SphereBv" cond="Collision Type == 0" />
<add name="Box" type="BoxBV" cond="Collision Type == 1" />
<add name="Capsule" type="CapsuleBV" cond="Collision Type == 2" />
<add name="Lozenge" type="LozengeBV" cond="Collision Type == 3" />
<add name="Union BV" type="UnionBV" cond="Collision Type == 4" />
<add name="HalfSpace BV" type="HalfSpaceBV" cond="Collision Type == 5" />
</compound>
<enum name="BoundVolumeType" storage="uint">
<option value="0xffffffff" name="BASE_BV">Default</option>
<option value="0" name="SPHERE_BV">Sphere</option>
<option value="1" name="Box_BV">Box</option>
<option value="2" name="Capsule_BV">Capsule</option>
<option value="3" name="Lozenge_BV">Lozenge</option>
<option value="4" name="Union_BV">Union</option>
<option value="5" name="HalfSpace_BV">Union</option>
</enum>
<compound name="BoundingTypes">
<add name="Collision Type" type="BoundVolumeType">Type of collision data.</add>
<add name="Sphere" type="SphereBv" cond="Collision Type == 0" />
<add name="Box" type="BoxBV" cond="Collision Type == 1" />
<add name="Capsule" type="CapsuleBV" cond="Collision Type == 2" />
<add name="Lozenge" type="LozengeBV" cond="Collision Type == 3" />
<add name="Union BV" type="UnionBV" cond="Collision Type == 4" />
<add name="HalfSpace BV" type="HalfSpaceBV" cond="Collision Type == 5" />
</compound>
Также потребуется заменить вот этот код:
<niobject name="NiAVObject" abstract="1" inherit="NiObjectNET">
Generic node object.
<add name="Flags" type="Flags" ver1="3.0">Some flags; commonly 0x000C or 0x000A.</add>
<!-- TODO use MTransform -->
<add name="Translation" type="Vector3">The translation vector.</add>
<add name="Rotation" type="Matrix33">The rotation part of the transformation matrix.</add>
<add name="Scale" type="float" default="1.0">Scaling part (only uniform scaling is supported).</add>
<add name="Velocity" type="Vector3" ver2="4.2.2.0">Unknown function. Always seems to be (0, 0, 0)</add>
<add name="Num Properties" type="uint">The number of property objects referenced.</add>
<add name="Properties" type="Ref" template="NiProperty" arr1="Num Properties">List of node properties.</add>
<add name="Has Bounding Box" type="bool">Do we have a bounding box?</add>
<add name="Bounding Box" type="BoundingTypes" cond="Has Bounding Box">BoundingBox or BoundingTypes</add>
</niobject>