RILASCIATO ORBITER 2016!!! CLICCA QUI PER SCARICARLO
 
IndiceIndice  FAQFAQ  LinkLink  CercaCerca  RegistrarsiRegistrarsi  Accedi  
Accedi
Nome utente:
Parola d'ordine:
Connessione automatica: 
:: Recuperare la parola d'ordine
FOI sui social networks
Argomenti simili
Siti Amici
Astronautica Ultima Speranza

AstronautiNEWS

Orbiter Forum

Tuttovola.org

Contatore Visite
Ultimi argomenti
» Concetto "Red Antares"
Da Andrew Oggi a 10:38

» Mars One, la "colonizzazione di Marte" slitta di 4 anni...
Da Andrew Oggi a 10:24

» MARS - National Geographic Channel
Da Andrew Oggi a 10:13

» Accordo Altec - Virgin Galactic
Da Diabolos Oggi a 9:02

» Ancora un fallimento per il Progress
Da Ripley Ieri a 23:39

» Propulsione Spaziale
Da m.a.s Ieri a 23:29

» "Starlab" space station
Da Fausto Ieri a 22:09

» R.I.P. John Glenn
Da Fausto Ieri a 21:53

» Sviluppo di una base italiana - Sede ASVI
Da Fausto Ieri a 21:36

» Problema installazione D3D9
Da DDD Ieri a 18:34

» Shuttle Fleet R.I.P.
Da wolf Gio 8 Dic 2016 - 14:46

» Rilasciato Space Shuttle Ultra 4.0 (per O2010)
Da wolf Mer 7 Dic 2016 - 20:15

» L'uomo su Mercurio
Da Andrew Mar 6 Dic 2016 - 19:05

» Stephen Hawking ricoverato per problemi respiratori
Da Fausto Sab 3 Dic 2016 - 19:42

» Avete bisogno di un un razzo vettore?
Da Matt44 Sab 3 Dic 2016 - 16:57

» Sospensioni motore DGIV da tastiera
Da Ripley Mer 30 Nov 2016 - 11:39

» Saluti!
Da Fausto Mer 30 Nov 2016 - 8:13

» Ma che Luna o Marte.. colonizziamo Titano!
Da Andrew Dom 27 Nov 2016 - 11:27

» Serie TV -The Expanse
Da m.a.s Sab 26 Nov 2016 - 11:27

» Paolo Nespoli di nuovo sulla ISS con la missione VITA
Da Dany Sab 26 Nov 2016 - 8:09


Condividere | 
 

 [C++] Gestione animazioni MGROUP_SCALE

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso 
AutoreMessaggio
Matt44
Add-on Developer
Add-on Developer


Numero di messaggi : 1218
Età : 38
Località : Bergamo
Data d'iscrizione : 13.04.11

MessaggioOggetto: [C++] Gestione animazioni MGROUP_SCALE   Mer 19 Giu 2013 - 11:37

Sto definendo un paracadute e come facevo con spacecraft3 ho utilizato SCALE, ed in questo caso MGROUP_SCALE. Ho però un problema non riesco a fermare l'animazione; per spiegarmi meglio la mia idea era di creare un animazione che rimpicciolisce la mesh del paracadute e poi farla andare al contrario... (da 1 a 0) solo che il paracadute si rimpicciolisce ma poi non torna più indietro.

Io sono partito da questo che ho trovato su OH

MGROUP_SCALE bay2 (0, LGrp2, 2, _V(8.111672,-6.521036,-54.86), _V(0,1,0));
Tornare in alto Andare in basso
Vedere il profilo dell'utente http://asvo.jimdo.com/
Fausto
Admin
Admin


Numero di messaggi : 7087
Età : 33
Località : Arcore (Milano)
Data d'iscrizione : 27.06.09

MessaggioOggetto: Re: [C++] Gestione animazioni MGROUP_SCALE   Mer 19 Giu 2013 - 12:00

Aspetta, non ho capito: le due cose devono essere fatte da sole in sequenza o devi fare in modo che premendo il tasto l'animazione ritorni al punto di partenza?

_________________________________________________

Dategli una grande sfida, una che sembra impossibile. Dategli il desiderio di vincerla. Unite le due cose, e l'essere umano è capace di tutto

Jim Lovell
Tornare in alto Andare in basso
Vedere il profilo dell'utente Online
Matt44
Add-on Developer
Add-on Developer


Numero di messaggi : 1218
Età : 38
Località : Bergamo
Data d'iscrizione : 13.04.11

MessaggioOggetto: Re: [C++] Gestione animazioni MGROUP_SCALE   Mer 19 Giu 2013 - 12:09

Vorrei che premendo il tasto l'animazione si attivi rimpicciolisca il paracadute e poi ripremendolo torni indietro, con TRANSALTE e ROTATE funziona perfettamente, con SCALE non funziona. Non capisco se devo fare qualcosa di differente.

