See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: [A l'aide] Animation C++ comment dire... récalcitrante!  (Read 1703 times)

0 Members and 1 Guest are viewing this topic.

Offline MartySpaceLines

  • Legend
  • ******
  • Posts: 1096
  • Karma: 0
10 June 2010, 18:15:02
Hello!

Alors je vous fais un petit topo de la situation. Tout d'abord, une image de la bête:



Certains l'auront reconnu, il s'agit du module "Retro" de Gemini. Il sert de lien entre le module de service et la capsule, et abrite les rétrofusées de désorbitation.
Ce module est connecté à la capsule, outre par des boulons explosifs, par une multitude de lignes électriques, d'oxygène etc., passant par quatre connecteurs (entourés en rouge, avec l'ID du groupe dans le mesh).
Lors du largage, ces connecteurs - qui à la base épousaient la forme de cône de la capsule, s'écartent en pétales pour laisser partir la capsule (comme la coiffe du LEM sur une Saturn 5). J'aimerais donc modéliser ceci.

Cela fait donc une animation "instantanée" passant directement de l'état "fermé" à "ouvert".

Mais ceci amène plusieurs problèmes:
- Les connecteurs tournent toujours vers le centre du vaisseau, et toujours du même angle, peu importe le signe et la valeur de leur angle de rotation dans le code.
- Si je fais l'anim plusieurs fois, ils rapetissent littéralement, jusqu'à n'être que de petites lignes, comme ici:
 


**L'animation ne s'est appliquée ici qu'aux deux connecteurs du bas**

Je sais que les connecteurs rapetissent bien et ne "rentrent" pas dans les "murs" du vaisseau. J'ai vérifié avec MeshDebug.

Voici mon code (il se trouve dans clbkSetClassCaps):
Code: [Select]
static UINT i1 = 9;
static MGROUP_ROTATE RetroConnector1 (mesh_Retro, &i1, 1, _V(-1.098,0.316,0.323), _V(0.077,0.308,0.0), (float) (180 * RAD));

static UINT i2 = 10;
static MGROUP_ROTATE RetroConnector2 (mesh_Retro, &i2, 1, _V(-0.82,-0.80,0.323), _V(-0.122,0.159,0.0), (float) (120 * RAD));

static UINT i3 = 11;
static MGROUP_ROTATE RetroConnector3 (mesh_Retro, &i3, 1, _V(1.021,0.523,0.323), _V(0.077,-0.204,0.0), (float) (-90 * RAD));

static UINT i4 = 12;
static MGROUP_ROTATE RetroConnector4 (mesh_Retro, &i4, 1, _V(0.82,-0.80,0.323), _V(0.122,0.159,0.0), (float) (-120 * RAD));

anim_RetroSep = CreateAnimation (0.0);
AddAnimationComponent (anim_RetroSep, 0, 1, &RetroConnector1);
AddAnimationComponent (anim_RetroSep, 0, 1, &RetroConnector2);
AddAnimationComponent (anim_RetroSep, 0, 1, &RetroConnector3);
AddAnimationComponent (anim_RetroSep, 0, 1, &RetroConnector4);

SetAnimation (anim_RetroSep, 1.0);

Cela met-il la puce à l'oreille de qqn?
Jespère que mes explications étaient claires. Merci d'avance!


@++

MSL  


Offline MartySpaceLines

  • Legend
  • ******
  • Posts: 1096
  • Karma: 0
Reply #1 - 13 June 2010, 12:35:21
Apparemment, ce truc ne dit rien à presonne :badsmile:

Mais n'hésitez tout de même pas à le dire! Comme ça au moins je saurai ;)

Mais c'est pas une anim "vitale", donc c'est pas trop grave!


@++

MSL  


Offline Papyref

  • Legend
  • ******
  • Posts: 5341
  • Country: France fr
  • Karma: 341
  • Je suis dans la Lune ne pas me déranger
Reply #2 - 13 June 2010, 19:12:14
Pourquoi tes angles de rotation n'ont pas la même valeur au signe prêt alors que la disposition semble symétrique ?
Vérifie tes axes de rotation qui ont des directions qui semblent bizarres ainsi que les corrdonnées des points de rotation.
Il est bien de faire d'abord marcher correctement un verrou et ensuite il est plus facile de déduire les valeurs pour les autres.

Un truc que j'utilise est de faire d'abord l'animation en fichier ini ce qui est plus facile pour faire la mise au point, et ensuite je transpose en C++.

Bonne chance !

:sage: Papyref


Offline MartySpaceLines

  • Legend
  • ******
  • Posts: 1096
  • Karma: 0
Reply #3 - 16 June 2010, 20:32:25
Yes, merci! Je vais voir ces prochains jours. Actuellement, je me penche sur Lua pour faire des autopilotes...
Et c'est pas de la tarte, le concept est vachement déroutant par rapport au C++


« Last Edit: 16 June 2010, 20:32:25 by MartySpaceLines »
@++

MSL