Un Script est un petit programme écrit en code qui automatise des tâches dans un logiciel 3D. Contrairement à un Add-on Add-on Extension logicielle ajoutant des fonctionnalités à un logiciel 3D. Permet d'automatiser des tâches, ajouter des outils ou intégrer des services externes. Voir la définition complète → complet avec interface, un script est généralement plus simple : quelques lignes de code exécutées pour accomplir une action précise. C’est l’outil de productivité ultime pour les tâches répétitives.
Le principe
Imaginez devoir renommer 200 objets, exporter 50 meshes un par un, ou appliquer la même transformation à des centaines d’éléments. À la main : des heures. Avec un script : quelques secondes.
Un script peut :
- Automatiser des tâches répétitives
- Créer des outils personnalisés
- Modifier des objets en masse (batch processing)
- Générer de la géométrie procédurale
- Connecter des logiciels entre eux
- Exporter/importer des données custom
Script vs Add-on vs Macro
| Type | Complexité | Interface | Usage |
|---|---|---|---|
| Script | Simple | Aucune ou minimale | Tâche ponctuelle |
| Macro | Très simple | Aucune | Enregistrement d’actions |
| Add-on | Complexe | Complète (boutons, menus) | Outil permanent |
Un script peut devenir un add-on si on lui ajoute une interface utilisateur.
Langages par logiciel
| Logiciel | Langage principal | Autres langages |
|---|---|---|
| Blender | Python | — |
| Maya | Python | MEL |
| 3ds Max | MAXScript | Python |
| Houdini | VEX | Python |
| Cinema 4D | Python | C++ (plugins) |
| ZBrush | ZScript | — |
| Nuke | Python | TCL |
| After Effects | ExtendScript | JavaScript |
Python domine l’industrie 3D. L’apprendre ouvre les portes de la plupart des logiciels.
Exemples concrets d’utilisation
Renommer des objets en masse
Renommer 100 objets « Cube.001 », « Cube.002″… en « Building_A_01 », « Building_A_02″…
Exporter par lots (batch export)
Exporter chaque objet sélectionné en fichier FBX FBX Format de fichier 3D propriétaire d'Autodesk, standard de l'industrie pour échanger modèles, animations et rigs entre logiciels comme Blender, Maya, Unreal et Unity. Voir la définition complète → séparé automatiquement.
Nettoyage de scène
Supprimer tous les matériaux non utilisés, purger les données orphelines.
Transformation en masse
Appliquer une rotation de 90° à tous les objets dont le nom contient « props ».
Génération procédurale
Créer 50 arbres avec des variations aléatoires de taille et rotation.
Focus Blender
Où écrire des scripts
Console Python
- Accès : Shift + F4 ou menu Editor Type → Python Console
- Pour tester des commandes rapidement
- Une ligne à la fois
Text Editor
- Accès : Shift + F11 ou menu Editor Type → Text Editor
- Pour écrire des scripts complets
- Exécution : bouton Run Script ou Alt + P
Structure d’un script Blender basique
python
import bpy
# Sélectionner tous les meshes
for obj in bpy.data.objects:
if obj.type == 'MESH':
obj.select_set(True)
print("Tous les meshes sélectionnés !")
Commandes utiles
| Action | Code |
|---|---|
| Objet actif | bpy.context.active_object |
| Tous les objets | bpy.data.objects |
| Objets sélectionnés | bpy.context.selected_objects |
| Créer un cube | bpy.ops.mesh.primitive_cube_add() |
| Supprimer sélection | bpy.ops.object.delete() |
| Appliquer scale | bpy.ops.object.transform_apply(scale=True) |
Exemple : renommer des objets
python
import bpy
for i, obj in enumerate(bpy.context.selected_objects):
obj.name = f"Asset_{i+1:03d}"
Résultat : les objets sélectionnés deviennent « Asset_001 », « Asset_002 », etc.
Exemple : export batch FBX
python
import bpy
import os
folder = "C:/Exports/"
for obj in bpy.context.selected_objects:
bpy.ops.object.select_all(action='DESELECT')
obj.select_set(True)
filepath = os.path.join(folder, obj.name + ".fbx")
bpy.ops.export_scene.fbx(filepath=filepath, use_selection=True)
Focus Maya
Où écrire des scripts
- Script Editor : Windows → General Editors → Script Editor
- Onglets MEL et Python disponibles
Exemple MEL
mel
// Sélectionner tous les meshes
select -all -hierarchy;
filterExpand -selectionMask 12;
Exemple Python Maya
python
import maya.cmds as cmds
# Lister tous les meshes
meshes = cmds.ls(type='mesh')
print(meshes)
Focus Houdini
Houdini utilise VEX pour la manipulation de géométrie et Python pour l’interface et le pipeline.
Exemple VEX (dans un Wrangle)
c
// Déplacer les points vers le haut
@P.y += 1.0;
Exemple Python Houdini
python
import hou
# Créer une sphère
obj = hou.node('/obj')
geo = obj.createNode('geo', 'ma_sphere')
sphere = geo.createNode('sphere')
Expressions et Drivers
Les expressions sont des mini-scripts qui animent des paramètres automatiquement.
Blender : Drivers
Lier la rotation d’un objet à la position d’un autre via une formule mathématique.
Maya : Expressions
mel
// Rotation automatique
pCube1.rotateY = time * 50;
After Effects : Expressions
javascript
// Boucle infinie
loopOut("cycle");
Apprendre le scripting 3D
Par où commencer ?
- Apprenez les bases de Python (gratuit en ligne)
- Explorez l’API de votre logiciel
- Copiez et modifiez des scripts existants
- Automatisez vos propres tâches répétitives
Ressources
- Documentation officielle de chaque logiciel
- Blender : Blender Python API
- YouTube : tutoriels scripting 3D
- Forums : Blender Artists, CGSociety, Polycount
Bonnes pratiques
- Commentez votre code
- Testez sur une copie de votre fichier
- Sauvegardez avant d’exécuter un script destructif
- Nommez vos scripts de façon descriptive
- Gardez une bibliothèque de scripts utiles
Problèmes courants
« Module not found »
Le logiciel ne trouve pas une bibliothèque. Vérifiez l’installation ou les chemins.
« Syntax error »
Erreur de frappe dans le code. Vérifiez les parenthèses, guillemets, indentation.
Le script ne fait rien
Aucun objet sélectionné, mauvais mode (Object vs Edit), ou conditions non remplies.
Crash du logiciel
Script trop lourd ou boucle infinie. Testez sur peu d’objets d’abord.
Pour aller plus loin
- Blender Python API (ouvre dans un nouvel onglet)
- Maya Python Command Reference (ouvre dans un nouvel onglet)
- Houdini VEX Reference (ouvre dans un nouvel onglet)