Création d'un outil de Texturing

Création d'un plugin de texturing personnel

a marqué ce sujet comme résolu.

-

Hello :)

Ayant passé plusieurs mois à ne bosser qu'avec Substance et Quixel,j'ai récemment décidé de retourner sur Photoshop pour mes textures hard-surface,et comme à l'époque l'idée de peindre les détails de chaque map (Albedo,Roughness,Metallic) pour une scène m'a vraiment rebutée.

Du coups,je me suis tourné vers les Actions dans Photoshop.Une action est une chaine d'opération que l'utilisateur enregistre comme il le ferait avec une vidéo.Une fois que vous avez une action d'enregistré (disons ouvrir une image,changer sa taille de 2k à 1k et la sauvegarder) il vous suffit de l'assigner à une touche (entre F2 et F12) pour que vous puissiez répéter la même série d'opérations en une seule commande.En gros c'est le top.

-

Avec une base sur la création d'actions,j'ai commencé à il y' a quelques jours à travailler sur un petit outil de texturing contenant plusieurs commandes :

  • Création d'un "Texture Project" un document PSD contenant la Normal,AO,Color ID et Position Map.

A partir de ce projet,nous pouvons générer énormément de contenus,et tout n'est pas figé sur un seul workflow :

-Création d'une Curvature.Très utile pour tous les autres masks d'un projet.

-Création d'un Edge Mask,très utile pour tout ce qui touche aux scratches,paint wear,worn edges,etc…

-Création d'un Smart Mask.Celui-ci est beaucoup plus avancé qu'un Edge Mask et utilise l'AO+Position+Normal pour le positionnement de détails comme de la poussière,rouille,goutes de pluie,boue,etc… et chacun de ces détails se propage de façon intelligente (du bas vers le haut pour la boue,par exemple) par rapport à ses propriétés naturelles qui sont paramétrables.N'imaginez pas un truc de fou en lisant ça,c'est vraiment très basique :p

-Material ID.Tout comme son nom l'indique,ce paramètre sépare les couleurs de votre color ID en plusieurs Layers,et chacune est masqué avec une couleur spécifique dans votre Color ID.Ici j'ai du adopter un workflow assez simple,tous mes assets ont toujours des material IDs avec les couleurs RGBCMYW (Red,Green,Blue,Cyan,Magenta,Yellow,White).Pour l'instant c'est une partie qui demande encore beaucoup de travail.

-Une Grunge Library.Celle-ci est crée dans Substance Designer et stocké dans les canaux RGBA d'une image,ce qui me fait quatre Grunge Maps.J'ai doublé leur nombre en jouant avec les Blending Modes du coups tout va bien ici.

