• Importer les modèles 3D de The Witcher 2 & 3

    dernière modification : 12 juin 2017

     

     J'indique ici une manière de procéder pour récupérer les modèles de The Witcher 2 & The Witcher 3, avec leurs textures, dans un format (.obj) permettant de les importer dans un logiciel 3D.

     

    Une fois de plus, rien de simple, mais grâce au travail de programmeurs passionnés, rien d'impossible !
    Le processus fonctionne bien mais demande à être amélioré (certains objets ont leurs textures mal attribuées). Peut-être vaut-il mieux laisser de côté ces objets et ne garder que ceux pour lesquels tout fonctionne bien...

    Plusieurs programmes vont être nécessaires, mais le principe est toujours le même : extraction du contenu original (meshes et textures), lecture dans un programme dédié, et enfin importation/modification dans un logiciel 3D (3ds max).

      

     The Witcher 2 

    La procédure est assez simple : il s'agit de décompacter la grosse archive pack0.dzip (12 Go décompressée) puis de pointer sur ce dossier, lors de l'utilisation de TWitcher Model Convert, qui permet d'afficher et extraire en .obj les meshes.

    Programmes utilisés :

    - Gibbed Red Tools, [Auteur : Rick, merci à lui] pour décompacter un fichier .dzip
    The Witcher Models Converter, [version 2.6 - Auteur : JLouisB, un grand merci aussi !]

    1. Extraction des meshes et des textures

    On utilise le petit programme en ligne de commande "Gibbed Red Tool" pour extraire cette archive
    Donc :
    - clic droit sur Gibbed.RED.Unpack.exe, et "exécuter dans une fenêtre de commande", afin d'être positionné d'emblée dans le dossier quand cmd va s'ouvrir (une petite fenêtre nous demande si on veut ajouter des paramètres...non pas la peine)

    - une fois la fenêtre cmd ouverte, taper :
    Gibbed.RED.Unpack.exe "[emplacement du fichier pack0.dzip]"
    soit par exemple :
    Gibbed.RED.Unpack.exe "D:\Jeux\The Witcher 2\CookedPC\pack0.dzip"
    le dossier est décompacté dans le répertoire de The Witcher 2, on peut ensuite le déplacer vers l'emplacement de son choix.

    2. Affichage / exportation des modèles

    On peut alors utiliser The Witcher 3D models converter (anciennement W2ENT Converter).
    Son utilisation est assez intuitive :

    Importer les modèles 3D de The Witcher 2 & 3

    Il faudra indiquer dans les options un dossier dans lequel seront extraits les modèles, avec leurs textures :

     

     

     


    De même, indiquer le répertoire de base, Importer les modèles 3D de The Witcher 2 & 3dans lequel se trouve le dossier pack0 que l'on vient d'extraire, qui contient tous les meshes et les textures à afficher :


    Il suffit ensuite en parcourant l'arborescence (assez touffue) du dossier "pack0" de choisir un modèle  .w2mesh ou .w2ent

    Importer les modèles 3D de The Witcher 2 & 3

    Si on veut l'extraire et le convertir (format .obj de préférence, mais d'autres formats de fichiers 3d sont disponibles) lui indiquer un nom et cliquer sur "convertir" :
    Importer les modèles 3D de The Witcher 2 & 3

    (voir note ci-dessous concernant certaines remarques à ce sujet)

     

    The Witcher 3 

    Avec The Witcher 3, les choses se compliquent un peu (soyons positif). Il va falloir aller chercher en deux temps le contenu du gros dossier "content" de TW3, et le placer dans un dossier où l'on pourra ensuite aller piocher les modèles et leurs textures, via le même programme The Witcher 3D models converter.
    L'extraction des meshes et des textures demande en outre un certain temps (plus de 20 Go à extraire) et quelques manipulations...
    Outils nécessaires :
    - The Official Mod Kit (TOM), [developed and released by CD PROJEKT RED for use with The Witcher III: Wild Hunt]
    ModKitchen, [v.1.0.1 - Auteur : vervurax, merci !]
    QuickBMS, [Auteur :Luigi Auriemma , merci aussi !] 
    The Witcher Models Converter, [version 2.6 - Auteur : JLouisB, merci à lui !]

    Extraction des textures
    1. Installer The Official Modkit via le setup.exe
    (utilise 370 Mo...) peu importe l'emplacement, il suffit juste de s'en souvenir !
    On va utiliser (indirectement) par la suite le programme wcc-lite.exe pour extraire les textures et les meshes. Donc incontournable

    2. a Pour les fanas de la ligne de commande, on peut ensuite indiquer par ce procédé les textures à extraires :
    -> lancement de wcc-lite en ligne de commande
    et taper :
    uncook -indir="[répertoire du dossier content]" -outdir="[répertoire d'extraction]" -imgfmt=dds -skiperrors
    par exemple :
    uncook -indir="D:\jeux\The Witcher 3\content" -outdir=D:\Temp\W3 -imgfmt=dds -skiperrors

    2. b Si l'on veut s'éviter le passage en ligne de commande, lancer "ModKitchen.exe"
    Plusieurs paramètres seront à renseigner lors d'une première utilisation :
    - répertoire où se trouve wcc_lite.exe, faisant tourner TOM (d'où l'intérêt de savoir où on a installé TOM) :
    -> pointer sur le dossier x64 de TOM

    - répertoire qui sera utilisé pour recevoir tous les fichiers extraits
    - préciser le format de fichier pour les textures. De préférence .dds : le moins lourd et le plus complet
    - emplacement où se trouve le dossier de TW3 et plus particulièrement le dossier "\content" de TW3 à extraire

    Lorsqu'on clique sur Uncook, un petit message nous précise simplement la ligne de commande qu'il va utiliser avec wcc-lite.exe - pas d'affolement !
    ... vu les 30Go de données, ça peut prendre quelques minutes (une bonne dizaine chez moi si je me souviens bien), car le programme extrait TOUT le contenu, meshes & textures !

    Pour fonctionner, le dossier d'extraction doit être vide ( -> message d'erreur puis arrêt lorsqu'il existe des fichiers devant être écrasés -> c'est pourquoi on lance cette opération en premier)

    Extraction des meshes

    Nous allons encore les chercher dans les sous-dossiers de \content.
    Il va s'agir d'exporter les fichiers .bundle, contenus dans chaque dossier du même nom, qui contiennent des meshes et des fichiers attachés, indispensable pour un affichage correct des modèles et de leurs textures.

     1. Lancer QuickBMS (quickbms.exe), et pointer le script .bms à utiliser ("witcher3_bundleOnly.bms")
    2. Indiquer les fichier .bundle à extraire. Seuls les fichiers "blob.bundle" et "buffer.bundle" sont intéressants. Ils se situent dans chaque sous-dossier \content\bundles
    - Indiquer le dossier de destination (le même que pour les textures)

    ... l'opération se lance. En cas de fichiers en double, préférer overwrite all (a) 

    -> il va falloir répéter l'opération pour chaque sous content0, content1, content2, etc.

     

    Affichage / conversion des meshes avec The Witcher Model Converter
    On peut ensuite utiliser TWitcher 3D Models Converter

    Les .obj exportés sont pris en charge par les versions récentes de 3ds max (2012 à 2016 testées)

    Les objets sont divisés en groupes selon les textures utilisées, ce qui est très pratique pour corriger les erreurs de textures. Mais comme toujours, le niveau element n'existe pas.
    On a donc bien une subdivision au niveau des matériaux (par ex. bois des planches,  pierre des murs...) mais pas au niveau des éléments (poutres, planches, mur...).  Il sera donc difficile, comme toujours, de retravailler ces modèles sous 3ds.

    note 1 : meshes en doubles ou triple dans un même fichier .obj
    Certains meshes sont livrés avec plusieurs groupes redondants.
    Il s'agit en fait de différentes versions du même modèle, en low, medium, et high poly (selon la qualité de rendu, et la distance de l'objet dans le jeu -> la différence de polygones se répercutera sur le calcul des lumières par exemple).
    Pour un mur, on peut ainsi avoir une version à 96, une à 194 et une à 388 poly, pour une plateforme de bois, 640, 1600 et 3200. Si on utilise l'élément de manière modulaire, multipié par 4 ou 6, ça peut vite faire des différences de 10 ou 15 000 polygones - où comment alourdir une scène et un rendu par des détails invisibles !
    Vu donc son impact dans la scène, et le fait qu'un élément sera peut-être répété plusieurs fois, autant favoriser la version low quand elle n'est pas trop destructrice (il faut voir au cas par cas, une version medium sera parfois nécessaire. Ne garder les versions high que pour les cas particuliers)
    Les versions high occupent les premiers groupes, les versions low les derniers.

    autre problème : les meshes en low poly condensent parfois 2 ou plusieurs groupes de high poly... mais ne gardent qu'une seule texture, ce qui est problématique dans les détails. Impossible de restituer ces textures sans passer un bon moment à refaire les sélection, etc... (par ex. plateforme de bois -> 3 textures de bois différentes en high poly pour 3 groupes, 1 seule en low, pour un groupe - on perd celles des bois de bout et une variation de texture de bois)

    Quoi qu'il en soit, il est nécessaire de retravailler les .obj et de faire un choix afin de ne pas conserver les 2 ou 3 versions d'un même meshe dans un fichier .obj, car on alourdit la scène pour rien, et le rendu peut être brouillé par la supperposition des 2 ou 3 objets !


    note 2 : Les matériaux sont incorrectement/incomplètement crées

    matériaux attribués de manière erronée
    Ce n'est pas le cas pour tous les modèles, mais certains (complexes) se retrouvent avec des matériaux blancs, soit que les textures ne sont pas trouvées, soit qu'elles sont mal attribuées (le programme retrouve bien les fichiers de textures associés aux différents groupes qui constituent un modèle mais les attribue mal ou pas, opération qu'il faut faire sous 3ds)

    Fichiers matériaux (.mtl) incomplets et incorrects
    Le programme semble utiliser un module créé par un autre programmeur (Irrlicht Engine)
    -> le specular level est sur 100 quand il est sur 0 par défaut (changer ligne Ks -> 1.000000 en 0.00000), ce qui se traduit par une texture quasiment blanche lors du rendu.
    -> le bump n'est pas récolté, même si la texture est bien présente, il faut donc l'ajouter manuellement à chaque matériau
    -> le glossiness est à 0 au lieu de 10 par défaut
    On peut modifier manuellement le fichier .mtl  (ou utiliser un script via un programme comme search & replace et qui permet de faire la modif pour tous les fichiers .mtl d'un dossier !)

    exemple de fichier .mtl généré par TW ModelConverter et le même fichier généré par 3ds max (contient beaucoupl plus d'infos)

    fichier .mtl généré par ModelConverter
    newmtl mat0
    Ka 1.000000 1.000000 1.000000
    Kd 1.000000 1.000000 1.000000
    Ks 1.000000 1.000000 1.000000
    Ke 0.000000 0.000000 0.000000
    Ns 0.000000
    map_Kd ../../W3/environment/textures_tileable/wood/poor_wood_outdoor_planks.dds


    fichier .mtl généré par 3ds max
    newmtl _guard_towermat0
        Ns 10.0000              # // glossiness à 10
        Ni 1.5000
        d 1.0000
        Tr 0.0000
        Tf 1.0000 1.0000 1.0000
        illum 2
        Ka 1.0000 1.0000 1.0000
        Kd 1.0000 1.0000 1.0000
        Ks 0.0000 0.0000 0.0000 # // specular à 0
        Ke 0.0000 0.0000 0.0000
        map_Ka poor_wood_outdoor_planks.dds  # // chemin relatif
        map_Kd poor_wood_outdoor_planks.dds
        map_bump -bm 0.5000 poor_wood_outdoor_planks_n.dds
        bump -bm 0.5000 poor_wood_outdoor_planks_n.dds

    -> le chemin des textures n'est pas relatif. Ce qui fait que si on déplace les fichiers, l'attribution des textures part en live !
    3ds max, fait mieux le boulot et on peut déplacer les fichiers sans risque.
    -> nouvelle nécessité de ré-enregistrer le fichier .obj avec 3ds max !

     

    « Histoire de la Vallée des Dieux

    Tags Tags : , , , , , , , , , , , , , , , ,
  • Commentaires

    Aucun commentaire pour le moment



    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :