Problem mit Directx 9.0c c++ Programmierung



  • Hallo alle zusammen.
    Ich arbeite mit einem Freund an einem 3D Programm basierend auf DX 9.0c.Gecoded wird mit c++ und Visual Studio c++. So mal zu meinem problem. Das Programm soll unser Sonnensystem mit realistischen Distanzen der einzelnen Planeten darstellen. Wie ihr euch vorstellen könnt sind die werte für die positionen der Planeten dementsprechend extrem groß oder wenn ich die modelle sehr klein wähle muss ich extrem nah an die jeweiligen modelle ran. Jetzt das Problem: um so weiter ich mich mit der Camera vom Ursprung des ganzen entferne (z.b. die Camera die Koordinaten X= 100000; y= 9999 ; z =xxxxxx irgend wie sowas) fangen irgend wann die Modelle an zu wackeln. Mit wackeln meine ich das sie im Bild eben nicht auf einem Punkt sind sondern immer hin und her springen. Ich hab alles überprüft: Modelle bleiben exakt auf einer stelle sitzen (bis auf die 20igste nachkommastelle geprüft ob sich da was ändert). Von den werten ändert sich nichts . Als weiteres muss man dazu sagen, wenn die Camera still steht wackeln die modelle nicht. Erst wenn ich die Camera bewege oder einfahc nur die blickrichtung verändere beginnen die modelle zu wackeln. Daher denke ich das dieser Fehler mit der camera matrix zu tun hat. Und da kommt das nächste Problem. ich nutze eine cam der klasse CFirstPersonCamera (die so im dx sdk sschon eingebaut ist (dxutmisc.h)). Um an die Cameramatrizen zu kommen nutze ich daher die Funktionen dieser Klasse(.GetViewMatrix() und .GetProjMatrix()) und diese verwende ich dann für das Rendern. Daher hab ich keine Ahnung wo ein fehler sein könnte.
    So ich hoffe ich hab alle notwendigen infos herausgegeben damit ihr mir helfen könnt. Denn ich hab ka was ich dagegen machen könnte. Hoffe ihr habt irgend eine idee. Vielen Dank schon einmal.



  • Könnte aber auch mit Gleitkommazahl genauigkeit zu tun haben würde ich annehmen. Vieleicht koennt ihr euch ein Konzept überlegen wo ihr nicht mit riesigen und mit vielen Nachkommastellen arbeiten müsst. Aber ist erstmal nur eine Vermutung.



  • Hab ich auch vermutet. Aber warum wackeln die Modelle dann umso stärker umso weiter ich draußen bin. Außerdem wackeln sie auch wenn ich z.b. das Modell komplett ohne Kommastellen auf eine position stelle z.b. 100000.0 . Anschließend hab ich gedacht er kann einfahc net so gut mit großen Zahlen rum rechen (is quatsch aber hätte ja sien können). Dem entsprechend hab ich dann die modelle um den faktor 0.01 verkleinert. Somit sind auch die Abstände um 0.01 kleiner geworden. Um die Modelle dann noch sehen zu können muss ich dann mit der Camera dicht ran.Und dann wackeln die modelle auch schon bei einem 4 stelligen positionswert(also z.b. x = 3000).
    Und wie gesagt. Die Coordinaten des models und der camera bleiben soweit ich gesehen hab bis zur 20. nachkommastelle gleich (hab nur bis da geschaut).
    Von daher dürfte es meiner meinung nach keine Kommasache sein.


Anmelden zum Antworten