Script

Programme court écrit en code (Python, MEL, MAXScript...) qui automatise des tâches ou ajoute des fonctionnalités à un logiciel 3D.

"Un sol complet généré automatiquement par script Python : géométrie, texture et éclairage inclus.

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

TypeComplexitéInterfaceUsage
ScriptSimpleAucune ou minimaleTâche ponctuelle
MacroTrès simpleAucuneEnregistrement d’actions
Add-onComplexeComplète (boutons, menus)Outil permanent

Un script peut devenir un add-on si on lui ajoute une interface utilisateur.

Langages par logiciel

LogicielLangage principalAutres langages
BlenderPython
MayaPythonMEL
3ds MaxMAXScriptPython
HoudiniVEXPython
Cinema 4DPythonC++ (plugins)
ZBrushZScript
NukePythonTCL
After EffectsExtendScriptJavaScript

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

ActionCode
Objet actifbpy.context.active_object
Tous les objetsbpy.data.objects
Objets sélectionnésbpy.context.selected_objects
Créer un cubebpy.ops.mesh.primitive_cube_add()
Supprimer sélectionbpy.ops.object.delete()
Appliquer scalebpy.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 ?

  1. Apprenez les bases de Python (gratuit en ligne)
  2. Explorez l’API de votre logiciel
  3. Copiez et modifiez des scripts existants
  4. 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