Blender - Animations
De Mystpedia.
Ce tutoriel est une traduction du tutoriel de Nadnerb Animations
Sommaire |
Introduction
Ce document n'a pas pour but d'expliquer comment réaliser des animations sous Blender. Il y a un tas d'autres supports pour ça. Ce n'est pas non plus réellement un tutoriel. Il a simplement pour but de vous donner les explications nécessaires pour introduire des animations dans un âge. Cela inclus, quels types d'animation l'outil de conversion en âge (ndt: PyPRP) reconnaît, comment il les interprète et comment les contrôler. - Nadnerb
Animations par défaut
PyPRP, par défaut, exportera toutes les IPO curves suivantes si elles sont présentes sur des objets : LocX, LocY, LocZ, RotX, RotY, RotZ, aussi bien que les R, G, B curves si elles sont présentes sur une lampe. Ces animations par défaut seront nommées d'après l'objet sur lequel elles seront trouvées et seront démarrées automatiquement et boucleront indéfiniment.
A l'inverse des plans d'animations, PyPRP fait la différence entre les IPO curves linéaires et celles de bezier sur les animations d'objet et les exportera comme telles. Pour changer le mode d'une courbe, appuyez sur [T] dans la fenêtre IPO curve editor.
Pour qu'un objet puisse avoir sa position ou son orientation modifiée, il DOIT être un Actor (ie, il doit avoir un CoordinateInterface). Prenez soin d'appuyer sur le bouton Actor dans l'onglet Object's logic. Si une animation est activée sur un objet qui n'est pas un Actor, le jeu est interrompu.
Les animations nommées
Vous pouvez nommer une animation, arrêter l'auto-démarrage ou le bouclage et contrôler le nombre de fois où l'animation sera jouée en ajoutant un script comme celui présenté plus bas. Animations est une liste d'animations nommées qui doivent être créées à partir d'une seule IPO curve.
Par exemple, la première animation peut être positionnée pour démarrer automatiquement, boucler et être active de 0 à 1 seconde. Cela répétera la première seconde de l'animation précisée. La seconde peut ne pas boucler et ne pas démarrer automatiquement et jouer les secondes 1 à 8. Cela peut être le reste de l'animation, qui peut être démarrée par une action dans le jeu en utilisant une message de commande d'animation. Il n'est pas recommandé de mettre plusieurs animations démarrant automatiquement sur le même objet.
<object>: animations: - name: <animation name> autostart: <[0 | 1]> loop: <[0 | 1]> loopstart: <start time in seconds> loopend: <end time in seconds> - name: <animation name> autostart: <[0 | 1]> loop: <[0 | 1]> loopstart: <start time in seconds> loopend: <end time in seconds>
time in seconds présume 30 frames par secondes.
Les messages animés
Pour démarrer une animation qui ne le fait pas automatiquement, vous devez envoyer une AnimCmdMsg. L'exemple pour une responder ci-dessous présente comment faire. Ce responder doit être activé par un logic script, comme ceux utilisés pour rendre un objet clickable.
<object>: logic: actions: - type: responder name: <responder name> responder: states: - cmds: - type: animcmdmsg params: receivers: - 006D:<name of animated object> animname: <name of animation> cmds: - continue waiton: -1 nextstate: 1 waittocmd: 0 curstate: 0 flags: - detecttrigger
Animation et Parenting
PyPRP exportera correctement les objets associés (ndt: parent) l'un à l'autre. Les objets “filsâ€â hériteront des transformations de leur “parentâ€â. Parenting peut être utilisé avec les animations, mais les animations ne supportent pas entièrement les méthodes de Blender de modification de taille d'objets associés. Si un objet parent ou enfant est re-dimensionné et s'il est animé, il va probablement se comporter incorrectement dans le jeu. Cependant, de simples objets animé, re-dimensionnés devraient fonctionner correctement.
Animations globales
Les animations globales sont utilisées par Cyan pour les animations jour/nuit. Une animation globale a un paramètre, une référence à une variable SDL. Cette variable contient l'heure actuelle. La longueur du jour est stockée dans le fichier de l'âge, et peut être positionnée dans le Book dans Blender. La longueur est en heures. Une animation globale sera étendue pour que sa durée totale soit égale à la longueur du jour et les états de l'animation seront contrôlés par la variable SDL d'heure courante. Vous pouvez utiliser une animation globale en utilisant un script équivalent à celui ci-dessous.
globale en utilisant un script équivalent à celui ci-dessous.
<object>: animations: - type: ageglobalanim name: <animation name> globalvar: <SDL var name>
Cela signifie que votre SDL STATEDESC (ndt: dans le fichier .sdl associé à l'âge) pour votre âge contient une ligne telle que :â€â¨
VAR AGETIMEOFDAY <SDL var name>[1]
Exemple d'âge
Dans le but de montrer ce qu'il est possible de faire en utilisant cette note sur les animations, voici un âge et le fichier blend correspond qui peuvent servir d'exemples. AnimatedDoor.age AnimatedDoor.blend