×
Menu

NiSkinPartition примечания

 
Примечание.
В теории, добавление настроенной SkinPartition могло бы помочь решить проблему с щелями в оболочках.
Заранее разделив поверхность на квадраты и распределив влияние костей на их вертексы.
Если конечно, щели возникают по этой причине, а не по причине слишком низкого влияния костей на сами вертексы.
 
Примечание.
Проведенные тесты показали, что игра не перезаписывает (по крайней мере в известных случаях) эти настройки.
Т.е. NiSkinPartition не перезаписывается игрой, если уже имеется в ниф файлах.
К сожалению, более детальные тесты требуют наличия модулей экспорта умеющих создавать этот элемент в ниф файлах.
Захват же и небольшой твикинг настроенных самой игрой моделей, может быть использован только в качестве доказательства этой теории, но никак средство для исправления этой проблемы в целом.
Также, вопрос целесообразности остается открытый.
Если сама игра все делает ровно и быстро, то нет смысла это "исправлять".
Хотя, как знать, возможно это мнение и изменится со временем.
 
Примечание.
NiSkinPartition в составе объект NiSkinInstance можно захватить прямо из сеанса игры используя МВСЕ 2.1 на ЛУА, через дамп бинарных данных(С) Этот метод оказался весьма прогрессивным!
В отличие от попыток создать NiSkinPartition посредством Нифскопа, или 4.2 модуля экспорта к МАХу.
Т.к. захватывает правильно настроенную модель.
В результате получилось (06 2020) провести следующий тест:
- Захватив НПС в мантии, перенести эту мантию в отдельный ниф файл и загрузить полученный файл обратно в игру.
Мантия смогла нормально загрузиться и быть одетой на игрока!
Также, были проведены некоторые изменения в настройках SkinPartition, которые, при повторном захвате сохранили эти значения!
Т.е. игра не создает  NiSkinPartition заново, если находит в файлах.
 
Отчего, сам вопрос о возможности загрузки этого элемента из локальных файлов, можно считать закрытым.
Элемент может находится здесь и файлы можно использовать в игре без вылетов и иных ошибок.
Раньше, это считалось не возможным в принципе. Все модели стабильно создавали КТД.
 
Примечание.
Ранее проводились неоднократные опыты по добавлению этого элемента в ниф файл 4.0 версии.
Все показывали отсутствие такой возможности.
Как теперь выясняется, дело было в неправильных настройках, а не в отсутствии самой возможности.
 
Уважаемый Greatness7 писал:
Skin partition morrowind can create them
so they are not useful to us. not worth fixing nifskope
it automatically creates a NiSkinPartition ingame after loading, no need for us to manually build them
 
Уважаемый Хрчамд писал:
It's required for the game to work on DX8, max 4 bones / draw call.
The skin loader has to split trishapes with > 4 bones into parts to render.
The game creates the NiSkinPartition for you on loading.
 
Уважаемый Greatness7 17.02.2020 писал:
in other news I found out NiSkinPartition does work
Melchior Dahrk
What does it do?
Greatness7
using that mwse :saveBinary() function to dump meshes from in-engine has been pretty enlightening
apparently the engine creates NiSkinPartition automatically at run time when it loads a skinned object
R-Zero
for what purpose?
Greatness7
look up Hardware-Accelerated Skinning section if curious
it is just for optimization
and since it creates them automatically i guess we don't need to worry about it
just interesting that the engine can actually load it without error/crash
so in theory you can manually create your own partitioning layout for possible better performance than the automatic layout the engine creates could manage
i think it is common that modders do this in Oblivion/Skyrim community
this skyrim nif optimizer mentions making skinpartitions
https://www.nexusmods.com/skyrimspecialedition/mods/4089
 
Примечание.
Вот так это выглядит по нифскопу.
Это скриншот с модели захваченной из игры.
Хорошо видны значения Num Bones = 4 и Num Bones Per Vertex = 4.
Num Strip Lengths - стрипсы не используются, по видимости из-за ранней версии движка.
 
Эту модель можно найти в:
@_Notes_for_Modmaking\Additional_Files\Tours\@How_To\NiSkinInstance\NiSkinInstance&NiSkinPartition.nif

Из справки Нифскопа.
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.
 
 Выдержка из оригинальной справки. (NDL Gamebryo 1.1)
 
NiSkinPartition is a Gamebryo internal-only class used to support hardware skinning.
It has no supported constructors or member functions.
 
The NiDX8-9Renderer supports hardware-based skinning on hardware T&L devices that can support at least 4 bones (matrices) per object. Gamebryo will enable hardware skinning if the hardware is capable and if the skinned object has been prepared for hardware skinning by being partitioned. Skinned objects are partitioned by the artist tools when they are exported with support for hardware skinning enabled. On hardware that cannot support the required minimum number of bones, or if the skinned object does not contain partitions, optimized Gamebryo software skinning code will be used. Hardware skinning not only avoids the need to deform the skin on the host processor, but also the need to repack video-memory vertex buffers each frame, further enhancing performance. It is also possible to use vertex shaders on cards that support them to deform skinned objects using as many as 20 or more bones per object.