Optimisation des nifs... acc

Vous trouverez ici les tutoriels sur les outils et techniques de modding généraux, qui peuvent servir à modder tous les jeux.
Avatar du membre
Mohawk
Confrère
Messages : 290

Optimisation des nifs... acc

Message par Mohawk »

Optimisation des nifs...
... accélérez vraiment Oblivion.

A l'origine je souhaitai simplement optimiser un Mod, afin de gagner quelques FPS, au cours de mes pérégrinations j'ai trouvé mieux. Non, mais VRAIMENT nettement mieux. Une opération simple, certes un peu longue, mais pouvant être faîtes au fur et à mesure ... qui a pour but d'accélérer OBLIVION.

:shock: Après une expérimentation en profondeur, après avoir "optimisé" les nifs d'Anvil et de Bravil, le résultat en extérieur est "fabuleux", le gain est approximativement compris entre +10 et +15 FPS, sur mon PC. :shock:

Oui, et ceci quelque soit votre PC, quelque soit votre config, le but de l'opération consiste tout simplement à finir le boulot d'optimisation qui n'a jamais été fait par Bethesda. J'ai donc réorganisé ce sujet, et je commence ici par la traduction du fichier ReadMe d'un petit programme fantastique :

- Installez d'abord Python (si vous ne l'avez pas déjà)
- Installez ensuite le PyFFI du moment (si vous ne l'avez pas également)
*
Si vous ne comprenez déjà plus rien ici, ou que vous ne voyez même pas de quoi je parle dans les deux lignes qui précèdent,
CESSEZ DE LIRE CE SUJET.
Par pitié pour votre PC, laissez le tranquille et retournez jouer sur votre Xboite. Je ne fournirai aucune aide, aucune assistance, aucun renseignement, bref nada, sur tout ce qui concerne le B.A. BA de Windows, ni de l'installation des logiciels. Dans le cas contraire poursuivez
:
___________________________________________________________________________

Nom: Oblivion PyFFI Automator
Version: 0.1
Date: 10/19/2008
Catégorie: Utilitaire
Programmes Requis : PyFFI ( Télécharger PyFFI), Python 2.5 (Télécharger Python )
Auteur(s): Zhelkus
Source: http://www.tesnexus.com/downloads/file.php?id=20483

Description
===========
PyFFI pour Oblivion est un utilitaire indispensable. Le fait que vous puissiez l'utiliser sur pratiquement n'importe quel NIF, sans aucune perte de qualité est une motivation réelle. Ila été conçu afin que d'autres moddeurs l'utilisent dans le but de traiter leurs modèles pour qu'ils soient également optimisé. Cependant, je ne vois pas ceci très souvent ni très facilement. Principalement parce que ce type d'optimisation est généralement une grande consommatrice de temps. Je ne doute certainement pas des capacités des modeleurs. Je ne sais même pas comment utiliser Blender, et toute personne sachant modeler sait également comment écrite un programme.

De ce fait voici ce que j'ai fait : un simple script qui automatise le processus d'optimisation. Dans le détail voici la procédure :

1- Il vous demandera -sous la forme d'une requête polie- d'effectuer une sauvegarde de tous vos NIFs avant de lancer l'application.

1a- Une première fenêtre s'ouvrira afin que vous indiquiez à l'application la localisation de votre fichier "python.exe". Cette requète ne sera bien entendue effectuée que lors du premier lancement de l'application.

2- Une fenêtre s'ouvrira afin que vous puissiez choisir le dossier qui sera analysé.

3- Une autre fenêtre de dialogue vous demandera si vous souhaitez lancer le fichier de traitement par lot -à partir du point 5- immédiatement après qu'il ait été créé ou non. Vous pourrez ensuite faire ce que vous voulez avec.

4- Une liste sera généré contenant tous les noms de fichiers nifs (et seulement eux) présent dans le dossier (celui indiqué en 2).

5- Un fichier de traitement par lot sera constitué à partir des lignes de la liste construite à l'étape suivante. Chaque ligne du fichier suivra la structure suivante : "python.exe Scripts\niftoaster.py optimize --noninteractive "

6. Le fichier sera exécuté si vous avez choisi qu'il en soit ainsi au point(3).

Et voilà tout. Il écrase les fichiers sources, un à un selon l'ordre de traitement du fichier. Si vous êtes fûté, vous noterez qu'il peut fonctionner avec n'importe quel NIF que PyFFI est à même de traiter. J'ai simplement ajouté "Oblivion" parce que ce dernier me tient à coeur.

Installation
============
1. Extraire le fichier n'importe où.
2. Exécuter "Oblivion PyFFI Automator.exe" à partir de n'importe où.


Problèmes Connus ou Bugs
========================
Cet outil est un script conçu en AutoIt, pour travailler en tant qu'interface (entrée-sortie) avec PyFFI's niftoaster.py. Il n'y a aucun bug dans le script, il a été vérifié deux fois et il se contente de localiser et de traiter les fichiers possédant une extension en *.nif (à la condition bien évidement que ces fichiers aient été à l'origine des modèles, et non pas des âneries renommées avec cette extension).

Si néanmoins vous trouviez un bug dans Oblivion, ou au sein de n'importe quel autre jeu pour lequel vous auriez optimisé les modèles, et que vous pensiez que le problème provienne du processus de PyFFIication du fichier, n'essayez pas de me contacter à ce sujet. Désolé si je vous apparait comme étant trop abrupt ou trop fier.

Si toutefois vous expérimentez un arrêt brutal ou tout autre problème à n'importe quel instant au cours de la procédure d'optimisation, contactez moi par MP ou postez au sein des commentaires et je serais heureux de vous aider.
Historique
==========
(version, année.mois.jour)

v0.1, 2008.10.19
- Constitution du script. Je ne pensai pas le diffuser publiquement.


Contact
=======
Envoyez moi un MP sur TESNEXUS.

Crédits
=======
Merci à Bethesda, TESNexus, LHammonds, l'équipe de développement de PyFFI, AlizarinCrimson, OnmyojiOmn et Bill Maher pour avoir explicité ce que la religion était vraiment.


Outils Utilisés
===============
Readme Generator - http://lhammonds.game-host.org/obmm/too ... rator1.asp
AutoIt - http://www.autoitscript.com/


Licensing/Legal
===============
Faîtes en ce que vous voulez :D

___________________________________________________________________________

Pour l'instant dans le domaine des valeurs sûres, comprenez par là, les nifs pouvants être optimisés sans aucun risque :
- Architecture
- Clutter
- Dungeons
- Furniture
- Landscape
- Plants
- Rocks
- Sky
Bien que l'optimisation puisse être réalisée sur un très grand nombre de fichiers à la fois, chaque traitement de fichier prend du temps, évitez donc d'optimiser en une seule fois un dossier contenant des milliers de fichiers. Veuillez néanmoins faire attention à ce que vous raconte l'optimiseur, surtout au niveau d'éventuelles erreurs. Il est évident que cette procédure ne pourra en aucun cas affecter les bsa qui n'ont pas été décompressé. ^^

a- La meilleure procédure (selon moi) consiste à extraire votre Oblivion Meshes.bsa dans un répertoire quelconque dans mon cas je le nomme "Extraction". Puis à optimiser un à un les sous-répertoires des dossiers précédement cités. Exemple :
Extraction\Meshes\Architecture\Anvil

b- Faîtes ensuite une copie du dossier équivalent existant dans votre répertoire Oblivion, dans un autre réperoire dénommé par exemple "Optimisation". La raison de cette opération provient du fait qu'il est possible que vous ayez des fichiers nifs qui ont été ajoutés par un Mod. Exemple :
Optimisation\Meshes\Architecture\Anvil

c- Déplacer ensuite l'ensemble des fichiers et sous-dossiers présents dans votre répertoire Extraction vers votre répertoire Optimisation. ATTENTION, vous devez REFUSER de laisser les fichiers provenant d'Extraction ECRASER ceux présents dans Optimisation. Ce point est important, car vous risquez de provoquer des catastrophes dans le jeu.

d- Il ne vous reste plus maintenant qu'à remplacer le dossier Anvil de votre répertoire Oblivion par celui provenant d'Optimisation. Cette fois l'on remplace tout si vous avez suivi...

e- Suivant la manière dont vous traitez votre "Archive Invalidation" pensez également à lancer OBMM ou Wrye afin que vos nouveaux fichiers soient pris en compte.

=============================================================
Je poursuis cette expérimentation. Et tenterai de compiler les divers soucis pouvant être rencontré. De même si vous avez d'autres éléments au cours de vos travaux transmettez les moi, je rajouterai à la suite ;)
Modifié en dernier par Mohawk le 09 mars 2009, 22:33, modifié 3 fois.
Image
Avatar du membre
apdji
Légende de la Confrérie
Légende de la Confrérie
Messages : 9868
Contact :

Re: Optimisation

Message par apdji »

Je pense à un truc? Proposes tu aussi la manip' sur le forum de la wteam? Car comme généralement, je renvoies les gens là bas pour les côtés les plus techniques ;)
Mais si ce n'est pas le cas et si ça te dis, on peut voir avec Roi pour te le mettre dans les tutos du site.
A toi de voir si ça t'intéresse ;)
Image

"Pas de coercition ... un peu d'éducation ..." Moorelf
Avatar du membre
Mohawk
Confrère
Messages : 290

Re: Optimisation

Message par Mohawk »

apdji a écrit :Je pense à un truc? Proposes tu aussi la manip' sur le forum de la wteam? Car comme généralement, je renvoies les gens là bas pour les côtés les plus techniques ;)
Non, pas cette fois ;)
apdji a écrit : Mais si ce n'est pas le cas et si ça te dis, on peut voir avec Roi pour te le mettre dans les tutos du site.
A toi de voir si ça t'intéresse ;)
Non, plus :lol:

La raison est relativement simple, ce message n'est en aucun cas un tuto, mais plutôt une fiche guide. Suivant les réactions (s'il y en a :cry: d'ailleurs), j'envisagerai peut-être de faire un tuto plus précis et surtout nettement plus clair, expliquant quel outil utiliser, dans quel cas, etc... On verra alors si ça vaut le coup d'en faire quelque chose, car dans l'état actuel, ce message ne peut être utile qu'à des gens déjà expérimenté dans le modding.
Image
Avatar du membre
Prophete
Traducteur aspirant
Traducteur aspirant
Messages : 382

Re: Optimisation

Message par Prophete »

Moi je suis un peu perdu mais, jouant sur PC portable, je veux bien de plus amples explications.
Avatar du membre
Mohawk
Confrère
Messages : 290

Re: Optimisation

Message par Mohawk »

Dans le cadre du "Vignoble de Cote d'Ombre" ayant trouvé que ce dernier ramait un peu par endroit, j'ai décidé d'expérimenté une astuce que j'avais notée sur un forum US (Dragon Caption je crois mais sans plus de certitude).

Le but de l'opération étant d'augmenter la fluidité du jeu (et donc les FPS), au détriment (mais à peine notable) du temps de chargement. Le concept est simple, sa réalisation pouvant être par contre un peu pénible, mais tout dépend de ce que vous voulez ;)

Le principe consiste à inclure au sein d'un même fichier nif, le maximum de fichier distinct. De ce fait ceci ne fonctionne pas n'importe où et surtout pas n'importe comment.

Dans l'idéal, il convient de bien noter au sein d'une même cellule (ah oui, j'oubliai ça fonctionne surtout pour les intérieurs) tous les objets indépendants qui se rangent dans la catégorie des "statics" (c'est à dire tous les machins qui ne peuvent être déplacé et avec lesquels l'on ne peut interagir à l'exception de se cogner dedans).

