See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: Déja renconté ce prob ?  (Read 1707 times)

0 Members and 1 Guest are viewing this topic.

Offline korben62

  • Hero Member
  • *****
  • Posts: 561
  • Karma: 0
28 May 2007, 13:25:31
Voila , ça fait un moment que je suis pas venu, car j'essaye de régler un probléme
ça fait 15 kour que je m'arrache les cheveux la dessus

Faire des tourelles de dir automatique , la tourelle est positionée a l'aide d'un attachement
Parent et loose sur le vaisseau mére
Child et loose sur la tourelle

J'utilise l'attachemenrt child pour la rotation de la tourelle en ascention droite
et l'attachement parent pour pour la rotation en Azimut

Déja que c'est pas facile de faire ce type d'orientation mais en plus je tombe sur ce truc

Déclaration de l'attachement parent sur le mothership Millenium falcon , 2 tourelles
turret[0] = CreateAttachment(false,
                           _V(0.0,10.0,0.0),
                           _V(0, 0, 1),
                           _V(0, 1, 0),
                           "GTUR1",
                           false);
turret[1] = CreateAttachment(false,
                           _V(0.0,-10.0,0.0),
                           _V(0, 0, -1),
                           _V(0, 1, 0),
                           "GTUR2",
                           false);

dans mon scenard j'indique ça
IANSOLO-SHEWI:MFALCON
  STATUS Orbiting Earth
  RPOS 6100017.44 2195871.15 -1801242.95
  RVEL 2926.870 -6985.005 1402.666
  AROT -170.64 34.80 109.40
  PRPLEVEL 0:1.000
  NAVFREQ 0 0
  TURRETSTATE 1162694472 0.0000
END
FTURRET1:GUNTURRET
  STATUS Orbiting Earth
  RPOS 6100025.18 2195873.55 -1801248.81
  RVEL 2926.870 -6985.005 1402.666
  AROT -170.64 34.80 -70.60
  ATTACHED 0:0,IANSOLO-SHEWI
  PRPLEVEL 0:0.000
  NAVFREQ 0 0
  MOTHERSHIP IANSOLO-SHEWI
  GUNMOUNT GTUR1
END

ou MOTHERSHIP nom du vaisseaux mére et GUNMOUNT l' ID de l'attachement

apres avoir tenté plusieur modes de calculs sans résultats j'essaye un truc simple
quelque soit la position du vaisseaux mére l'azimut de la tourelle pointe toujours le nord
par rapport a l'horizon local (plan normal a la droite passant par le centre du vaisseau mére et le centre de la planete
la plus proche) je récupére ça a l' aide de oapiGetHeading

dans le code de la tourelle
je récupére l'attachement parent par

void turret::clbkPostStep (double simt, double simdt, double mjd)
{  

   if(defence_status != defence_OUI){
      double DMin, Distance;
      double banka ,pitcha, headinga, bankb ,pitchb, headingb ;
       OBJHANDLE VaissADminiHandle;
       char minh[128];
       char NomTurret[256];
       VECTOR3 rpos, vdam1, vdam2, vdam3;
       DMin = DistanceMiniVaisseau(&VaissADminiHandle);
       oapiGetObjectName (VaissADminiHandle, minh, 128 ) ;
       VESSEL *cible = oapiGetVesselInterface (VaissADminiHandle);
       if (VaissADminiHandle != NULL) {
         
   strcpy (NomTurret, GetName());//nom de la tourelle courante  ID d'attachement GUNMOUNTID
            OBJHANDLE CourrantHandle = oapiGetVesselByName (NomTurret);
          //OBJHANDLE CourrantHandle = oapiGetVesselByName (SHIPNAME);
          oapiGetRelativePos(CourrantHandle, VaissADminiHandle, &rpos);
         Distance = sqrt(rpos.x*rpos.x + rpos.y*rpos.y + rpos.z*rpos.z);
         OBJHANDLE MshipHandle = oapiGetVesselByName (SHIPNAME);
         oapiGetBank (MshipHandle, &banka);oapiGetPitch (MshipHandle,
&pitcha);oapiGetHeading(MshipHandle, &headinga);

            VESSEL *Mship = oapiGetVesselInterface (MshipHandle);
          DWORD nAttach = Mship->AttachmentCount (false);
          for (DWORD j = 0; j < nAttach; j++){ //boucle for next sur le nombre d'attachements
          ATTACHMENTHANDLE hAtt = Mship->GetAttachmentHandle (false, j);//capture du handle de
l'attachement
          const char *id = Mship->GetAttachmentId (hAtt);//capture de l'ID de l'attachement
          if (strncmp (id, GUNMOUNTID, 3))continue;//continue la boucle si pas le bon vdam1
         Mship->GetAttachmentParams (hAtt, vdam1 , vdam2, vdam3);
         sprintf(oapiDebugString(), "vdam1.x: %.1f vdam1.y: %.1f vdam1.z: %.1f GUNMOUNTID  
%s",vdam1.x,vdam1.y,vdam1.z,GUNMOUNTID);               
         Mship->SetAttachmentParams (hAtt,
                           _V(vdam1.x, vdam1.y ,vdam1.z ),
                           _V(sin (headinga),0,cos(headinga)),
                           _V(0,1,0));// rotation autour de laxe y// du vaisseau SHIPNAME en azimut
       
                           }//fin boucle for
           
           
       }//fin (VaissADminiHandle != NULL)
   };//fin if(defence_status != defence_OUI)          
}

Mon oapidebugstring m'indique un vdam1.y de !!!!!!!! -10 soit l'inverse de ce que j'ai déclaré + haut

turret[0] = CreateAttachment(false,
                           _V(0.0,10.0,0.0),
                           _V(0, 0, 1),
                           _V(0, 1, 0),
                           "GTUR1",
                           false);

si c'est normal, c'est marqué nulle part.
ou alors je me goure ???




Offline korben62

  • Hero Member
  • *****
  • Posts: 561
  • Karma: 0
Reply #1 - 28 May 2007, 19:17:09
Autant pour moi
if (strncmp (id, GUNMOUNTID, 3))
Le Neuneu, controle sur 3 carractéres seulement
le prog confond GTUR1 et GTUR2
tt mes confuses


« Last Edit: 28 May 2007, 19:17:09 by korben62 »