×
Меню
Индекс

Nif файл общее представление

 
Здесь идет речь о формате файлов, как таковых!
 
Ниф (.nif) — иерархичная система модульной конструкции.
Что позволяет менять местами и заменять любые блоки оного.
 
Основной формат ниф файлов Морровинда 4.0.0.2.
Также это указывает на использование движка Netimmerse 4ой версии.
 
В чистом МВ, принимаются Ниф файлы следующих версий:
от 3.3.1 до 4.0.0.2.
3.3 too old, 3.3.1.0 works.
 
Примечание.
Для ОпМВ, возможно, кол-во поддерживаемых версий будет много больше.
В т.ч. 20х

Ноды и шейпы, основные строительные элементы ниф файла.
(шейп)
— базовое основание ниф файла, своего рода кирпичи из которых строится картинка на мониторе.
Шейп - видимая в игре оболочка.
 
*Это те самые сетчатые оболочки создаваемые в 3д редакторах.
Шейп — физическое материальное понятие.
 
NiTriShape сетчатая оболочка.
 
(нода, ниНода)
— узел, группа, контейнер, как больше нравится.
Ноды, не отображаются  в игре, но воздействуют на шейпы контроллерами и эффектами.
Группа NiTriShape образует NiNode.
Объект не имеющий "физической" оболочки, становится Нодой.
Например Bones 3д МАХ являются скорее, математическими моделями, нежели "физическими" объектами.
 
*Нода имеет свои настройки недоступные Шейпам.
*Нода это Математический Призрак, который можно пощупать!
 
— образуется в МАХе из моделей содержащих более одного материала на своей поверхности.
Т.е. Раскрашенная в разные материалы модель, при экспорте, разбивается на шейпы.
Подобное «сообщество» и формирует «простейшую» Ноду.
 
*Группирование нескольких объектов в Максе, также создаст ноду.
*Группирование групп - создаст ноду верхнего порядка.
*В одной ноде может быть произвольное кол-во как нод, так и шейпов.
 
(NiNode) по отображению Нифскопа, это те самые белые (желтые если выделено) Точки.
Линии между ними - отображение связей, но не сами Ноды!
 
Корневая нода
Корень файла
(нода номер 0)
- корневая нода определяется в заголовке ниф файла в параметре ROOT.
- может быть любого типа, кроме LODnode.
- если niBsAnimationNode влияет на все содержимое файла.
- аналогично для niBsParticleNode, FLT и прочих именных нод.
 
Это то, что придает шейпам их уникальные характеристики.
Без свойств, объекты в игре были бы просто безцветными поверхностями.
 
Свойства - необходимый и важный элемент ниф файла придающий оному уникальность (С).
 
Дополнительные текстовые команды позволяющие сообщить движку некоторые дополнительные данные по работе с объектами.
 
То что придает моделям "жизнь".
Сообщают шейпам и их свойствам различные динамические изменения.
Без контроллеров, объекты в игре были бы статичным "пнями".
 
Контроллеры - необходимый и важный элемент ниф файла придающий оному уникальность (С).
 
Сообщают шейпам дополнительные эффекты, да!
 
В отличие от контроллеров, сами по себе статичны, но могут получать анимации от действия контроллеров, или движка игры.
Например:
Самый известный эффект - подвижная текстура зачарования накладываемая на модель движком игры используя слот текстурного эффекта блеска.
Который, иногда, можно встретить в сторонних моделях добавляемых в игру плагинами.
Оставаясь статичной, текстура "блеска", изменяет свое положение относительно камеры в зависимости от ее положения в мире игры.
 
Другой эффект - освещение их поверхностей встроенными источниками света.
Это явление использует метод повертексного освещения модели, который может использоваться в локальных файлах.
 
Эффекты - интересный и полезный элемент ниф файлов, придающий им дополнительную живость (С)
 
niHeader
При открытии любого Ниф файла*, в окне Block Detail можно видеть, кроме общего списка нод и шейпов, еще два "информационных" параметра: niHeader и NiFooter.
 
Header это простой заголовок Ниф файла.
Содержит системную информацию о версии Ниф файла и его устройстве.
Не поддается редактированию в Нифскопе.
*Kf, xNif, Nif = все они содержат Хидер и Футер.
 
NiFooter
раздел в котором указывается Корневая нода ниф файла.
Num Roots - кол-во оных.
Roots - номера оных.
Номера, порядок в списке, кол-во и т.п. можно менять... но нет смысла.
При сохранении файла нифскоп вернет все на исходные значения.
И хотя РутовыхНод может быть несколько, рендериться в игре будет только с номером НУЛЬ (0).
*Если вставить некий объект в сцену за приделами нулевой ноды, он пропишется как второй рут в Футтер, но работать  будет только первый в списке.
 
Именно такая работа Футтера, приводит к появлению мусорных свойств.
 
Может быть, с использованием Pyffi возможно вносить изменения и сюда.
Хотя практическая польза от этого не известна.
 
Footer и Header.
После сохранения ниф файла, кол-во рутовых сократиться до одной.

Взято с Дискорда(С)

To paraphrase a statement made by one of the designers for Java3D regarding a scene graph: It's just a data structure. As with any data structure in computer science, it is important to know how to use that structure, but it is equally as important to know what the data structure was designed for and when not to use it, at least in the form that it was built.
 
When I worked at Numerical Design, Ltd. (now part of Emergent Game Technologies) developing NetImmerse (now Gamebryo) in the late 1990s, one of the first games to ship using that engine was Prince of Persia 3D from Red Orb Entertainment. Given the limited power of graphics hardware at that time (the game ran on 3dfx Voodoo cards), the Red Orb developers and artists did an excellent job getting this game to run with what they had. The process was nontrivial because they licensed the binaries for a 3D character training and animation tool. This tool insisted on managing all the transformations in the characters, but so did NetImmerse's scene graph management system. Red Orb did manage to get access to the animation tool source code and was able to remove the redundancy, and the game ran at real-time rates. What surprised many of us, though, was that the game was actually shipped using NetImmerse scene graphs, stored as files with the extension.nif.
 
I also recall responding to a post to the Usenet newsgroup, comp.graphics .algorithms, where the original poster wanted to know what the NIF file format was. This was for the popular game Morrowind (one of the Elder Scrolls games) from Bethesda Softworks, LLC. Apparently, NIF files were also shipped with this game. I find this surprising as well.
 
When designing the scene graph data structure in NetImmerse, the main goal was to mimic the organization provided by the data structures in the 3D Studio Max modeling package. Realizing that game developers would build their data sets and characters in such a package, we would have to export that data to a similar format to preserve things such as spatial locality. More important at the time, we had to preserve the animation information in articulated characters. The NIF files were not really a new “file format”; rather,they represented the current state of the scene graph data structures (nodes, geometric primitives, lights, cameras, etc.). We exported from 3D Studio Max to NIF files and then loaded the NIF files for development and testing. It was not our intent that games would actually ship with these. The data structures were intended for development, not for deployment. (С) - рассказ разработчика Ниф формата.

I knew it.
I always knew it.
It is from 3D Game Engine Design: A Practical Approach to Real-Time Computer Graphics
It is one for the history books.
At least modding kinda justifies the development mode.
 
Проще говоря, Ниф файл - это архив сцены МАХ изначально не заточенный для работу с играми.
Пруф, на книгу, можно поискать на ВэбАрхивах.