A CG nerd tale

Dorian Fevrier's blog

Why linear workflow is not just a checkbox?

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...

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...

Construire un clavier mécanique pour le fun

Cela faisait un moment que je voulais construire un truc. En fait, quand je ne code pas, j’ai toujours envi de faire des trucs. En fait, quand je fais des trucs j’ai toujours envi de faire d’autres trucs. Je ne voyais rien qui puisse me motiver à aller jusqu’au bout. Puis l’idée d’un projet qui mélangeait électronique et bois passa: Un clavier mécanique fait maison. « Haha » me dis-je, « Faut vraiment rien avoir à faire de sa vie pour se lancer dans un truc aussi con ».

Je partais donc là dessus avec entrain. :dentcasse:

Lire la suite...

Lister les channels d'un fichier OpenVDB avec Guerilla

Si vous utilisez Guerilla et que vous devez rendre des fichiers OpenVDB, vous devez connaitre les noms des channels afin de les utiliser dans vos shaders de volumétrique.

Il y a plusieurs façons d’introspecter un fichier OpenVDB (plugin Maya, ligne de commande officielle, etc.) mais toute ne sont pas forcement disponible sur votre machine.

Je vous propose une petite méthode qui s’appuie sur les informations que Guerilla donne quand il rend. :aupoil: )

Lire la suite...

Pourquoi les instances Maya sont si lourdes?

Comme vous le savez sûrement, Maya propose un moyen de faire des instances.

Comme vous vous en doutez peut-être, ce n’est pas si simple.

Et ce que vous ne savez peut-être pas c’est qu’en pratique (plus de 1000 instances) ça ne fonctionne pas des masses

Essayons de comprendre pourquoi. :redface:

Lire la suite...

Est-ce que glTexSubImage2D est asynchrone?

OpenGL_logo_tn150.png

Je traduis une réponse claire trouvée sur reddit:

Si le paramètre data de la fonction n’est pas un buffer object, alors glTextSubImage2D doit bloquer pendant que le pilote OpenGL copie les données dans la mémoire du GPU (à la manière d’un memcpy). C'est nécessaire car OpenGL n’a aucun moyen de vous forcer à conserver les données en mémoire en attendant que la fonction se termine.

Les buffer objects permettent un transfert asynchrone (à la discrétion du pilote), car le pilote peut les conserver jusqu’à ce que les données soient transférés.

Réponse claire et efficace! :hehe:

"FBXASC032" dans mes noms de noeuds Maya quand j'importe un FBX

mobu.png

Si vous importez un fichier FBX provenant de Motion Builder 2016 dans Maya 2016, il se peut que vous obteniez des noms bizarres. C'est simplement un espace les amis! :nannan:

Si votre objet se nomme "tree 1" dans Motion Builder, et que vous importez le FBX dans Maya, Maya nommera le nœud "treeFBXASC0321". Pour une raison étrange, Maya remplace l'espace par FBXASC032, l'espace étant le 32eme caractère ascii. :aupoil:

Motion Builder autorise l’écriture des espaces dans les noms des objets. En fait, il le fait même automatiquement quand deux objets portent le même nom :injures: . Je suppose que Maya devrait remplacer ça par un underscore ("tree_1"), ou au moins remonter un warning dans le log.

Soit vous résolvez le problème avant l'export du FBX, soit vous le faites dans Maya via une simple recherche et remplacement.

En espérant que ça en aide d'autres. :hehe:

Compiler alembic 1.5.8 sous Linux

abc_octopus_001_tn.png

Si vous avez déjà essayé de compiler alembic, vous avez sûrement été confronté à pas mal de soucis. Compiler alembic n'est en effet pas simple et les méthodes pour y arriver sont nombreuses suivant ce que vous souhaitez faire.

Dans ce billet, je vous propose d'expliquer ligne à ligne un script bash afin de voir les différentes étapes. Notez que c'est plus un partage d’expérience qu'un vrai tuto. Il y a de fortes chances que ce script ne fonctionne pas sans modifications de votre part.

Je préfère prévenir: Mieux vaut être habitué à tout ce qui touche à la compilation. :mechantCrash:

Lire la suite...

Ocarina Baby DragonTooth de Songbird

baby_dragontooth_songbird_tn.png

Cela fait un moment que j'ai cet ocarina mais du fait du peu d’intérêt pour ce type d'instrument sur la scène francophone je ne voyais pas de raisons d'en parler.

J'ai cependant l'impression que ça change et que certains artisans francophones s'y mettent tout comme certains musiciens, eux aussi français, sortent de l'ombre pour échanger. :sourit:

Lire la suite...

fxguide and deep data

fxguide_tn.pngAs you might know, I work mainly on animated features. I am often involved with productions and RnD departments to talk about incoming challenges, in particular on the lighting side.

There are many situations where peoples argue how deep comp is canonical now and how it will change the face of the CGI... I'm often arguing it's not a "tiny" feature and, while it can be useful "sometime", it creates more troubles than it solve in practice, specially if its use is generalized (and on a animated feature you often need to "over-generalize" uses). Doing so, I'm facing to a lot of "What? But fxguide state a lot of animation studios use it! Dreamworks, Disney, etc...". :tuComprendRien:

I will not argue on the fact the projects I have to deal with are not running in such studios. I will not even argue about the actual budget compared to big production ones. I will simply quote something fxguide report and pray the various supervisors I have the opportunity to worked with will take this in consideration.

Lire la suite...

fxguide et le deep compo

fxguide_tn.pngComme vous le savez peut être, je travaille principalement sur des longs métrages d'animation. Il m'arrive de participer à des discussions (formelles ou informelles) entre la RnD et la production concernant les difficultés techniques (principalement coté lighting) des projets en cours et/ou qui pourraient arriver.

Je dois admettre que j'entends souvent que le deep compositing c'est super, utilisé partout etc... J’avoue avoir une vision plus nuancé de la chose que je ne considère pas comme une "petite" feature et que, bien qu'il puisse se révéler utile dans des cas bien particuliers, il entraine plus de complications qu'il ne résout de problèmes, tout particulièrement si son usage est généralisé (et sur un long métrage d'animation il est souvent nécessaire de "sur-généraliser" les usages pour garder une consistance dans les données générées).

Mais cela faisant, je me retrouve face à pas mal de "Hein? Mais fxguide dit que c'est utilisé dans tous les studios d'animation! Dreamworks, Disney, toussa..." :tuComprendRien:

Je ne m'étalerais pas sur le fait que les projets sur lesquels je travaille ne sont pas fait dans de tels studios. Je ne parlerais même pas de la différence de budget. Je vais simplement citer un propos rapporté par fxguide et prier pour que tout superviseur, actuel et futur, ait l'occasion de prendre ça en considération.

Lire la suite...

Multithreading for Visual Effects book review

multithreading_for_vfx_review_tn.pngIn programming, nothing is better than a good book. You will often ear that from many experienced programmers.

Today I want to share my humble review of Multithreading for Visual Effects.

This book has been created after the Multithreading and VFX courses session at Siggraph 2013 where some companies were presenting how they used multithreading in their tools. The results where so interesting they decide to gather them and make a book.

As this kind of niche book is rare in the CGI, let's talk about it! :enerve:

Lire la suite...

Le livre Multithreading for Visual Effects

multithreading_for_vfx_review_tn.pngEn code, rien ne vaut un bon bouquin. Vous entendrez souvent ce conseil de la part de développeurs expérimentés.

Aujourd'hui je vous propose un billet sur le livre Multithreading for Visual Effects.

Ce livre a été publié après la session de cours Multithreading and VFX au Siggraph 2013 où un certain nombre de studios présentaient comment ils avaient utilisés le multithreading dans leur outils. Les papers étaient suffisamment intéressant pour qu'ils décident de les rassembler en un livre.

Dans la mesure ou ce type de livre fait parti du marche de niche que sont les VFX, parlons en! :enerve:

Lire la suite...

Mental ray for Maya: Decrease Final Gather flicking

fg_diminuer_flicking_tn.pngIn this ticket, I present a simple way hack (keep in mind we are talking about mental ray for Maya :baffed: ) to drastically decrease Final Gather flicking.

You will see this method is a little tricky but it simply aims to reproduce the Interp. samples Vray's option behavior.

Lire la suite...

Mental ray for Maya: Diminuer le flicking du Final Gather

fg_diminuer_flicking_tn.pngDans ce billet je vous propose d'utiliser une méthode simple un bricolage (on parle de mental ray for Maya là :baffed: ) visant à diminuer le flicking du Final Gather.

Vous allez voir que l'approche est un peu particulière mais elle vise tout bêtement à reproduire le comportement de l'option Interp. samples de Vray.

Lire la suite...

Présentation d'une publication: Sorted Deferred Shading for Production Path Tracing

Sorted_Deferred_Shading_tn.pngCe billet est une présentation très succincte d'une publication de Walt Disney Animation Studios datant de 2013 visant à expliquer les tenants et aboutissants du "tri" des rayons et shading points avant leur calcul: Sorted Deferred Shading for Production Path Tracing.

Je ne rentrerais pas dans les détails et un développeur un peu à l'aise avec le raytracing tirera surement beaucoup plus d'informations du papier original. :siffle:

Lire la suite...

Exporter des curves d'anim et nettoyez le fichier .ma

Python_logo_150.pngJe sais pas pour vous mais moi ça me fatigue un peu que, suite à l'export de courbes d'anim Maya, lors de l'import, Maya essaie de me charger tous les plugins qui étaient présents au moment de l'export... :ideenoire:

Je vous propose une petite suite d'expression régulière que j'utilise de temps à autres visant à nettoyer un fichier .ma de ces "requires" et autres "select" quand tout ce qui nous intéresse au fond ce sont des nodes "simples".

Je poste ce code principalement comme un aide mémoire auquel je me réfèrerai et qui pourrait vous servir. :sourit:

Lire la suite...

- page 1 de 8