×
Меню
Индекс

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>