a)- Pour ma part j'ai commencé par importer l'intégralité du modèle de la cellule principale du manoir dans Blender. Sur un calque j'ai placé les collisions, sur un second tout le reste.

b)- J'ai ouvert le CS et j'ai chargé la cellule en question. J'ai ensuite observé les éléments statiques, repérés précédemment, puis une fois localisé un candidat, je l'ai édité afin de voir le fichier nif auquel il correspondait. (Conservez la fenêtre d'édition ouverte, car le modèle en question peut avoir une taille différente de celle du nif d'origine).

c)- J'ai donc noté que deux rideaux correspondant à un fichier identique trainaient par là. J'en ai donc profité pour importer ce fichier dans Blender (sur mon premier calque vide). J'ai sélectionné l'ensemble du rideau (collision y compris) et j'ai ajusté le tout à la taille observée dans le CS. Je place ensuite ma collision sur un claque vide un instant, je sélectionne l'ensemble des éléments de mon rideau et je fusionne le tout. J'en profite pour faire un nettoyage des vertex en double. Je récupère ma collision, je sélectionne l'ensemble et je duplique le tout (ça c'est uniquement parce que dans mon cas j'ai deux rideaux, si vous avez suivi). Je déplace donc mon duplicata jusqu'à mon calque contenant l'intérieur de mon manoir.

d)- Je positionne, j'oriente, je règle les détails, jusqu'à ce que mon rideau se retrouve dans la position exacte de son homologue dans le CS. Une fois satisfait de mon positionnement, j'éjecte la collision de mon rideau avec celle du manoir sur son calque. Je procède de même avec le second rideau.

e)- Je note dès lors que des morceaux de mes rideaux dépassent du manoir et s'achève dans le vide. Et hop, j'édite et je supprime ce qui traine. Une fois le ménage fait, je sélectionne l'ensemble de mes meshes et je fusionne l'ensemble. Une fois de plus je fait le ménage en supprimant les doubles.

f)- Je procède de même: fusion et nettoyage sur mon autre calque contenant les collisions, je prend néanmoins bien garde de sélectionner en dernier la collision de mon meshe principal. Une fois ceci terminé je déplace le tout sur le même calque que tout le reste.

g)- Donc pour résumer, j'ai un meshe classique qui contient l'ensemble de mon manoir dont mes rideaux, et un second meshe composé de ma collision. Je sélectionne le tout, je fixe toutes les variables, et je recentre le tout. Il ne me reste plus qu'à exporter.

i)- Après un passage plus ou moins long à la moulinette vous finissez par vous retrouver avec un nif. En l'ouvrant vous constaterez que grâce au miracle du plug-in niftools, vous n'avez pas un seul gros meshe avec sa collision, mais bien un ensemble bien distinct par matériaux et par texture.

j)- Résultat des courses j'ai par cette manip réduit le poids de l'ensemble de près de 200 ko... Ouais hé alors ?

i)- En ayant procédé de même ou d'une façon similaire, je parviens à gagner 2,3 ou 4 FPS selon les zones :) Pfff c'est nul ton truc ... oui on peut le voir ainsi, sauf que dans mon cas je passe de 6 à 10 fps et ça commence à faire une sacré nuance ^^

en option sachez qu'il est également possible de réduire le poids de la plupart des fichiers nifs en effectuant un simple import/fusion/export dans Blender. Il semble que l'exportateur de Niftools soit en effet plus performant que celui utilisé par Bethesda. Néanmoins ne vous attendez pas à des réductions extraordinaires, mais si vous avez beaucoup de fichier le gain peut être notable (de 8 à 10% de réduction).

Bon si ce truc intéresse quelqu'un et qu'il souhaite obtenir des détails plus précis sur un point spécifique n'hésitez pas. Je ne vous enverrai pas promener.... automatiquement :siffle:
Image
Avatar du membre
Mohawk
Confrère
Messages : 290

Re: Optimisation des nifs... acc

Message par Mohawk »

Oui, je sais, c'est un double post ... Mais, c'est pour la bonne cause. Ne soyez pas étonné d'avoir un peu de mal à suivre le déroulement des messages précédents. Car j'ai inversé le premier et le cinquième message. :!:

Non, je ne suis pas subitement devenu fou (je l'était déjà avant), mais la raison en est simple. Le Premier message s'adresse à tout le monde (bon, non n'exagèrons pas), disons qu'il est susceptible de s'adresser à tout le monde, pour peu que vous soyez un peu réveillé et donne vraiment des résultats fabuleux. Il existe une méthode a priori encore plus simple sur le forum US, mais qui ne fonctionne pas avec Windaube Basta, je n'ai donc pas pu l'expérimenter (enfin si juste pour confirmer qu'elle ne fonctionne pas). Je poursuivrai donc mon édition du premier message pour les petits détails.

Le Cinquième message décrit une manip nettement plus spécifique qui n'intéressera (personne) que quelques moddeurs, à la recherche du petit plus.
Image
Avatar du membre
le furet
Légende de la Confrérie
Légende de la Confrérie
Messages : 1086

Re: Optimisation des nifs... acc

Message par le furet »

Ha ! PyFFI :D utilitaire que j'utilise pour optimiser toutes les nifs après les avoir nettoyer.Par expérience, puisque je l'utilise depuis sa premier version, il peut être utiliser sur certaines nifs d'armure en ayant effectuer une sauvegarde avant car certaines n'apprécient guerre (ex: j'ai optimiser toutes les nifs d'adaptation des armures pour exnem sans aucuns problèmes).Ainsi que sur celles des armes ( aucuns problèmes à ce jour).Pour les nifs des créatures et clothes, c'est identique à celle des armures.

Ps: je viens de testé et effectivement il y a un gain de temps avec cette version automatiser.
Modifié en dernier par le furet le 10 mars 2009, 00:42, modifié 1 fois.
*****************************************
Je suis lent et partout à la fois.
*****************************************
Morrowind - Oblivion - Fallout3 & NV
*****************************************
Blog : Mes autres traductions
*****************************************
Avatar du membre
Mohawk
Confrère
Messages : 290

Re: Optimisation des nifs... acc

Message par Mohawk »

PyFFI est en effet un petit soft excellent, que j'utilise également depuis longtemps (avec Blender au départ, puis tout seul), mais l'intérêt de cette interface, puisque c'est en fait le seul rôle de ce soft "PyFFI pour Oblivion" est d'éviter d'être obligé de passer en mode commande, et rend donc l'usage de PyFFI extrêmement simple, surtout pour le travail à la chaîne.

Bon dans le détail et pour être tout à fait honnête, ça n'empêche malheureusement pas de passer par Nifskope, pour nettoyer les nifs pourris de certains "moddeurs", mais ça optimise en tout cas d'une manière très efficace. :siffle:
Image
Avatar du membre
The Big Bug
Confrère
Messages : 234

Re: Optimisation des nifs... acc

Message par The Big Bug »

Je viens de commencer le processus d'optimisation des nif dites-sures et je confirme: c'est TRES TRES LONG :D mais le résultat en vaut la peine: j'ai converti les premiers répertoires d'architectures et j'ai vraiment gagné en fluidité.

Un grand bravo à toi ;)
Image
Avatar du membre
Mohawk
Confrère
Messages : 290

Re: Optimisation des nifs... acc

Message par Mohawk »

The Big Bug a écrit :Un grand bravo à toi ;)
C'est surtout Zhelkus et l'équipe de Niftools qui sont à remercier, moi j'ai simplement traduit le ReadMe et détaillé quelques détails. Mais je crois que ce truc vaut vraiment le coup :)
Image
Répondre

Retourner vers « Tutoriels généraux »