-Et enfin,le Material Project.Ce dernier est le projet contenant vos textures (Albedo,Roughness,Metallic pour l'instant).Ce projet peut être crée en un clique si le document "Texture Project" est ouvert,et là aussi il y' a énormément de travail qui reste à faire.In fact,c'est sans doute la tache la plus compliqué que j'ai eu à faire jusqu'ici tellement les actions ont du mal à bien distinguer plusieurs fichiers ayant le même nom mais n'étant pas dans le même groupe :(

Pour l'instant c'est tout ce que j'ai fait,voici ce que j'aimerai avoir si je venais à terminer cet outil :

-Un UI indépendant de Photoshop,un peu comme celui de la Quixel Suite,où je pourrais modifier mes paramètres en temps réel.

  • Une meilleur palette d'options,je pense notamment à un pont qui lance un random seed dans Substance Designer dès que je crée un nouveau Texture Project,histoire de toujours avoir des Grunge Maps différentes.Techniquement je ne pense pas que ça soit très compliqué,mais après je m'y connais pas en programmation donc on verra bien :p

Un projet ADN Tools classique

J'utilise Photoshop CC 2014 et Notepad++ pour ce projet,et ce sujet sera la maison de ce que j'ai appelé ADN Tools :D

Je tiens à préciser qu'en aucun cas je ne veux/peut concurrencer la Quixel Suite,qui est une version très avancée de ce que je cherche à faire.Outre le côté technique du projet,ce qui m’intéresse en créant un outil de texturing dans Photoshop c'est avant tout de pouvoir travailler dans un environnement de production sans Quixel ou Substance,qui ont été mes choix de texturing depuis belle lurette maintenant.

Le projet sera t-il dispo publiquement un jour ? aucune idée,j'ai commencé il y' a une semaine et pour l'instant je suis en phase de pré-pré-pré-pré alpha,tout est en WIP et le restera sans doute les mois prochains.

Je trouve ça super intéressant je vois déjà là, même si tes ambitions ne sont pas grande, une alternative à un ddo-like par exemple, mais j'ai quelques questions :

sur une base "action-based" ne peut-on pas fournir des "inputs" aux actions? c'est à dire, si je veux customise un paramètre de l'action est-ce possible, en imaginant bien que j'ai un workflow moyennement différent du tien?

aussi envisages-tu de faire un pont entre maya(par exemple) et ton script, AKA Photoshop CC ? Si c'est le cas MP moi.

Aussi pense à une interface "custom" avec des buttons(et "ADN" ;) )pour ne pas créer des conflits d'hotkeys

même si tes ambitions ne sont pas grande, une alternative à un ddo-like par exemple

C'est plus une question de temps que d'ambition.J'aime pas Photoshop,et même si l'idée de développer un DDO-like (oui c'est DDO et non dDo ou ddo :p ) peut paraitre intéressante,je ne trouve pas ça trop intéressant de réinventer la roue et préfère investir plus de temps dans des solutions moins connus (Substance Designer,Houdini,UE4,scènes procédurales,etc…).

sur une base "action-based" ne peut-on pas fournir des "inputs" aux actions? c'est à dire, si je veux customise un paramètre de l'action est-ce possible, en imaginant bien que j'ai un workflow moyennement différent du tien?

A chaque fois que tu crée un Edge Mask par exemple,il t'es demandé de modifier certains paramètres pour bien calibrer l'Edge Mask par rapport au shape de ton mesh.Donc si tu veux faire de grosses rayures sur ton objet,il te suffit de changer les paramètres d'une curve pour changer leur scale.Chaque paramètre est customisable,et ça commence dès le début avec le Texture Project qui te demande quelques inputs.

aussi envisages-tu de faire un pont entre maya(par exemple) et ton script, AKA Photoshop CC ? Si c'est le cas MP moi.

Nope,mon processus de Baking n'a pas lieu dans Maya (Substance Designer est mon baker,bien plus complet qu'Xnormal imho) du coups la seule chose custom que j'ai dedans c'est un shortcut pour créer les couleurs RGBCMYW. En revanche,je vais sans doute devoir voir comment faire un pont entre Photoshop et Substance,parceque ce dernier sera sans doute ma solution pour créer les Normal Maps,du coups il faudrait penser à un système d'autoupdate très rapide dans Photoshop,pour que chaque paramètre modifié (disons les scratches) soit mis à jour dans Substance.

Pas besoin de programmation trop complexe ici,et le temps que je gagne sera beaucoup plus gros que si je faisais mes Normals dans Photoshop.

Aussi pense à une interface "custom" avec des buttons(et "ADN" ;) )pour ne pas créer des conflits d'hotkeys

Là c'est quelque chose à faire en HTML/CSS/JS et Adobe ayant récemment abandonné le support de Flash au profit du HTML,c'est pas très évident de trouver des outils taillés pour un non-programmeur,mais je vais sans doute m'y mettre si l'outil en vaut la peine (c'est la dernière chose que je vais faire sans doute).

Nope,mon processus de Baking n'a pas lieu dans Maya (Substance Designer est mon baker,bien plus complet qu'Xnormal imho) du coups la seule chose custom que j'ai dedans c'est un shortcut pour créer les couleurs RGBCMYW. En revanche,je vais sans doute devoir voir comment faire un pont entre Photoshop et Substance,parceque ce dernier sera sans doute ma solution pour créer les Normal Maps,du coups il faudrait penser à un système d'autoupdate très rapide dans Photoshop,pour que chaque paramètre modifié (disons les scratches) soit mis à jour dans Substance. Pas besoin de programmation trop complexe ici,et le temps que je gagne sera beaucoup plus gros que si je faisais mes Normals dans Photoshop.

Tu peux partager plus de chose que le "bake", tu peux par exemple relier substance à Maya, mais aussi le système de shader de Maya à ton "Material Project"… Donc(par exemple) récupérer la couleur d'un simple blinn dans maya et revenir à A.Photoshop où la couleur sera mappé sur les UVs correspondant , c'est simple mais à imaginer avec des materials plus complexe ça donne envie. Même avec le temps que ça prendrait à développer, ça t'assure déjà une feature majeure pour une App payante, donc ça vaut le coup et je suis sûr que l'industrie a besoin, de ce genre de feature.

l'industrie en a besoin, de ce genre de feature.

