Steph3D ::.
11/03/2005, 23h05
Hello :-) bon voilà un domaine que je n'ai pas encor essayé, la programmation de la TimeLine qui pourrait par la suite permettre des perspectives très intéressantes :-)
Je me suis dit qu'essayer de reproduire le bouton "Record Position" de C4D sera un bon exercice pour comprendre le fonctionnement du système d'animation :poucehaut:
Par contre en cherchant longuement sur le WEB, je n'ai retrouvé absolument aucun exemple de code se rapportant à la TimeLine :cry2: :cry2: :cry2:
Quelqu'un a déjà essayé*? :?
Je suppose qu'il faut d'abord créé un track de type "PositionTrack", ensuite de créé dessus une séquence, puis de récuperé la frame de temps pour faire un InsertKey et y inscrire les Positions(locales) X puis Y et pour finir Z ( faut donc faire 3 tracks/sequences et clés)
Voila un début d'idée de code, mais qui ne marche pas vraiment :oops:
ça créé deja un Track (C'est mieu que rien :mrgreen: ) qui à mon avis n'a du track Position . X que le non :roll:
Ma définitions de séquence de 0 à 90 ne marche pas du tout, et pour les Keys, je ne sais pas encor :?
ScanTest(Tmp,Type) {
var exist=FALSE;
while (Tmp)
{
if (instanceof(Tmp,Type)) return exist=TRUE;
if (!exist) Tmp=Tmp->GetNext(); else Tmp=NULL;
}
}
main(doc,op)
{
var t = doc->GetTime();
var sec = t->GetSecond();
var frame = t->GetFrame(doc->GetFps());
///////////////////////////////////////
var test=FALSE;
var Track = op->GetFirstTrack();
test=ScanTest(Track,PositionTrack);
//////////////////////////////////////
if (!test)
{
Track = new(PositionTrack);
op->InsertTrack(Track,NULL);
Track->SetName("Position . X");
///////////////////////////////////////
var seqence = Track->GetFirstSequence();
test=FALSE;
test=ScanTest(seqence,PositionSequence);
///////////////////////////////////////
if(!test) {
seqence = new(PositionSequence);
var seqence_c=seqence->GetContainer();
seqence_c ->SetData(ID_BASESEQ_T1,0);
seqence_c ->SetData(ID_BASESEQ_T2,90);
seqence->SetContainer(seqence_c);
Track->InsertSequence(seqence);
}}
}
Je me suis dit qu'essayer de reproduire le bouton "Record Position" de C4D sera un bon exercice pour comprendre le fonctionnement du système d'animation :poucehaut:
Par contre en cherchant longuement sur le WEB, je n'ai retrouvé absolument aucun exemple de code se rapportant à la TimeLine :cry2: :cry2: :cry2:
Quelqu'un a déjà essayé*? :?
Je suppose qu'il faut d'abord créé un track de type "PositionTrack", ensuite de créé dessus une séquence, puis de récuperé la frame de temps pour faire un InsertKey et y inscrire les Positions(locales) X puis Y et pour finir Z ( faut donc faire 3 tracks/sequences et clés)
Voila un début d'idée de code, mais qui ne marche pas vraiment :oops:
ça créé deja un Track (C'est mieu que rien :mrgreen: ) qui à mon avis n'a du track Position . X que le non :roll:
Ma définitions de séquence de 0 à 90 ne marche pas du tout, et pour les Keys, je ne sais pas encor :?
ScanTest(Tmp,Type) {
var exist=FALSE;
while (Tmp)
{
if (instanceof(Tmp,Type)) return exist=TRUE;
if (!exist) Tmp=Tmp->GetNext(); else Tmp=NULL;
}
}
main(doc,op)
{
var t = doc->GetTime();
var sec = t->GetSecond();
var frame = t->GetFrame(doc->GetFps());
///////////////////////////////////////
var test=FALSE;
var Track = op->GetFirstTrack();
test=ScanTest(Track,PositionTrack);
//////////////////////////////////////
if (!test)
{
Track = new(PositionTrack);
op->InsertTrack(Track,NULL);
Track->SetName("Position . X");
///////////////////////////////////////
var seqence = Track->GetFirstSequence();
test=FALSE;
test=ScanTest(seqence,PositionSequence);
///////////////////////////////////////
if(!test) {
seqence = new(PositionSequence);
var seqence_c=seqence->GetContainer();
seqence_c ->SetData(ID_BASESEQ_T1,0);
seqence_c ->SetData(ID_BASESEQ_T2,90);
seqence->SetContainer(seqence_c);
Track->InsertSequence(seqence);
}}
}