NIF converter V1.07
-------------------

par Galadrielle le 29/02/2008

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 donnes de collision pour qu'elles soient compatibles avec
le moteur physique Havok. Il est aussi possible de convertir certains vtements, une correction
tant applique pour que le vtement colle parfaitement au squelette Oblivion.

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

* NIF_conv.exe: le programme de conversion
* Morroblivion.ini: fichier texte qui contient les diffrents chemins d'accs
  pour les fichiers NIF: 
    - Morrowind: chemin d'accs au rpertoire du jeu Morrowind
    - Oblivion: chemin d'accs au rpertoire du jeu Oblivion
    - Master 0,1...: non utilis par NIF Converter
    - Archive 0,1...: liste des fichiers BSA pouvant contenir le fichier NIF et/ou les textures
    - Mod 0,1...: non utilis par NIF Converter
* bhktemp.nif: template utilis pour la gnration des donnes de collision.
* template_n.dds: template utilis pour les normal maps associes aux textures.

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

Il y a plusieurs manires:

* On peut glisser/dposer (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
  converti sera crit dans le mme rpertoire avec le suffixe "_ob", les textures seront
  recherches dans le rpertoire "Textures" de Morrowind puis dans les fichiers BSA et copies
  dans le rpertoire "Textures" d'Oblivion.
* 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 rpertoire courant, puis dans "meshes\monMod"
  dans le rpertoire "Data Files" de Morrowind puis dans les fichiers BSA dfinis dans le fichier
  "Morroblivion.ini". 
  On peut aussi ajouter des paramtres:
  "-m material": matire Havok de l'objet (sous forme numrique, 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 associe aux portes, une animation de porte
               sera cre 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 donnes de collision existantes et  les regnrer
         partir du mesh de l'objet (utile pour certains objets complexes avec des modles de
        collision trop simplifis)
  "-c": force le programme  ne pas gnrer de donnes de collision.
  "-b": si l'objet est une arme elle sera range dans le dos du joueur ou des PNJ (back weapon).
  "-bp": pour convertir les vtements et armures, identifie le mesh correspondant sur le squelette,
         suivi du fichier NIF  "skinner". il peut y avoir plusieurs paramtres "-bp", les mesh
         seront fusionns en 1 seul fichier NIF.
			0 = Head
			1 = Hair
			2 = Neck
			3 = Cuirass
			4 = Groin
			5 = Skirt
			6 = Right Hand
			7 = Left Hand
			8 = Right Wrist
			9 = Left Wrist
			10 = Shield
			11 = Right Forearm
			12 = Left Forearm
			13 = Right Upper Arm
			14 = Left Upper Arm
			15 = Right Foot
			16 = Left Foot
			17 = Right Ankle
			18 = Left Ankle
			19 = Right Knee
			20 = Left Knee
			21 = Right Upper Leg
			22 = Left Upper Leg
			23 = Right Pauldron
			24 = Left Pauldron
			25 = Weapon
			26 = Tail
  "-cl": Dans le cas de la conversion d'un vtement o d'une armure, sert  indiquer la partie
         du corps correspondante dans Oblivion:
         - 0: tte
         - 1: cheveux
         - 2: haut du corps
         - 3: bas du corps
         - 5: pieds

Par dfaut les options sont celles des statics avec matriau bois.
Pour plus d'information sur les diffrentes valeurs je vous conseille d'essayer le programme NifSkope
et de lire la documentation associe, notamment celle sur le format des fichiers NIF.
         
Quelques exemples:

* conversion d'une arme en mtal:
NIF_Conv dague.nif -m 5 -l 5 -s 4 -q 3

* conversion d'un static avec mesh de collision complet (ignore celui de Morro, souvent trop simple):
NIF_Conv mon_static.nif -f

* conversion du modle "ex_cave_stoneyb00.nif" situ dans le rpertoire "x\" du fichier Morrowind.bsa:
NIF_Conv x\ex_cave_stoneyb00.nif
A condition d'avoir inscrit le fichier Morrowind.bsa dans Morroblivion.ini, le fichier est lu dans le BSA
et converti en ex_cave_stoneyb00_ob.nif dans le rpertoire de NIF_Conv.exe.

* conversion de la robe belle_robe_01.nif en nouvelleRobe.nif:
NIF_Conv belle_robe_01.nif -cl -d nouvelleRobe.nif

En mettant -cl, les autres options ne sont pas ncessaires et n'ont pas de sens car il n'y a pas de
collision sur un vtement.
  
Toutes les textures sont copies dans le rpertoire "Data\Textures\morro" dans Oblivion. Seules
les textures au format DDS sont copies, Oblivion n'acceptant pas les fichiers BMP ou TGA.

Problmes connus:
----------------

La gnration des donnes Havok reste imparfaite, de nombreux paramtres gardent une valeur par dfaut
(notamment la masse), ce qui fait que le comportement de l'objet soumis  la gravit dans le jeu peut
ne pas tre parfait.

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

Convertir les fichiers NIF simples sans animations, la plupart des objets statiques peuvent
donc tre convertis. Les donnes 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
utilises. Si le NiNode global contient un NiStringExtraData contenant "NCO" ou "NCC", le fichier
converti contiendra des donnes de collision de type "NON COLLIDABLE".
Les vtements peuvent tre converti en ajoutant le paramtre "-cl"  condition qu'ils contiennent
un NiSkinInstance pour chaque NiTriShape.
Les textures utilises sont simplement copies si ce sont des fichier DDS. Les textures sont
d'abord recherches dans le rpertoire "Data Files\textures" puis dans le fichier BSA. Les noms
de fichiers sont convertis au format Oblivion (que des caractres 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 particules etc... Les fichiers
anims, les cratures... ne sont pas encore convertis


Dernire remarque:
-----------------

Vous utilisez ce programmes  vos risques et prils (mme s'ils sont trs limits ;o) ), je ne suis pas
responsable des dgats occasionns par son utilisation.
Cependant en cas de problme, n'hsitez pas  m'crire:

galadrielle.wiwiland@free.fr

Ce programme a t essay sur la plupart des fichiers NIF de Morrowind, sans rencontrer de problmes majeurs
 part les limitations cites plus haut.

Have Fun!


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

V1.07
* Amlioration de la conversion des vtements, ajout de la conversion des armures.

V1.06
* Ajout de la conversion des vtements. Seul les vtements avec NiSkinInstance seront convertis comme ceux de BetterClothes
par exemple, la plupart des vtements de Morrowind ne peuvent tre convertis ( l'exception des robes).

V1.05
* Si le fichier contient la chaine de caractres "NCO" il n'y aura pas de collision (comme pour les plantes ou les
tapisseries par exemple).
* Correction de bugs au niveau des donnes de collision.

V1.04
* Correction des donnes Havok, le centre d'inertie est positionn au centre de l'objet.
* ajout du paramtre BackWeapon.

V1.03
* Correction bug qui se produit lorsqu'un NIF ne possde pas de NiNode racine, il y a une corruption de donnes,
  la collision ne marche pas (ex: les caisses de Morrowind).

V1.02
* on peut ajouter des paramtres et rgler ainsi certaines choses au niveau de Havok comme la matire,
  le layer Oblivion... Il est ainsi possible de convertir correctement les armes et objets divers.
* Pour les objets qui peuvent tre manipuls (portes, armes... dpend du layer oblivion) et sur lesquels
  la physique entre en jeu, les donnes de collision sont gnres sous forme de boites (bhkBoxShape).
* ajout d'une animation pour les portes (option -l 2)

V1.01
* ajout des donnes 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 gnration de la table des noms d'objets (entte)

V1.00
* premire version
