Dan's Orbiter page

Orbiter Francophone => Création Orbiter Francophone => Topic started by: NLS le pingouin on 12 October 2009, 09:17:09

Title: Animer des panneaux solaires
Post by: NLS le pingouin on 12 October 2009, 09:17:09
Bonjours,
Je me galère un peu pour animer des panneaux solaires avec la SDK d'orbiter. J'ai réussi à faire des animations, mais dans le
cas d'un déploiement de panneaux solaires, le centre de rotation de chaque panneaux se déplace avec leur translation...
Pourriez-vous m'indiquer des pistes pour passer ce problème?
Merci
Title: Re: Animer des panneaux solaires
Post by: MartySpaceLines on 12 October 2009, 11:08:25
Pour ça, il faut utiliser un truc qui s'appelle "Parent-Child Attachment". Y a un exemple dans le Programmer's Guide, les
samples de la SDK,  et voici un extrait de mon code pour Venus Express:

Code: [Select]
//Anim panneaux solaires (GAUCHE)
static UINT uArrayLeft1 = 11; // No du groupe du Mesh
// Ici, entre les coordonnées en fonction du mesh de départ (la plupart du temps ac les panneaux rentrés)
ArrayLeft1 = new MGROUP_ROTATE (0, &uArrayLeft1, 1, _V(-0.8376536,0,0.3754845), _V(0,1,0), (float)(RAD*90));
anim_ArrayLeft1 = CreateAnimation (0.0);
parentLeft = AddAnimationComponent (anim_arr, 0, 0.5, ArrayLeft1);

static UINT uArrayLeft2 = 12;
ArrayLeft2 = new MGROUP_ROTATE (0, &uArrayLeft2, 1, _V(-0.8532039,0,-0.2018223), _V(0,-1,0), (float)(RAD*180));
anim_ArrayLeft2 = CreateAnimation (0.0);
parentLeft = AddAnimationComponent (anim_arr, 0, 0.5, ArrayLeft2, parentLeft);

static UINT uArrayLeft3 = 5;
ArrayLeft3 = new MGROUP_ROTATE (0, &uArrayLeft3, 1, _V(-0.881386,0,0.5572292), _V(0,1,0), (float)(RAD*180));
anim_ArrayLeft3 = CreateAnimation (0.0);
parentLeft = AddAnimationComponent (anim_arr, 0, 0.5, ArrayLeft3, parentLeft);

Voilà...j'espère que ça t'aidera!