Blog de Frédéric Bonometti

ANIMATION, RIGS et SCRIPTS sur Softimage

SHOWREEL 2013

Posted by Frédéric Bonometti on 18 avril 2013

Voici ma bande démo 2013 ou plutôt « mes » bandes démos présentant des exemples de mes travaux.

Une courte pour les gens pressés:

et la version complète pour plus de détails notamment sur mes travaux en développement Pipeline (pensez à la regarder en HD).

Pour les francophones qui ne comprennent pas l’anglais, la traduction des commentaires est là:
http://www.fre3d.fr/bonus2013.html

Et j’en profite pour annoncer que suite à la liquidation du studio Action Synthèse, je suis disponible à mettre mon expérience au service de ceux qui le voudront.

Posted in DIVERS | Tagged: , , , , , , | No Comments »

Hierarchical (Softimage) Scaling (complément)

Posted by Frédéric Bonometti on 15 juin 2012

Cet article est un complément d’un article précédent traitant du Hierarchy Softimage Scaling que vous trouverez ici.

Comme expliquer dans l’article précédent, cette option, si on la désactive, permet à un enfant de subir un scale dans la même direction que son parent. J’y reviens ici car combiner une rotation et un scale sur le même objet peut avoir des effets indésirables.

Prenez un objet quelconque, désactivez le Hierarchy Softimage Scaling, animez le scale sur un axe (avec Constant Volum Scaling actif pour accentuer l’allongement mais ce n’est pas obligé) puis animez la rotation de l’objet. Vous pouvez voir quelque chose comme sur cette image.

Le scale semble resté aligné à l’axe parent et non à l’axe local. Cela provoque une déformation généralement non souhaitée. En réalité, ce phénomène n’arrive que si vous manipuler la rotation en Local. Si vous le faites en Add, Global, View ou directement en animant le paramètre, l’objet tourne sans se déformer.

Dans ce cas, vous me direz qu’il n’y a pas de problème puisqu’il suffit de dire aux animateurs de ne jamais animer les rotations en Local. Mais vous savez ce que c’est, l’erreur est dans la nature humaine et tôt ou tard, un animateur fera l’erreur. Comment alors parer à ce « défaut » ?

Si on regarde les paramètres de Scaling, on voit que la rotation en Local change les paramètres Scaling Orientation (Shear).

Et bien il suffit simplement de bloquer ces paramètres à zéro pour que la déformation non souhaitée n’apparaisse pas.
Mais, il ne faut pas utiliser les locks qui seront sans effet dans ce genre de manipulation.
Pour les bloquer efficacement, il suffit d’ajouter une expression égale à zéro sur les paramètres. La rotation en Local sera permise et les effets des scales parent s’appliqueront correctement sur l’objet sans effet secondaire.

Posted in RIG | Tagged: , , , , , | No Comments »

Développer un menu contextuel

Posted by Frédéric Bonometti on 25 mai 2012

Comment ajouter une commande dans un menu contextuel (clic droit de la souris) qui fasse référence aux objets en liaison avec ce menu.

Ajouter une commande dans un menu, c’est assez simple pour ceux qui sont familiers avec les plug-ins. Il suffit de définir dans la fonction XSILoadPlugin, la ligne suivante pour définir son menu:

in_reg.RegisterMenu(constants.siMenuSEModelContextID,"nomDuMenu",0,0)

Le 1er argument est l’endroit où va apparaître la commande. Ici, il s’agit du menu contextuel des Models. Référez-vous à  la documentation pour avoir la liste complète des menus: http://softimage.wiki.softimage.com/sdkdocs/siMenuAnchorPoints.htm

Au besoin, la doc est là, plutôt bien renseignée: http://softimage.wiki.softimage.com/sdkdocs/cus_menus.htm

Mais voilà, quand on fait apparaître le menu contextuel dans l’Explorer, il fait référence à un ou plusieurs objets qui ne sont pas forcément sélectionnés.
Comment utiliser cette liste d’objets dans notre fonction ?