static UINT Par1Grp[8] = {60,61,159,160,147,149,118,119};
static MGROUP_SCALE Par1 (0, Par1Grp, 8, _V(8.111672,-6.521036,-54.86), _V(0,1,0));
anim_pan1 = CreateAnimation (0);
AddAnimationComponent (anim_Par1, 0, 1, &Par1);

Quello sopra è la definizione dell'animazione che uso per ogni animazione, l'unica cosa che cambia è  MGROUP_SCALE.
Tornare in alto Andare in basso
Vedere il profilo dell'utente http://asvo.jimdo.com/
Fausto
Admin
Admin


Numero di messaggi : 7087
Età : 33
Località : Arcore (Milano)
Data d'iscrizione : 27.06.09

MessaggioOggetto: Re: [C++] Gestione animazioni MGROUP_SCALE   Mer 19 Giu 2013 - 12:45

Il codice che vedo qui è giusto, il mio sospetto è che ci sia qualcosa da qualche altra parte che impedisce l'animazione.. ora non ho sotto mano il codice ma domani vedo di postarti le varie parti che vanno a creare l'animazione del gonfiaggio del galleggiante di Antares.. sono sicuro che si tratta di qualche virgola o qualche parentesi mancante, com'è di solito in questi casi Censored

_________________________________________________

Dategli una grande sfida, una che sembra impossibile. Dategli il desiderio di vincerla. Unite le due cose, e l'essere umano è capace di tutto

Jim Lovell
Tornare in alto Andare in basso
Vedere il profilo dell'utente Online
Matt44
Add-on Developer
Add-on Developer


Numero di messaggi : 1218
Età : 38
Località : Bergamo
Data d'iscrizione : 13.04.11

MessaggioOggetto: Re: [C++] Gestione animazioni MGROUP_SCALE   Mer 19 Giu 2013 - 12:57

Come al solito, grazie... non c'è urgenza comunque Smile
Tornare in alto Andare in basso
Vedere il profilo dell'utente http://asvo.jimdo.com/
fred18
Add-on Developer
Add-on Developer


Numero di messaggi : 923
Età : 33
Località : La Spezia
Data d'iscrizione : 04.01.12

MessaggioOggetto: Re: [C++] Gestione animazioni MGROUP_SCALE   Mer 19 Giu 2013 - 13:36

Domanda: per translate e rotate ti funziona semplicemente così? perché in teoria il "ritorno" dell'animazione dovrebbe essere definito in post step o in cosume buffered key a seconda di dove lo si mette: il concetto è premo il tasto dell'animazione, se lo stato dell'animazione è 0 allora parte in un verso, se lo stato dell'animazione è 1 allora parte nell'altro. Anche perché non è detto che debba fare avanti e indietro (pensa a come le usi con Spacecraft3). Mi meraviglia che funzioni così easy con translate e rotate. confused 2
Tornare in alto Andare in basso
Vedere il profilo dell'utente
Matt44
Add-on Developer
Add-on Developer


Numero di messaggi : 1218
Età : 38
Località : Bergamo
Data d'iscrizione : 13.04.11

MessaggioOggetto: Re: [C++] Gestione animazioni MGROUP_SCALE   Mer 19 Giu 2013 - 13:53

Quella è la definizione, che è l'unica cosa che cambia. Tutto il resto rimane invariato.

Poi c'è la gestione dello stato, ma quella parte non è stata toccata... appena posso farò altre prove, ora mi sto distraendo per non impazzirci sopra, che poi magari è la solita virgola persa per strada.
Tornare in alto Andare in basso
Vedere il profilo dell'utente http://asvo.jimdo.com/
Fausto
Admin
Admin


Numero di messaggi : 7087
Età : 33
Località : Arcore (Milano)
Data d'iscrizione : 27.06.09

MessaggioOggetto: Re: [C++] Gestione animazioni MGROUP_SCALE   Ven 21 Giu 2013 - 12:09

Come promesso, posto qui tutte le parti relative all'animazione del galleggiante, spero possa essere utile a risolvere i tuoi dubbi:

Codice:
const double GALL_OPERATING_SPEED = 0.5;

class antares: public VESSEL2 {
public:
enum DoorStatus { DOOR_CLOSED, DOOR_OPEN, DOOR_CLOSING, DOOR_OPENING }status_gall;

void Activategall (DoorStatus action);
   void Revertgall (void);

UINT anim_gall;

double proc_gall;
};


antares::antares (OBJHANDLE hObj, int fmodel)
: VESSEL2 (hObj, fmodel)
{
status_gall = DOOR_CLOSED;

proc_gall = 0.0
}

