A CG nerd tale

Dorian Fevrier's blog

samedi, 10 décembre 2022

Récupérer les valeurs par défaut de kick

Aujourd’hui, un petit bout de code très simple pour récupérer les valeurs par défaut que Arnold (ou la ligne de commande kick) donne à ses nœuds quand on ne les lui fournit pas.

Ce type d’information est utile, entre autres, dans un pipeline qui génère ses .ass lui-même. :siffle:

Bonne lecture ! :sauteJoie:

Lire la suite...

samedi, 27 juillet 2019

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

dimanche, 21 juillet 2019

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

samedi, 6 avril 2019

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

samedi, 18 août 2018

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

mardi, 14 août 2018

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

dimanche, 25 juin 2017

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

dimanche, 4 juin 2017

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

mardi, 15 novembre 2016

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:

dimanche, 6 septembre 2015

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

samedi, 8 juin 2013

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

samedi, 16 mars 2013

Geometry voxelization using Maya Python API (English Translation)

voxel_vray_tn.pngYet another little script only aimed to use the Maya API. :sauteJoie:

The idea is to reproduce the voxel geometric effect you may have already seen.

Nothing too serious and it probably already exists and maybe faster. To be honest, I did not even look. The goal is again to use the API. :baffed:

Lire la suite...

Voxelisation polygonale via l'API Python Maya

voxel_vray_tn.pngEt encore un petit script prétexte à utilisation de l'API Maya. :sauteJoie:

L’idée est de reproduire l'effet de géométrie en voxel que vous avez peut être déjà observe.

Rien de bien méchant et ça existe surement déjà et en plus rapide. Pour tout vous dire, je n'ai même pas cherché. Le but est encore une fois d'utiliser l'API. :baffed:

Lire la suite...

vendredi, 8 février 2013

Déplacer récursivement un fichier vers un emplacement qui n'existe pas (encore)

Python_logo_150.pngC'est rien du tout mais à chaque fois que je dois déplacer un fichier vers un dossier qui n'existe pas je me retape cette fonction à la mano avec les désagrément que peut engendrer l'utilisation des os.mkdir et os.rename. :casseTeteMur:

Comme ce genre de fonction peut intéresser des gens je la met ici pour en faire profiter tout le monde (afin de participer activement et agrandir cette intelligence collective qu'est l'internet... Pourquoi je dis ça? Euh... Et bien en fait j'essais de grapiller quelques lignes sinon le bloc du code se place mal... :seSentCon: )

Lire la suite...

vendredi, 19 octobre 2012

Resolve network slowdowns due to Nuke, After Effects and others software like them (English Translation)

nuke_reseau_tn.pngThis is an english translation of a ticket I wrote (in french :franceHappy: ) a few days ago.

Nuke, After Effects and probably other softwares, can be very "greedy" in terms of disk accesses. So much so they can break network performances drastically if several stations are rendering.

In this ticket I will show you a quick explanation of the why and how a small Python class that can be used as a prototype to solve the problem.

Lire la suite...

- page 1 de 4