Il faut savoir qu’avec une commande du menu, on peut lancer:

- soit une Commande avec oMenu.AddCommandItem()

- soit un Callback avec oMenu.AddCallbackItem()

Il y a plusieurs différences entre les deux mais en gros, une Commande est indépendante du bouton du menu (elle peut être lancée avec un raccourci ou depuis un script par exemple) alors que le Callback n’existe qu’au travers le bouton. Et c’est ce dernier qu’il faut utiliser pour arriver à nos fins. (Libre à vous d’appeler ensuite une Commande avec le  Callback si nécessaire).

Dans la fonction d’initiation de notre Menu, on définira le Callback de cette manière (c’est du python):

def nomMenu_Init( in_ctxt ):
    oMenu = in_ctxt.Source
    oMenu.AddCallbackItem("texte affiché dans le menu","nomFonctionCallBack")
    return 1

On écrira ensuite la fonction du Callback de la manière suivante:

def nomFonctionCallBack(in_ctxt):
    objs = in_ctxt.getAttribute("Target") # Retourne la XSICollection des objets concernés
    for obj in objs:
        Application.LogMessage(obj.Name) # par exemple
    # Petit bonus au passage
    bouton = in_ctxt.Source # Renvoit le menuItem correspondant
    Application.LogMessage(bouton) # Ecrit le texte du menu

Posted in SCRIPTS | Tagged: , , , , , , | No Comments »

L’essentiel des outils d’animation

Posted by Frédéric Bonometti on 5 février 2012

Voici un tutoriel « rapide » destiné principalement aux animateurs ne connaissant pas encore Softimage

Il fait le tour des outils et des manipulations de base permettant la réalisation d’une animation de A à Z.

Les points abordés sont :
- Description de l’organisation générale de l’interface
- Préparation d’une scène
- Navigation dans les vues 3D
- Manipulation d’un personnage
- Edition des courbes d’animation
- Création de contraintes animées
- Calculer une preview (vidéo)
- Ajouter une bande son

http://www.vimeo.com/36224192

Posted in ANIMATION | 1 Comment »

Paramètre fourre-tout dans un CPS

Posted by Frédéric Bonometti on 28 décembre 2011

Voici une petite astuce simple et pratique pour stocker des données de manière souple dans une scène ou un model en python.

Il est très simple de créer un paramètre dans une propriété (CPS) et d’y stocker des données. Mais il peut arriver qu’on veuille stocker une liste de données (tableau) ou de paramètres facilement modulable.

Avec python, il suffit de créer un paramètre de type String et d’y stocker le contenu d’une variable quelqu’elle soit (list, tupple, dict, etc.) en la convertissant en String. Pour la récupérer, il suffit de l’évaluer avec eval().

Exemple:
Dans un CPS, on crée un paramètre de type String appelé « datas ».
Nous voulons y enregistrer la série de paramètres suivante:
- shot=’001′
- duration=125
- characters=(‘riri’, ‘fifi’, ‘loulou’)
Voici un exemple de code:

datas = {}
datas["shot"] = "001"
datas["duration"] = 125
datas["characters"] = ("riri", "fifi", "loulou")
cps.Parameters("datas").Value = str(datas)
# où cps = l'objet représentant la propriété

Et pour relire les données, c’est l’inverse:

datas = eval(cps.Parameters("datas").Value)
shot = datas["shot"]
duration = datas["duration"]
characters = datas["characters"]

C’est une idée simple mais qui peut simplifier la gestion des données dans une scène 3D en tout cas dans certains contextes.

Posted in SCRIPTS | Tagged: , , , , , | 1 Comment »

 
Network :
ico_magazine
Magazine
ico_boutique
Boutique
ico_cgjobs
Portail Emploi
ico_upload
Hébergement d'images
ico_blog
Blogs
progiss
Progiss
ico_social
Social