Animation SDL

plates-formes

Windows

Description

Une animation SDL est un langage de description de scène avec une section supplémentaire pour décrire le modèle de hiérarchies. Une animation SDL fichier contient deux sections, définition et hiérarchie.

Remarque :

La hiérarchie section peuvent être omis. Dans ce cas, l'animation SDL fichier contient uniquement une bibliothèque des courbes d'animation (ou actions).

Dans la section de la définition, vous pouvez définir la description des courbes (ou actions), comme vous le faites dans SDL standard. La syntaxe pour les actions est la même pour l'animation SDL SDL et standard.

Dans la hiérarchie, vous décrivez la façon dont les courbes d'animation dans la section de la définition sont appliquées à l'objet de la hiérarchie.

Exemple 1

HIERARCHY  
{    <----- Picked object 
Apply animation to picked object. 
{    <----- A child of the picked object. 
Apply animation to child of picked object. 
{    <----- A child of a child of the picked object. 
Apply animation to child of a child of picked object. 
} 
} 
{   <----- Another child of the picked object. 
Apply animation to other child picked object. 
} 
}

Si un objet n'a aucune animation, mais un descendant, vous devez toujours spécifier les contreventements comme place-holder pour l'objet, mais omettez les instructions d'appliquer une animation. Il est également nécessaire pour les enfants. Si la coupe la plus à gauche enfant de même parent est unanimated, mais celle à sa droite est animé, spécifiez un vide comme une paire d'accolades place-holder enfant pour la plus à gauche.

Il existe deux instructions dans la hiérarchie section appliquer l'animation aux objets. Le premier est le type Instruction, ce qui indique le type d'objet qui recevra l'animation.

Indiquer le type d'objet

La forme générale de la déclaration de type :

type “animatable item type name” ( <additional information> );

Exemples de "animable nom du type d'élément" sont DAG noeud, de caméra, de lumière, Ombrage, surface CV, courbe CV.

Si la courbe est une partie d'une face, deux valeurs spécifiées sont séparés par une virgule. La première valeur définit la courbe de la face et la seconde valeur spécifie le CV sur la courbe. Si, par exemple, une face est constitué de trois courbes, puis reportez-vous à la quatrième CV sur la deuxième courbe de la face, le type instruction s'écrit comme suit :

" Type " Courbe CV (2, 4) ;

L'application de l'animation

Les instructions ci-dessous indiquent comment les instructions de l'animation appliquée à chaque élément de l'animation des paramètres. Ces instructions sont appelées canal, puis spécifiez la manière dont l'animation utilise le paramètre des actions à partir de la section de la définition.

La forme générale de l'instruction est :

channel “channel name” (action_name [extract axis] (action_name...));

Chaque type d'animation a sa propre jeu d'animation de noms de paramètres, qui peut être affichée dans la fenêtre de contrôle (reportez-vous à la rubrique Animation > Editeurs graphiques > param contrôle pour plus de détails). Par exemple, DAG noeuds translation Translation X, Y, Z, l'échelle et la visibilité. Ces noms qui apparaissent dans la fenêtre de commande peut être utilisé en tant que nom du canal.

Remarque :

Ne pas affecter un canal à un élément qui n'est pas animé dans ce paramètre. En outre, veillez à ne pas affecter un canal qui ne fait pas partie de l'animation actuelle de type d'élément. Par exemple, l'animation SDL ne permet pas de distinction entre les différents types de lumières, de sorte qu'il est possible de lire une cote d'envergure canal sur une lumière ponctuelle, mais qui génère une erreur.

A l'intérieur des parenthèses du canal instruction, vous spécifiez la liste d'actions qui constituent le canal. Si l'action est une trajectoire de mouvement, vous devez indiquer quel axe de la courbe NURBS. Les actions supplémentaires qui sont à l'intérieur des parenthèses servent timewarps sur la courbe d'origine.

Exemple 2

L'exemple ci-dessous est un fichier d'animation SDL un cylindre.

