A CG nerd tale

Dorian Fevrier's blog

It's rendering... It's black... But it's rendering!

Les foules de personnages en volumétriques de Soul chez Pixar

N’ayant plus beaucoup de temps pour lire des publications, je suis passé à côté d’un papier de Pixar sorti en juillet 2020 : Rasterizing Volumes and Surfaces for Crowds on Soul. De la rastérisation dans un papier de 2020 ? Intéressant… :reflechi:

Quand j’ai ouvert le papier, je m’attendais à trouver des équations mathématiques sur une nouvelle méthode ou que sais-je, mais c’est en fait la description détaillée d’un problème précis sur un plan. Tout ce que j’aime ! :baffed:

Vous allez voir que la situation que Pixar a rencontré sur ce plan a pas mal de similitude avec les problèmes qu’on peut rencontrer, dès qu’un plan un peu complexe se pointe. La différence c’est que Pixar n’est pas aussi limité que nous dans ses méthodes. Et c’est là où ce genre de document prend de la valeur : Quand on se retrouve face à des choses difficiles à sortir, on peut parfois se laisser aller à de la pensée magique comme : « À Pixar, ils auraient tout envoyé en farm ! » (mais bien sûr…). Ce papier nous prouve que non, et surtout, qu’ils n’ont pas peur de revenir sur des vieux paradigmes pour sortir leurs plans quand la contrainte (ici technique) l’impose. :redface:

Ce billet sera donc l’occasion de râler comme un vieux con, puis on va essayer de comprendre comment Pixar a géré ce plan. :banaeyouhou:

Lire la suite...

Guerilla, Hair, et Back specular

Aujourd’hui un billet inutile et vraiment spécifique pour vous parler d’un problème que vous ne rencontrerez sûrement jamais. :laClasse: En fait il est probable que vous ne rencontriez ce problème que sur de la série, où la contrainte de la puissance de calcul est importante. :pafOrdi:

Quand on rend des poils avec le shader Hair de Guerilla (et je suppose avec n’importe quel autre moteur de rendu) il peut être intéressant de supprimer les-dit poils du trace set « Diffuse » pour économiser leur coût de calcul dans l’indirect (BIM ! Direct dans le bain sans politesse ni respect pour son lecteur :grenadelauncher: ), mais dans ce cas précis, on risque d’obtenir un effet bizarre, presque esthétique, et je vous propose de voir ce dont il s’agit. :hehe:

Lire la suite...

Convertir des primaires sRGB en primaires ACES

Bonjour à tous, dans ce petit billet nous allons voir comment convertir des primaires sRGB en primaire ACEScg. :reflechi:

Ceci vous sera peut-être utile pour convertir des lookdevs historiquement créés en sRGB, vers votre workflow l’ACES. Pour les textures, il suffit de changer la transformation d’entrée (« input device transform »), mais les couleurs stockées en dur dans les attributs de vos logiciels et matériaux n’ont pas d’espace qui leur soit assigné, donc pour conserver le même résultat visuel, il faut les convertir « manuellement ».

Ce sera surtout un prétexte à un quelques explications sur ce qu’est une primaire, la différence entre celles de sRGB et ACEScg, dans quel cas précis on doit le faire et quand ne surtout pas le faire. :tuComprendRien:

Notez qu’il y aura du Python à la fin, toutefois le code est très simple et je pense que la première partie du billet est suffisamment intéressante pour être lu par tout le monde. :hehe:

Lire la suite...

La ferme de rendu (seconde partie) : Les jobs

Dans la première partie, nous avons abordé les différents jobs qu’on peut retrouver sur une ferme de calcul. Ici nous allons parler de certains aspects tel que la notion de prédiction de données, relation aux versions, gestion du temps de chargement des scènes et des versions des logiciels et plugins.

Lire la suite...

Guerilla, le shutter et Yeti

Dans ce billet on va encore parler de poils et tout particulièrement du motion blur de Yeti dans Guerilla.

Rien de révolutionnaire, on va juste faire le tour des choses à savoir quand on doit gérer cette combinaison. :reflechi:

Lire la suite...

LOD, suite et fin v2 (les poils)

J’espère qu’avec ce billet je vais enfin terminer cette longue et indigeste série sur les LOD. :vomit:

Attaquons enfin la densité des poils au plan. Ce dernier billet va être un peu technique. On va faire un peu de trigonométrie (espace caméra, toussa) et parler de farm.

Lire la suite...

LOD, suite et fin (automatique VS manuel)

Je me suis rendu compte que j’ai oublié de parler de deux-trois choses dans mon billet précédent et je suis parfois passé trop rapidement sur certains points.

Je vous propose un billet d’appoint pour corriger le tire, ce sujet aux branchements infinis le mérite bien. :sourit:

Aujourd’hui, je comparerai l’approche automatique et semi-manuelle pour gérer les LOD géométriques, j’aborderai la relation entre le département de modeling et de lookdev puis on finira par les poils.

Lire la suite...

Aperçu du concept de LOD

lod_jeu_de_motBonjours, dans ce billet je vous propose de faire le tour de ce qu’on entend par LOD (Level Of Detail), en quoi ça consiste, à quoi ça sert, quand faut-il l’utiliser et quand vaut-il mieux s’en éloigner.

Vous vous rendrez compte que derrière ce concept simple se cache des réalités techniques assez nuancées. :reflechi:

Lire la suite...

mrViewer, MP4 8 bit, OpenColorIO et Rec. 709

Si vous utilisez mrViewer, vous avez peut-être déjà eux des problèmes de lectures de fichiers MP4 en Rec. 709. En effet, mrViewer lit les MP4 8 bits en sRGB par défaut.

Il existe plusieurs façons de corriger le problème. On va essayer de faire le tour dans ce billet. :reflechi:

Lire la suite...

Premières images de playplast avec des mauvais matériaux dans Maya : displayPref à la rescousse

Si vous faites des playblasts déportés, il y a de fortes chances que vous mettiez une machine dédiée qui ouvre une session graphique de Maya, ouvre (par exemple) votre scène d'animation, puis lance le playblast. Cela faisant, il est possible que les premières images de votre playblast n'aient pas tout les matériaux et textures (surfaces vertes), ce qui est assez gênant. :casseTeteMur:

Dans ce billet, je vous propose d'essayer de comprendre le problème et de regarder comment le résoudre. :hehe:

Lire la suite...

Gérer les chemins Linux/Windows sous Maya avec dirmap

Aujourd'hui je vais vous parler d'une commande que vous devez connaître si vous avez à gérer un pipeline Maya qui tourne sous Windows, Linux et autres.

Lire la suite...

La ferme de rendu (première partie) : Les jobs

L’exécution de tâches (jobs) sur des gestionnaires de tâche (job manger, render manager, farm manager) est courante dans énormément de secteurs liés à l’informatique. Que ce soit la compilation de code, l’exécution et le rapport de tests unitaires, le calcul financier, ça pullule. :popcorn:

Internet regorge d’informations et de bonnes pratiques liées à l’exécution et la gestion des tâches sur des fermes de calcul. Pourtant, beaucoup de ces informations sont trop génériques et passent à côté de certains problèmes de fond, propres à notre industrie. :triste:

Je voudrais, modestement et de façon totalement subjective, faire un retour d’expérience autour de l’organisation et la structure de la ferme de calcul. Notez que je n’affirme pas avoir LA bonne méthode pour gérer les fermes de la façon la plus efficace qui soit, mais j’aborde et commente différentes problématiques que j’ai pu rencontrer.

Lire la suite...

Récupérer le nom d’un attribut caché dans Maya

Il n’est pas rare, quand on script, de devoir récupérer le nom d’un attribut en vu de l’utiliser, plus tard, dans ses scripts. D’une manière générale, il suffit de modifier l’attribut, d’aller dans le Script Editor puis de trouver la ligne qui fait le setAttr sur l’attribut qui nous intéresse. :petrus:

Vous remarquerez toutefois que cette méthode ne fonctionne pas avec certains attributs. Il arrive, en effet, que la commande setAttr correspondante ne soit pas affichée dans le Script Editor. Je vous propose ici la méthode que j’utilise pour aller trouver les attributs « timides ». :sourit:

Lire la suite...

Le unités de mesure des logiciels

Un billet pour expliquer un truc assez bête mais qui fait perdre la tête à pas mal de gens tant il est obscur. Je vais parler de la notion d’unité de mesure dans les logiciels, ou pourquoi elle n’aurait peut-être jamais dû exister. :grenadelauncher:

En début de production on tente souvent de se mettre d’accord sur un référentiel de mesure. La grande question est : « Quelle distance fait 1 ? », C’est-à-dire, quand un objet se déplace de 1 dans mon logiciel, à combien cela correspond-il dans le monde réel ? :gne:

Lire la suite...

Exécuter du Python au démarrage de Guerilla

Un peu comme Maya et son userSetup.mel, Guerilla permet d’exécuter des scripts au démarrage, mais que du lua. Voici un petit truc rapide pour exécuter du Python :

Si vous allez dans le nœud Preferences, dans LocalSettings/Directories/User Plugins vous pouvez définir une liste de chemins (paths).

Sachez que tous les fichiers lua présents dans ces différents chemins seront exécutés au démarrage de Guerilla. Sachez aussi que le lua de Guerilla intègre une passerelle vers Python. Ainsi, si votre fichier lua contient :

require('python')
python.execute('import myModule; myModule.doit();')

Celui-ci exécutera le code Python :

import myModule
myModule.doit()

Vous savez maintenant comment exécuter du Python au démarrage de Guerilla ! :bravo:

Des boutons appelants la même fonction avec des arguments différents grâce à functools.partial()

Un des premiers trucs qu’on souhaite faire quand on commence à scripter dans Maya ce sont les boutons pour exécuter nos scripts chéris. :bravo:

Naturellement, vous êtes allé dans la documentation, section Technical Documentation, puis Python Commands, avez cherché « button » et êtes tombé là-dessus. Ensuite vous êtes allé en bas de la page, vous avez copié-collé l’exemple et avez commencez à modifier votre script. Félicitation, c’est exactement comme ça qu’il faut faire. :mayaProf:

Sauf que comme nous allons le voir, on bute vite sur un problème. Aujourd’hui je vous propose un tutoriel pour pouvoir utiliser une même fonction appelée avec différents arguments suivant les boutons.

Lire la suite...

L'instanciation implicite du format Alembic

Suite à la publication de mon post mortem sur Ballerina, certains d’entre vous semblaient intrigués par le paragraphe concernant l’instanciation implicite des fichiers Alembics.

Dans ce billet, je vous propose d’aller un peu plus loin avec une explication théorique, un peu de pratique et un peu de code (la recette du bonheur en somme :petrus: ).

Lire la suite...

Post mortem: Ballerina

Je viens enfin de finir le post mortem de mon travail sur le long-métrage Ballerina. Je vous préviens, c’est long.

En espérant que ça vous plaise. :popcorn:

Lire la suite...

Faire un override pour supprimer un shader dans Guerilla

Si vous assignez un shader (de volume par exemple) il peut être utile de pouvoir le désassigner, plus loin dans le rendergraph.

Il me semble que c’était possible en 1.3 mais que ce ne soit plus possible en 1.4. :reflexionIntense:

Je vous propose donc une petite méthode pour désassigner un shader. :sauteJoie:

Lire la suite...

Personnaliser ses AOV dans Guerilla

Ça fait un moment que je n’ai pas fais de tutoriel. En voici un tout petit principalement à destination des étudiants utilisant ou voulant (les biens inspirés :hehe: ) utiliser Guerilla pour leur projet de fin d’année.

L’idée étant de faire un tuto pour sortir un AOV personnalisé assignant une couleur suivant les objets. Nous allons ici utiliser de simples couleurs (rouge et bleu dans le cas d’un masque) mais sachez que vous pouvez remplacer cette couleur par une texture, de l’occlusion ou pleins d’autres choses.

En avant ! :enerve:

Lire la suite...

- page 1 de 9