Je rappelle que c'est un projet expérimental et personnel :p Une charte d'Albedos est en cours de réalisation,je devrais l'achever demain normalement.L'Albedo sera la valeur que je vais stocker en preset,pour ce qui est de la metalness c'est plutôt obvious (metal = blanc,non métal = noir).

-

Plop,

Nouvelle mise à jour,cette fois avec beaucoup plus de features :)

  • D'abord,la technique utilisé pour créer les Edge masks à été repensé,et les scratches avec.On a maintenant une meilleur distribution de scratches/paint wear sur les bords de notre texture,et certains paramètres sont maintenant procédurales (sans Substance,juste Photoshop),histoire de rendre le processus moins statique :

Comparaison des anciens scratches avec les nouveaux

  • Le Smart Mask a été recrée et renommé Smart Effects,ce dernier est beaucoup plus avancé qu'un Smart Mask et servira pour beaucoup plus de choses que son ancienne itération.Pour faire court,l'effet utilise maintenant uniquement une AO et grâce à plusieurs autres techniques procédurales (de Photoshop) ,il est maintenant possible de créer un Mask allant d'un Rust à des leaks à passant par tout ce que vous voulez pour créer des détails sur votre texture (un Paint Wear à grande échelle,par exemple).

  • Autre mise à jour très importante,c'est la création de presets ! vous pouvez maintenant créer projet de texture,et sauvegarder tous les paramètres qu'il contient pour les appliquer à un autre projet :D bon on va pas se mentir c'est pas un truc très avancé,et il arrive que vous ayez besoin de faire quelques ajustements à certains paramètres (comme les scratches par exemple) pour contrôler leur volume,mais globalement ça rend le workflow bien plus rapide.

Un preset est sauvegardé avec une petite image d'illustration et un projet PSD qui porte son nom.

Désolé pour le nom,j'en avais marre d'avoir des bugs :D

  • Le Material et Texture Project ont eux aussi été repensé,et pour cette version Photoshop ne sera plus très capricieux avec ses erreurs de sélection.Un point important à noter,j'ai temporairement retiré la position Map,je confirmerai son retour dans le cas où elle est facilement bakable dans tous les autres logiciels (autre que Substance Designer,qui est mon Baker).

  • Et la dernière mise à jour,qui est sans doute la plus importante,c'est la création de Normal Maps ! :D vous pouvez mantenant rapidement créer du texte et avoir sa normal map en un clic,avec plusieurs paramètres qui sont modifiables.Il y' a aussi la possibilité de créer à partir de vos Masks des Normal Maps,histoire d'ajouter un peu de profondeur à certains détails.Cette mise à jour a été particulièrement difficile à opérer et a demandé la lecture de plusieurs documents PDF sur les Normal Maps,mais ADN Tools a maintenant une version très sympa de ce qu'est NDO ^^ la star du jour est biensur Clem :p

-

On m'a dit que je pouvais être ce que je voulais,alors je suis devenu une Normal Map :D

Histoire d'illustrer certains mises à jour,quoi de mieux qu'une vidéo ! :)

Ce sera tout pour aujourd'hui,si vous avez des questions,critiques ou suggestions n'hésitez pas à m'en faire part ;)

C'est bourrin mais au final oui c'est les tools de Quixel que tu refait. Exercice intéressant en tout cas.

Un tools qui peut t'intéresser -peut être- qui permet de gérer les export et un viewer 3D into photoshop. Son p'ti nom Expresso. Quand j'ai testé je n'avais pas la bonne version pour aller avec mon Toshop mais au final j'ai tout fait pour sortir Photshop de mon workflow et ça me convient :) . Pour moi l'étape la plus intéressant dans le texturing c'est de pouvoir gérer ça dans le soft 3D via des contrôleur. Les allers et venu entre les moteurs RT + tout les autres soft à côté son trop lourd à mon goût.

C'est bourrin mais au final oui c'est les tools de Quixel que tu refait.

La Quixel Suite a un workflow uniqe/destructive,tu utilises DDO pour créer tes textures et leur système de Layers.Sur ADN Tools,c'est le contraire : Chaque opération est indépendante,et tout est basé sur le système de layering de Photoshop.

Si ton workflow dans Photoshop est deja solide tu peux simplement utiliser ADN Tools pour convertir du texte/logos/scratches en Normal.Si c'est les scratches que tu veux pas de problème,donnes ta Normal map et on te donnera tous les masks dont tu as besoin. La structuration d'un projet ADN Tools est faite pour que tu puisses jouer avec tes Layers comme dans un workflow classique.

