CLICCA QUI PER SCARICARE ORBITER 2016
 
IndiceIndice  FAQFAQ  LinkLink  CercaCerca  RegistratiRegistrati  Accedi  
Accedi
Nome utente:
Password:
Connessione automatica: 
:: Ho dimenticato la password
FOI è sui social
Parole chiave
sound DGIV Poderosa autofcs Missione lander 2016 apollo OrbiterSound Universal Rientro TransX manuale jarvis Antares addon Nassp Base Shuttle Orbiter Pegasus Flotta AMSO Basesync d3d9 Fleet
Siti amici
AstronautiNEWS

ForumAstronautico

Orbiter Forum

Tuttovola
Ultimi argomenti
» Costruiranno uno spazioporto per suborbitali a Taranto?
Da Pete Conrad Mar 15 Mag 2018 - 18:44

» D3D9 - il client grafico di Jarmonik
Da Ripley Sab 12 Mag 2018 - 23:37

» Risorse per l'ambiente di sviluppo Visual Studio 2017 (in Win10)
Da Ripley Gio 10 Mag 2018 - 16:03

» [WIP] Missione San Marco 1
Da Dany Gio 26 Apr 2018 - 0:10

» Conversione carichi DGIV- UCGO
Da Franz Sab 21 Apr 2018 - 19:55

» Domanda punti di Lagrange
Da Ripley Gio 19 Apr 2018 - 7:56

» Addon russi di igel e Thorton incompatibili con Orbiter2016?
Da Ripley Mer 18 Apr 2018 - 14:34

» X-Plane 11
Da masdeca Mer 18 Apr 2018 - 11:57

» "Starlab" space station
Da Franz Lun 16 Apr 2018 - 21:53

» Come si mette nasa tv?
Da Francy03 Sab 14 Apr 2018 - 18:16

» Vista interna Delta Glider
Da Franz Ven 13 Apr 2018 - 18:07

» Nuova versione di TransX (Enjo)
Da Ripley Lun 9 Apr 2018 - 15:48

» ModuleMessagingExt v2
Da Ripley Dom 8 Apr 2018 - 21:05

» BaseSync MFD
Da Ripley Dom 8 Apr 2018 - 20:08

» BurnTimeCalc MFD
Da Ripley Ven 6 Apr 2018 - 1:20

» Launch MFD
Da Ripley Ven 6 Apr 2018 - 0:51

» Glideslope 2 MFD
Da Ripley Gio 5 Apr 2018 - 8:53

» Rilasciato XRSound, il nuovo sistema audio
Da Ripley Lun 12 Mar 2018 - 12:42

» Sviluppo di una base italiana - Sede ASVI
Da Franz Gio 1 Mar 2018 - 10:47

» Dalla Terra alla Luna - Serie TV
Da m.a.s Dom 25 Feb 2018 - 22:21

» Problema con D3D9Client Beta 25.4
Da Pietrogramma Dom 25 Feb 2018 - 16:28

» Intervista (finta) a Samantha Cristoforetti
Da Pete Conrad Sab 24 Feb 2018 - 18:25

» Mission to Mars
Da Edward Sab 24 Feb 2018 - 15:20

» oMMU, l'alternativa per la gestione dell'equipaggio!
Da Edward Gio 22 Feb 2018 - 13:13

» Traduzione ITA manuale operativo di volo flotta XR
Da Ripley Mer 21 Feb 2018 - 16:16

Contatore Visite

Condividi | 
 

 [C++] Gestione animazioni MGROUP_SCALE

Andare in basso 
AutoreMessaggio
Matt44
Add-on Developer
Add-on Developer
avatar

Numero di messaggi : 1218
Età : 39
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
Visualizza il profilo dell'utente http://asvo.jimdo.com/
Fausto
Admin
Admin
avatar

Numero di messaggi : 7088
Età : 35
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
Visualizza il profilo dell'utente
Matt44
Add-on Developer
Add-on Developer
avatar

Numero di messaggi : 1218
Età : 39
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
Visualizza il profilo dell'utente http://asvo.jimdo.com/
Fausto
Admin
Admin
avatar

Numero di messaggi : 7088
Età : 35
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
Visualizza il profilo dell'utente
Matt44
Add-on Developer
Add-on Developer
avatar

Numero di messaggi : 1218
Età : 39
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
Visualizza il profilo dell'utente http://asvo.jimdo.com/
fred18
Add-on Developer
Add-on Developer


Numero di messaggi : 939
Età : 35
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
Visualizza il profilo dell'utente
Matt44
Add-on Developer
Add-on Developer
avatar

Numero di messaggi : 1218
Età : 39
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
Visualizza il profilo dell'utente http://asvo.jimdo.com/
Fausto
Admin
Admin
avatar

Numero di messaggi : 7088
Età : 35
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
Visualizza il profilo dell'utente
Contenuto sponsorizzato




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

Tornare in alto Andare in basso
 
[C++] Gestione animazioni MGROUP_SCALE
Tornare in alto 
Pagina 1 di 1

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: