RILASCIATO ORBITER 2016!!! CLICCA QUI PER SCARICARLO
 
IndiceIndice  FAQFAQ  LinkLink  CercaCerca  RegistratiRegistrati  Accedi  
Accedi
Nome utente:
Password:
Connessione automatica: 
:: Ho dimenticato la password
FOI sui social networks
Argomenti simili
Siti Amici
Astronautica Ultima Speranza

AstronautiNEWS

Orbiter Forum

Tuttovola.org

Contatore Visite
Ultimi argomenti
» Vittime del lancio della Progress MS-06
Da Diabolos Mar 20 Giu 2017 - 13:54

» Sviluppo di una base italiana - Sede ASVI
Da Ripley Sab 17 Giu 2017 - 11:37

» Multistage2015
Da marcogavazzeni Mar 13 Giu 2017 - 23:08

» OMP - Orbiter Multiplayer Project - Installazione
Da Ripley Mer 24 Mag 2017 - 15:13

» Poderosa 2017
Da marcogavazzeni Mar 23 Mag 2017 - 21:14

» D3D9Client - il client grafico di Jarmonik
Da Ripley Mar 23 Mag 2017 - 16:55

» Delphinus
Da marcogavazzeni Lun 15 Mag 2017 - 19:59

» Auguri Mamma
Da Pete Conrad Lun 15 Mag 2017 - 9:40

» salve
Da Ripley Ven 28 Apr 2017 - 7:46

» Cassini inizia l'ultimo anno della sua missione
Da Pete Conrad Mer 26 Apr 2017 - 8:36

» Lagrange MFD
Da Ripley Lun 24 Apr 2017 - 20:04

» Orbits - visualizzazione grafica di orbite e parametri
Da Ripley Gio 20 Apr 2017 - 12:39

» Ciao a tutti arrivo da Facebook
Da Claudio Riccobene Ven 14 Apr 2017 - 1:09

» X-Plane 11
Da fred18 Lun 3 Apr 2017 - 10:56

» Plugin per Space Network
Da fred18 Lun 3 Apr 2017 - 10:53

» spazioplano futuristico?
Da fred18 Dom 26 Mar 2017 - 0:34

» LOGAN STREAMING FILM ITALIANO 2017
Da Pete Conrad Sab 11 Mar 2017 - 19:37

» trasformare carichi dgiv
Da Jim lovell Gio 2 Mar 2017 - 11:56

» Dropbox abbandona il supporto alla cartella Public
Da marcogavazzeni Gio 2 Mar 2017 - 11:01

» Excel: dimensioni, capacità, massa di un serbatoio sferico
Da Ripley Gio 2 Mar 2017 - 0:53


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
avatar

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

MessaggioTitolo: [C++] Gestione animazioni MGROUP_SCALE   Mer 19 Giu 2013 - 13: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
Vedi il profilo dell'utente http://asvo.jimdo.com/
Fausto
Admin
Admin
avatar

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

MessaggioTitolo: Re: [C++] Gestione animazioni MGROUP_SCALE   Mer 19 Giu 2013 - 14: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
Vedi il profilo dell'utente
Matt44
Add-on Developer
Add-on Developer
avatar

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

MessaggioTitolo: Re: [C++] Gestione animazioni MGROUP_SCALE   Mer 19 Giu 2013 - 14: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
Vedi il profilo dell'utente http://asvo.jimdo.com/
Fausto
Admin
Admin
avatar

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

MessaggioTitolo: Re: [C++] Gestione animazioni MGROUP_SCALE   Mer 19 Giu 2013 - 14: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
Vedi il profilo dell'utente
Matt44
Add-on Developer
Add-on Developer
avatar

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

MessaggioTitolo: Re: [C++] Gestione animazioni MGROUP_SCALE   Mer 19 Giu 2013 - 14:57

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


Numero di messaggi : 933
Età : 34
Località : La Spezia
Data d'iscrizione : 04.01.12

MessaggioTitolo: Re: [C++] Gestione animazioni MGROUP_SCALE   Mer 19 Giu 2013 - 15: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
Vedi il profilo dell'utente
Matt44
Add-on Developer
Add-on Developer
avatar

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

MessaggioTitolo: Re: [C++] Gestione animazioni MGROUP_SCALE   Mer 19 Giu 2013 - 15: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
Vedi il profilo dell'utente http://asvo.jimdo.com/
Fausto
Admin
Admin
avatar

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

MessaggioTitolo: Re: [C++] Gestione animazioni MGROUP_SCALE   Ven 21 Giu 2013 - 14: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
Vedi il profilo dell'utente
Contenuto sponsorizzato




MessaggioTitolo: Re: [C++] Gestione animazioni MGROUP_SCALE   

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
» PROGRAMMA DI GESTIONE DI BONIFICA AMIANTO
» Codici ATECO per gestione rifiuti?
» GESTIONE IMPIANTO DI RECUPERO R4 - R13
» problema gestione rifiuti impresa edile: registro c/s

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