A CG nerd tale

Dorian Fevrier's blog

Je le publie où pour qu’il soit au bon endroit? - Partout.

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

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 terme 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, 17 juillet 2011

Petit script Maya pour utiliser les objectID par particule

code_particle_objectid_tn.pngEt encore un billet express car je fais rarement des particules et j'en avais assez de devoir chercher, à chaque fois, comment créer un système de particule qui instancie des objets aléatoirement.

Je me suis donc fait un bout de code à lancer que je partage avec vous en espérant qu'il fera gagner du temps à certains. :hehe:

Enjoy!

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