Aktuelle Zeit: 14.04.2021 00:38

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: [Erledigt]Set Entity Rotation mit FetchOrientation()
BeitragVerfasst: 05.04.2021 08:09 
Offline
Benutzeravatar

Registriert: 08.09.2004 20:18
Wohnort: Dachsen
Hallo,

ich versuche mich gerade daran, die Absoluten Rotations Winkel von einem Entity zu Speicher und dann wider zu restaurieren.
Dabei versage ich völlig . Mir scheint da etwas wesentliches nicht bekannt zu sein.

ich speicher die daten in einer Text datei.

Code:
 
    WriteStringN(0,  "pos "+StrF(EntityX(ml()    \EntityHandler,#PB_Absolute))+" "+StrF(EntityY(ml()  \EntityHandler,#PB_Absolute)) +" "+StrF(EntityZ(ml()   \EntityHandler,#PB_Absolute)) +" ")
    WriteStringN(0,  "rot "+StrF(EntityPitch(ml()\EntityHandler,#PB_Absolute|#PB_Engine3D_Adjusted))+" "+StrF(EntityYaw(ml()\EntityHandler,#PB_Absolute|#PB_Engine3D_Adjusted)) +" +StrF(EntityRoll(ml()\EntityHandler,#PB_Absolute|#PB_Engine3D_Adjusted)) +" ")
 


und will sie so wider zurückstellen .... aber schon die Gespeicherten Werte sind total unlogisch.

Code:
     If FindString(Daten,"pos ")
                             
         p1 = FindString(Daten," ",1)
         p2 = FindString(Daten," ",p1 + 1)
         p3 = FindString(Daten," ",p2 + 1)
         ML()\PosX = ValF(Mid(Daten,p1+1,p2-p1))
         ML()\PosY = ValF(Mid(Daten,p2+1,p3-p2))
         ML()\PosZ = ValF(Mid(Daten,p3+1,Len(Daten)-p3))
                             
         Debug StrF(ML()\PosX)+"/"+StrF(ML()\PosY)+"/"+StrF(ML()\PosZ)
                             
         daten = ReadString(0)
         If FindString(Daten,"rot ")
                               
         p1 = FindString(Daten," ",1)
         p2 = FindString(Daten," ",p1 + 1)
         p3 = FindString(Daten," ",p2 + 1)
         ML()\RotX = ValF(Mid(Daten,p1+1,p2-p1))
         ML()\RotY = ValF(Mid(Daten,p2+1,p3-p2))
         ML()\RotZ = ValF(Mid(Daten,p3+1,Len(Daten)-p3))
                               
         Debug StrF(ML()\RotX)+"/"+StrF(ML()\RotY)+"/"+StrF(ML()\RotZ)


und anschliessend erzeuge und rotiere ich das Entity so.

Code:
   
      mesh =  LoadMesh(#PB_Any,GetCurrentDirectory()+"Data\mesh\"+ML()\BlockName+".mesh")
      If mesh = 0 : Debug "Konnte mesh nicht laden" : Debug GetCurrentDirectory()+"Data\mesh\"+ML()\BlockName+".mesh" : EndIf
      result = CreateEntity(#PB_Any,MeshID(mesh),MaterialID(_material3),ML()\PosX,ML()\PosY,ML()\PosZ, #SelectMasik5)
      RotateEntity(result,ML()\RotX,ML()\RotY,ML()\RotZ,#PB_Absolute)
      If result = 0 : Debug "Konnte Entity nicht erzeugen" : EndIf


Kann es sein das ich nicht alle 3 Achsen gleichzeitig behandeln Kann?

Gruss TFT

_________________
TFT

W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)


Zuletzt geändert von tft am 05.04.2021 12:51, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotation von Entity
BeitragVerfasst: 05.04.2021 11:23 
Offline
Kommando SG1
Benutzeravatar

Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Hallo tft,

>> "Kann es sein das ich nicht alle 3 Achsen gleichzeitig behandeln Kann?"
So in etwa. Die Euler Winkel haben die schwäche, dass die drei Koordinaten (Pitch, Yaw, Roll) alleine nicht ausreichen um eine Orientierung im Raum, eindeutig zu definieren. Es ist auch immer eine klar definierte Reihenfolge der Rotationen nötig (Konventionen), damit es zum selben Ergebnis führt.

Abhilfe schaffen hier die Funktionen FetchOrientation() und SetOrientation(). Mit ihnen kannst du (solltest du) wirklich den eindeutigen Zustand eines Objekts in Form eines Quaternion (4 Koordinaten) zurückgeben lassen und dann auch wieder zuweisen.

_________________
BildBildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotation von Entity
BeitragVerfasst: 05.04.2021 12:49 
Offline
Benutzeravatar

Registriert: 08.09.2004 20:18
Wohnort: Dachsen
Ja hallo ...

genau so funktioniert es ...... danke für den Hinweis.

Gruss TFT

_________________
TFT

W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye