NIF converter V1.1
-------------------

par Galadrielle le 23/08/2007

Bonjour, le but de ce petit programme est simplement de convertir des fichiers NIF
version 4.0.0.2 (Morrowind) vers la version 20.0.0.5 (Oblivion). Cela comprend
notamment la conversion des données de collision pour qu'elles soient compatibles avec
le moteur physique Havok.

Contenu de cette version:
------------------------

* NIF_conv.exe: le programme de conversion
* NIF_conv.ini: fichier texte qui contient les différents chemins d'accès
  pour les fichiers NIF: 
    - Morro_Path: chemin d'accès au répertoire "Data Files" de Morrowind
    - Morro_BSA: éventuellement le fichier BSA contenant le fichier NIF et/ou les textures
    - Obli_Path: chemin d'accès au répertoire "Data" d'Oblivion
    - Sub_Dir: sous répertoire dans lequel seront stockés les fichiers NIF et les textures
* bhktemp.nif: template utilisé pour la génération des données de collision.
* template_n.dds: template utilisé pour les normal maps associées aux textures.

Comment ça marche?
-----------------

Il y a plusieurs manières:

* On peut glisser/déposer (drag'n drop comme disent nos amis d'outre-manche) le fichier
  à convertir (ex: "maison.nif") sur le programme et laisser faire. Dans ce cas le fichier
  convertit sera écrit dans le même répertoire avec le suffixe "_ob".
* En ligne de commande: on peut ainsi donner un chemin relatif, par exemple 
  "monMod\maison.nif", dans ce cas le fichier sera recherché dans le répertoire courant, puis
  dans "meshes\monMod" dans le répertoire "Data Files" de Morrowind puis dans le fichier BSA
  inscrit dans NIF_conv.ini. 
  On peut aussi ajouter des paramètres:
  "-m material": matière Havok de l'objet (sous forme numérique, ex: "-m 0" pour la pierre)
  "-l layer": layer oblivion pour indiquer le type d'objet lors de la gestion de collision
              (ex: "-l 5" pour les armes, c'est ce qui donne la couleur du mesh de collision
               dans NifSkope). La valeur 2 est associée aux portes, une animation de porte
               sera créée dans le NIF afin de pouvoir ouvrir et fermer les portes.
  "-s motion system": Havok Motion System (ex: "-s 7" pour MO_SYS_KEYFRAMED)
  "-q motion quality": Havok Motion Quality (ex: "-q 1" pour MO_QUAL_FIXED)
  "-d nom_du_fichier_destination": nouveau nom et chemin pour le fichier converti
  "-f": force le programme à ignorer les données de collision existantes et à les regénérer
        à partir du mesh de l'objet (utile pour certains objets complexes avec des modèles de
        collision trop simplifiés)
  "-c": force le programme à ne pas générer d'objet de collision.
  
Toutes les textures sont copiées dans le répertoire "Data\Textures\Sub_Dir" dans Oblivion. Seules
les textures au format DDS sont copiées, Oblivion n'acceptant pas les fichiers BMP ou TGA.

Problèmes connus:
----------------

La génération des données Havok reste imparfaite, de nombreux paramètres garde une valeur par défaut
(notamment la masse), ce qui fait que le comportement de l'objet soumis à la gravité dans le jeu peut
être bizarre (objet qui rebondit partout, etc...)

Ce que ce programme sait faire:
------------------------------

Convertir les fichiers NIF simples sans animations, la plupart des objets statiques peuvent
donc être convertis. Les données de collision sont converties au format Havok, si le fichier NIF
contient un objet RootCollisionNode il sera converti, sinon ce sont les objets shape qui seront
utilisées. Si le NiNode global contient un NiStringExtraData contenant "NCO" ou "NCC", le fichier
converti contiendra des données de collision de type "NON COLLIDABLE".
Les textures utilisées sont simplement copiées si ce sont des fichier DDS. Les textures sont
d'abord recherchées dans le répertoire "Data Files\textures" puis dans le fichier BSA. Les noms
de fichiers sont convertis au format Oblivion (que des caractères et des chiffres).
Un fichier DDS contenant la normal map (suffixe "_n") est créé pour chaque texture.

Ce que ce programme ne sait pas faire:
-------------------------------------

Convertir les choses complexes comme les animations, les articulations (bones), etc... Les fichiers
animés, les vêtements, les armures, les créatures... ne peuvent être convertis


Dernière remarque:
-----------------

Vous utilisez ce programmes à vos risques et périls (même s'ils sont très limités ;o) ), je ne suis pas
responsable des dégats occasionnés ou des problèmes rencontrés pendant son utilisation.
Cependant en cas de problème, n'hésitez pas à m'écrire:

galadrielle.wiwiland@free.fr

Ce programme a été essayé sur la plupart des fichiers NIF de Morrowind, sans rencontrer de problèmes majeurs
à part les limitations citées plus haut.

Have Fun!


Historique des versions
-----------------------

V1.2
* on peut ajouter des paramètres et régler ainsi certaines choses au niveau de Havok comme la matière,
  le layer Oblivion... Il est ainsi possible de convertir correctement les armes et objets divers.
* Pour les objets qui peuvent être manipulés (portes, armes... dépend du layer oblivion) et sur lesquels
  la physique entre en jeu, les données de collision sont générées sous forme de boites (bhkBoxShape).
* ajout d'une animation pour les portes (option -l 2)

V1.1
* ajout des données de collision de type "nonCollidable", pour les objets sans collision
* ajout d'un NiNode pour les fichiers qui n'en avaient pas
* correction d'un bug dans la génération de la table des noms d'objets (entête)

V1.0
* première version