DEFINITION 	/* the 3-D NURBS curve used by the motion path action */ 	
												curve curve#2 (
																	 		degree = 3, 		
																				knots = (0.0, 0.0, 0.0, 1.0, 1.0 , 1.0 ), 		
																				cvs = ( 			
																												cv( (0.0, 0.0, 0.0),1.0), 			
																												cv( (3.0, 3.0, 3.0),1.0), 			
																												cv( (-4.0, 2.0, -6.0),1.0), 			
																												cv( (-3.0, 2.0, 3.0),1.0) ) 	
												); 	
												/* a motion path action */ 	
												motion_curve motion_path ( curve#2, in = PRE_CONSTANT, out = POST_CONSTANT );  	

												/* several parameter curve actions */ 	
												parameter_curve param_curve.Timing ( in = PRE_LINEAR, out = POST_LINEAR, cvs = ( 		
																		parameter_vertex(1.0,0.0 , TAN_SMOOTH, ( -0.27852, -0.96043 ), TAN_SMOOTH, (0.27852,0.96043) ), 		
																		parameter_vertex(30.0,30.0, TAN_SMOOTH, (-0.27852,-0.96043 ), TAN_SMOOTH, (0.27852,0.96043) ) 	
												) );  	

												parameter_curve param_curve.X_Scale ( in = PRE_CONSTANT, out = POST_CONSTANT, cvs = ( 		
																		parameter_vertex(1.0 , 1.0 , TAN_SMOOTH, (1.0 ,0.0), TAN_SMOOTH, (1.0 , 0.0) ), 		
																		parameter_vertex( 30.0 ,   4.0 , TAN_SMOOTH, (1.0 ,0.0), TAN_SMOOTH, (1.0 , 0.0) ) 	
												) );  	

												parameter_curve param_curve.Z_Rotate ( in = PRE_CONSTANT, out = POST_CONSTANT, cvs = ( 		
																		parameter_vertex(1.0 , 0.0, TAN_SMOOTH, (-1.0 , 0.0), TAN_SMOOTH, (1.0 , 0.0) ), 		
																		parameter_vertex(30.0 ,360.0 , TAN_SMOOTH, (-1.0 , 0.0 ), TAN_SMOOTH, (1.0, 0.0) ) 	
												) );  	

												parameter_curve timewarp ( in = PRE_IDENTITY, out = POST_IDENTITY, cvs = ( 		
																		parameter_vertex(1.0 , 1.0, TAN_SMOOTH, (-0.70711,-0.70711 ), TAN_SMOOTH, (0.70711,0.70711) ), 		
																		parameter_vertex(30.0 ,30.0 ,TAN_SMOOTH, (-0.70711,-0.70711 ),TAN_SMOOTH, (0.70711,0.70711) ) 	 
												) );  	

												parameter_curve param_curve.X_Position ( in = PRE_CONSTANT, out = POST_CONSTANT, cvs = ( 		
																		parameter_vertex(1.0 , -0.2612 , TAN_SMOOTH, (-1.0 ,0.0), TAN_SMOOTH, (-1.0 ,0.0) ), 		
																		parameter_vertex( 30.0 , -0.18593, TAN_SMOOTH, (-1.0 ,0.0), TAN_SMOOTH, (-1.0 ,0.0) ) 	
												) );  	

												parameter_curve param_curve.Y_Position ( in = PRE_CONSTANT, out = POST_CONSTANT, cvs = ( 		
																		parameter_vertex(1.0 ,0.2612 , TAN_SMOOTH, (-1.0 ,0.0 ), TAN_SMOOTH, (-1.0 ,0.0) ), 		
																		parameter_vertex( 30.0 ,   0.58722, TAN_SMOOTH, ( -1.0    ,   0.0     ), TAN_SMOOTH, (-1.0 ,0.0)) 	 
												) );  	

												parameter_curve param_curve.Z_Position ( in = PRE_CONSTANT, out = POST_CONSTANT, cvs = ( 		
																		parameter_vertex(   1.0 ,   0.5 , TAN_SMOOTH, (  -1.0    ,   0.0     ), TAN_SMOOTH, (  1.0    ,   0.0    ) ), 		
																		parameter_vertex( 30.0,   0.90137, TAN_SMOOTH, ( -1.0   ,   0.0     ), TAN_SMOOTH, (-1.0 ,0.0)) 	
												) );  

HIERARCHY 	
								{ 		
												type "Dag Node" ( cylinder );  		

												/* The cylinder is moved along a motion path.   */ 		
												/* Each channel is extracted from a motion path */ 		
												/* with one timing curve modifying all three.   */ 		
												channel "X Translate" ( motion_path [X] ( param_curve.Timing )); 		
												channel "Y Translate" ( motion_path [Y] ( param_curve.Timing )); 		
												channel "Z Translate" ( motion_path [Z] ( param_curve.Timing ));  		

												/* The width of the cylinder is also animated.  */ 		
												channel "X Scale" ( param_curve.X_Scale ); 	
								{ 		
												/* This is the first child of the top level */ 		
												/* of the cylinder. It spins around the Z   */ 		
												/* axis. A timewarp has been applied.       */ 		
												type "Dag Node" ( cyl_body ); 		
												channel "Z Rotate" ( param_curve.Z_Rotate ( timewarp )); 	
								} 	
								{ 		
												/* Cap A of the cylinder is not animated,   */ 		
												/* nor are any of its CVs, but these braces */ 		
												/* are necessary to maintain to maintain the*/ 		
												/* hierarchy structure.                     */ 		
												/* If these braces were omitted Cap B's     */ 		
												/* animation would be read onto Cap A.      */ 	
								} 	
								{ 		
												/* Cap B is not animated but one of its cvs */ 		
												/* is.                                      */ 		
												{ 			
																			type "Surface CV" ( 2, 4 ); 			
																			/* Surface CV u = 2, v = 4 is animated. */ 			
																			channel "X Position" ( param_curve.X_Position 
); 			
												channel "Y Position" ( param_curve.Y_Position 
); 			
													channel "Z Position" ( param_curve.Z_Position 
); 	
							} 
}