|
Softimage|XSI Dominos Script
ou comment positionner et animer des dominos suivant un chemin
Dominos.v0.1.vbs - 5ko
Dominos_Test.scn - 207ko

Scénario
Certaines tâches qui requièrent le positionnement et l'animation d'un grand nombre d'objets similaires peuvent vite tourner au cauchemard si l'on entreprend de les faire
à la main.
Ici nous voulons positionner et animer un grand nombre de dominos - 1000, 10000 ou plus - suivant un chemin - ou dessin - sans pour autant devoir manipuler tous les dominos un par un.
Grâce au scripting, nous pouvons y arriver très facilement, tout en s'offrant le luxe de gérer interactivement l'écart de position entre les dominos, ainsi que le décalage temporel
de l'animation de chaque domino par rapport à son précédant.
De plus nous pouvons choisir une courbe représentant le chemin sur lequel les dominos seront placés.
Enfin, tous les dominos se réfèrent à un seul object source qui portera l'animation,
ce qui fait qu'en modifiant son animation, tous les dominos suivront automatiquement les modifications.
Note:
Pour l'instant ce script ne gère que la rotation en X de l'objet ( rotx ), puisqu'il a été spécifiquement prévu pour animer la chute - ou rotation - des dominos.
Installation du Script

Tout d'abord, ouvrez le 'Browser' et selectionnez le dossier où se trouve le script.

Passez du 'Toolbar Panel' à la 'Palette' et au 'Custom Script Panel'.

'Drag & Droppez' le fichier script directement sur le 'Custom Script Panel'. Le panneau 'Add Script Command' va apparaître.

Entrez le nom que vous voulez voir apparaître sur le bouton dans 'Command/Button Name' et le nom qui sera utilisé comme commande de script dans 'Command Name For Scripting'.

Le Script et son Bouton associé sont maintenant installés et prêts à être utilisés.
Tutorial

Créez le domino de telle sorte que sa face la plus large soit visible dans la vue de front ( pointant l'axe Z ).
Animez-le en rotx, en prenant en compte l'épaisseur du domino suivant une fois couché.

Créez une courbe représentant le chemin sur lequel seront distribués toutes les instances du domino.
Dessinnez la dans le plan XZ.
Sélectionnez le domino source ( votre objet animé ) puis cliquez sur le bouton 'Dominos' que nous venons d'ajouter.

SelectedObj: ( non éditable ) Vous rappelle le nom de l'objet sélectionné.
Copies: Le nombre d'instances de l'objet source que vous voulez obtenir sur la courbe.
Une fois votre choix effectué, cliquez sur 'OK'.
Sélectionnez ( 'Pickez' ) la courbe avec le bouton gauche de la souris.

Après un instant, dépendant du nombre de Copies choisi, vous obtenez vos dominos en position sur la courbe, espacés arbitrairement.

Que s'est-il passé ? En observant l'Explorer, on peut observer la structure crée.
Un NULL nommé "<nom de l'objet-source>_DominosInst" a été créé, c'est lui qui regroupe tous les éléments créés par le script.
Les instances du dominos sources ont été créées, chacune parentée à un NULL, eux-même parentés au NULL principal.
Les NULL de chaque instance ont été constaint par 'Path' sur la courbe, et chaque instance a reçu une expression qui lie sa rotation en X avec celle de l'objet source.
Pourquoi avoir créé un NULL par instance ? Parce que quand on contraint un objet sur une Path, avec l'option 'Tangeante', on ne peut plus contrôler leur rotation. Ici les instances sont juste parentées aux NULL et donc totalement libres de recevoir une animation/expression.
Une fois le setup créé, le panneau de contrôles customisés apparaît, vous permettant de faire les réglages nécessaires pour la mise au point de l'animation de l'ensemble des dominos.

Spacing: Règle l'espacement entre domino ( en % de Path )
Timing: Règle le décalage temporel ( en sec ) de l'animation de chaque domino par rapport à son précédant.
Vous n'avez plus qu'à affiner ces paramètres pour obtenir l'animation finale désirée.
Trucs et Astuces
Si vous devez créer 10000 dominos, il est évident que les réglages 'intéractifs' d'espacement et de timing vont un peu souffrir.
Dans ce cas, affinez votre animation avec une dizaine de dominos, notez les valeurs choisies de 'Spacing'
et de 'Timing', effacez la hierarchies, recommencez la duplication avec
cette fois le nombre élevé de 'Copies', puis recopiez les valeurs dans le nouveau panneau de contrôle.
En ce qui concerne l'animation elle même du domino source, vous constaterez probablement que les dominos vont s'interpénétrer successivement avant d'arriver en position de repos.
Pour éviter ce problème, il faut introduire une 'cassure' dans l'animation qui correspond à l'impact du domino sur le suivant, tel que montrée sur l'image suivante, que j'ai un peu exagérée:

N'hésitez pas à me faire part de tout commentaire, critique et suggestion.
[rev. 07/12/01 - d/m/y]
|