C'est assez difficile à expliquer,mais les choses seront beaucoup plus claires à la prochaine vidéo (qui n'arrive pas demain matin au fait,IRL m'a pris au dépourvu :D )

Pour moi l'étape la plus intéressant dans le texturing c'est de pouvoir gérer ça dans le soft 3D via des contrôleur.

J'avais pensé à faire un previewer WebGL (en PBR,c'est possible et même très accessible) pour Photoshop,mais la masse de travail à faire est beaucoup trop grande et je trouve qu'utiliser Marmoset pour voir les modification s'avère être beaucoup plus rapide.Mais je comprends ton point de vu et c'est là un problème qui m’intéresse particulièrement,notamment au niveau de sa complexité.

Sinon,si quelques visiteurs du projet ont le temps et qu'ils font du Hard-Surface Texturing (que ce soit pro ou débutant) j'aimerai bien avoir quelques retours sur des features que vous auriez développé pour vous faciliter la tache si vous étiez à ma place.Vous pouvez aussi parler de votre workflow de retopo et des points génants que vous aimeriez rendre plus intéressants/rapides.

ADN Tools devient de plus en plus intéressant en interne et même si je jongle beaucoup entre projets,celui là m'aide beaucoup à bien m'améliorer sur la partie technique de mon métier et je compte bien avoir une version "solide" un de ces jours (ou mois,au choix) :D

Toujours vivant :p

ADN Tools est en pleine phase de transformation en ce moment.L'ancienne version (0.13) était faite uniquement d'Actions Photoshop,ce qui avait grandement limité les possibilités de l'outil.Je suis en ce moment entrain de reconvertir tout ce bordel en Javascript pour pouvoir ajouter plus de fonctionnalités et bien évidemment plus d'opérations automatisés grâce à certains paramètres manuels.

Pour l'instant tout est bien trop mal organisé pour vous présenter quoi que ce soit,mais l'export ainsi que la création de matériaux de façon semi-procédurale (j'expliquerai le concept en détail plus tard) m'encouragent beaucoup à avancer dans le développement de cet outil :)

On est donc à la version 0.18 d'ADN Tools,avec comme nouveautés :

  • Réécriture complète de l'outil en Javascript.Certaines fonctionnalités sont en cours,d'autres rencontrent des problèmes,mais globalement ça avance bien.

  • Création en cours d'un système d'export qui permettra d'exporter les textures classiques d'un projet mais aussi les Masks si vous voulez les utiliser ailleurs.

  • Smart Effects continue son avancé avec des options procédurales assez sympathiques et un UI en cours de dev.

  • Populate Project : Sans doute ma fonctionnalité favorite,Populate Project permet de texturer plusieurs assets en même temps (une sorte de Batch) en utilisant les paramètres de du projet en cours. Très utile pour les scènes où l'on a énormément d'assets.

  • Smart Decals : Ajout d'un système de gestion de decals pour votre projet.Bien que l'architecture ne soit pas aussi fragiles que dans la Quixel Suite 1.8,implémenter cette fonctionalité me permet d'éviter toute sortes d'erreurs liés aux paramètres de l'utilisateur et de ses Layers.

Toutes les autres fonctionnalités sont que l'on voit sur les anciennes versions seront elles aussi convertis en Javascript.

Merci,le projet est encore en pause,malheureusement ^^

/Début du HS/

J'essaie de terminer les scènes que j'ai commencé ces derniers mois qui sont en WIP,et je m'entraine ici et là en MEL Script :) mon dernier petit est un script de Maya qui met en avant l'utilisation des Selection Sets.Le workflow est similaire à celui des Layers : Sélectionnez vos objets (Edges,Faces ou Vertices dans ce cas) ,cliquez sur le bouton "ADD" et hop vos Edge Loops seront stockés dans un "Layer" modifiable par la suite.

La raison pour laquelle j'ai développé cette technique est très simple : La retopo.Je bossais sur plusieurs éléments modulaires sci-fi et je devais à chaque fois enlever tous les Support Loops.Parfois il arrivait qu'en cours de sélection je me voyais dans l'obligation de modifier quelque chose et par conséquent devoir tout re-sélectionner à l'avenir.Techniquement c'est pas un gros soucis,mais plus la scène est chargé plus le plugin peut s'avérer utile.

Tout ça a pour but de m'aider à m'améliorer un chouïa en MEL Scripting biensur.

/Fin du HS/

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte