A CG nerd tale

Dorian Fevrier's blog

Mot-clé - python

Fil des billets

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

jeudi, 20 mai 2021

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

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

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

vendredi, 23 juin 2017

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

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

dimanche, 14 octobre 2012

Résoudre les ralentissements réseaux dûs a Nuke, After Effect et autres logiciels du genre

nuke_reseau_tn.pngNuke, After Effect et surement d'autres, peuvent se révéler très "gourmand" en termes d’accès disque. A tel point qu'ils peuvent rapidement mettre des disques réseaux à genoux si plusieurs stations font des rendus.

Dans ce billet je vous propose une explication rapide du comment du pourquoi ainsi qu'une petite classe Python qui fait office de prototype pour solutionner le probleme.

Lire la suite...

mercredi, 4 avril 2012

Python: multiprocessing vs threading

threadingVSmultiprocess_tn.pngCe billet va tenter de montrer, principalement par l'exemple les différences entre le module threading et le module... multiprocessing! Je vous propose donc deux petits codes pour démarrer rapidement.

La plupart des TD Maya on déjà entendu parler du threading. Non pas pour savoir a quoi ça servait exactement mais parce que Maya a toujours eu du mal avec ce machin la. :gne:

Cela dit, ce billet est très général et n'aborde pas les problèmes de threading dans Maya. :cayMal: Juste les différences entre le module threading et multiprocessing.

Lire la suite...

mardi, 27 septembre 2011

Quickly retrieve vertex positions of a Maya mesh (English Translation)

recuperer_Position_Vertex_Rapidement_tn.pngIf you ever had to recover vertex positions of a mesh object, you probably crash yourself against the xform command and his legendary slowness. :baffed:

In this post, I purpose a piece of Python script using the Python Maya API that allows you to faster recover the list of all vertex positions of an object.

Primarily didactic, these codes may interest peoples who want to look a little more deeply how to use the API while having a concrete application. :laClasse:

Lire la suite...

dimanche, 31 juillet 2011

Project a mesh to another with Maya API (English Translation)

projection_mesh_api_tn.pngThis is the english translation of a tutorial I've done that will allow you to project a mesh to another.

This is something that can be useful but most is pretty "fun" to do (some would say everything is relative :seSentCon: ) and it's a good way to learn fundamentals of matrice operations having a both simple and concrete example.

Amateur of the API, this tutorial is for you!

Lire la suite...

dimanche, 26 juin 2011

Taille d'un fichier humainement compréhensible en Python

Python_logo_150.pngAujourd'hui je voudrais vous faire partager un minuscule morceau de code Python qui permet de faire, en cinq lignes, un print de la taille d'un fichier humainement compréhensible a partir d'une taille donné en octet.

La solution vient d'un certain Fred Cirera. Merci à lui! :bravo:

C'est diaboliquement simple mais c'est un soucis assez récurent quand on souhaite afficher des informations sur un fichier en script!

Lire la suite...

- page 1 de 3