void antares::clbkPostStep (double simt, double simdt, double mjd){
if (status_gall >= DOOR_CLOSING) {
      double da = oapiGetSimStep() * GALL_OPERATING_SPEED;
      if (status_gall == DOOR_CLOSING) {
         if (proc_gall > 0.0)
            proc_gall = max (0.0, proc_gall-da);
         else {
            status_gall = DOOR_CLOSED;
            }
      } else  { // door opening
         if (proc_gall < 1.0)
            proc_gall= min (1.0, proc_gall+da);
         else {
            status_gall = DOOR_OPEN;

         }

         }
      SetAnimation (anim_gall, proc_gall);
}

}


void antares::clbkSaveState (FILEHANDLE scn)
{
if (status_gall) {
   sprintf (cbuf, "%d %0.4f", status_gall, proc_gall);
   oapiWriteScenario_string (scn, "GALL", cbuf);

  }      

}

void antares::clbkLoadStateEx (FILEHANDLE scn, void *vs)
{
if (!strnicmp (line, "GALL", 4))
         sscanf (line+4, "%d%lf", &status_gall, &proc_gall);

SetAnimation (anim_gall, proc_gall);

}


void antares::DefineAnimations (void)
{
static UINT gall1Grp[1] = {13};
static MGROUP_SCALE gall1 (midx,gall1Grp, 1, _V(0.948,0.942,2.03), _V(15,15,15));
static UINT gall2Grp[1] = {12};
static MGROUP_SCALE gall2 (midx,gall2Grp, 1, _V(0.948,-0.942,2.03), _V(15,15,15));
static UINT gall3Grp[1] = {11};
static MGROUP_SCALE gall3 (midx,gall3Grp, 1, _V(-0.948,-0.942,2.03), _V(15,15,15));
static UINT gall4Grp[1] = {10};
static MGROUP_SCALE gall4 (midx,gall4Grp, 1, _V(-0.948,0.942,2.03), _V(15,15,15));
static UINT gall5Grp[1] = {9};
static MGROUP_SCALE gall5 (midx,gall5Grp, 1, _V(0.0,0.0,-2.342), _V(4,4,5));
static UINT gallmark1Grp[1] = {89};
static MGROUP_TRANSLATE gallmark1 (midx, gallmark1Grp, 1, _V(0.0,-0.007,0.0));
static UINT gallmark2Grp[1] = {89};
static MGROUP_TRANSLATE gallmark2 (midx, gallmark2Grp, 1, _V(0.0,-0.008,0.0));
anim_gall=CreateAnimation (0.0);
AddAnimationComponent (anim_gall, 0, 1, &gall1);
AddAnimationComponent (anim_gall, 0, 1, &gall2);
AddAnimationComponent (anim_gall, 0, 1, &gall3);
AddAnimationComponent (anim_gall, 0, 1, &gall4);
AddAnimationComponent (anim_gall, 0.0, 1, &gall5);
AddAnimationComponent (anim_gall, 0.0, 0.01, &gallmark1);
AddAnimationComponent (anim_gall, 0.99, 1, &gallmark2);
}


int antares::clbkConsumeBufferedKey(DWORD key, bool down, char *kstate)
{
if (!down) return 0;
   switch (key) {
case OAPI_KEY_G: 
PlayVesselWave3(MyID, 11);
if (GroundContact()) RevertMasterAlarm(),PlayVesselWave3(MyID, 1);
   
else Revertgall();
return 1;
}
return 0;

}

void antares::Activategall (DoorStatus action)
{
   status_gallswitch = action;
}

void antares::Revertgall (void)
{
   Activategall ((status_gallswitch == DOOR_CLOSED || status_gallswitch == DOOR_CLOSING) ?
      DOOR_OPENING : DOOR_CLOSING);
}


void antares::clbkPostCreation()
{
SetAnimation (anim_gall, proc_gall);
}

Credo di aver messo tutto.. copia ed incolla e prendi spunto sostituendo i nomi delle tue animazione al posto delle mie, cancella le parti che non ti servono.. e facci sapere il risultato!Winkie

_________________________________________________

Dategli una grande sfida, una che sembra impossibile. Dategli il desiderio di vincerla. Unite le due cose, e l'essere umano è capace di tutto

Jim Lovell
Tornare in alto Andare in basso
Vedere il profilo dell'utente Online
Contenuto sponsorizzato




MessaggioOggetto: Re: [C++] Gestione animazioni MGROUP_SCALE   Oggi a 10:47

Tornare in alto Andare in basso
 
[C++] Gestione animazioni MGROUP_SCALE
Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto 
Pagina 1 di 1
 Argomenti simili
-
» Titolo I, Capo III (Artt. 199-207) - Servizio di gestione integrata dei rifiuti
» Impresa pulizie che effettua raccolta rifiuti e sua gestione conto terzi
» GESTIONE SEMPLIFICATA RAEE: autoradio
» Codici ATECO per gestione rifiuti?
» Chiusura unita' locale con gestione azienda

Permesso di questo forum:Non puoi rispondere agli argomenti in questo forum
Forum Orbiter Italia :: Orbiter Space Flight Simulator :: Sviluppo Add-on :: Orbiter SDK-
Andare verso: