Maßstab Meter intern darstellen (DirectX 9, Erfahrugnswerte gefragt)



  • Arbeite grad an ner Engine die reale Daten in 3D darstellen soll. Da ich ja die "echten" Daten in Metern habe, stellt sich die Frage, wie ich das ganze umrechne, damit es im Programm realistisch aussieht.

    Einfluß haben ja der Blickwinkel und die Skalierung der Daten. Mit 45° Winkel und einer Skalierung von 1.0f = 1 Meter sieht das ganze logischerweise nicht realistisch sondern zu klein aus.

    Welche Erfahrungswerte habt ihr so gesammelt. Welche Werte würdet ihr empfehlen damit man dann sagen kann "Also x*Meter ist der interne Wert..." ?



  • Das hängt davon ab wie groß das Sichtvolumen ist



  • Es geht um eine Darstellung von Räumen. Normal sind dabei Größen zwischen ca 3m - 20m für Breite/Länge/Höhe.



  • du kannst dir einen Meter frei definieren z. B. 1m = 1 oder 1m = 1000000 oder 1m = 0.000000000001

    welche Darstellung man wählen sollte hängt ab von
    - Eingangsdaten (will man das Sonnensystem darstellen ist 0.00000001 für einen Meter zu wenig - mit 32 Bit wird man die Abstände zwischen den Planeten nicht mehr erfassen können)
    - was numerisch noch halb wegs stabil ist (0.00000000000000000000000000001 * 0.0000000000000000000000000000001 = ?)
    - und wie die gewünschte Repräsentation sein soll (kann man es verkraften, dass der Z-Buffer in weiten Entfernungen sehr ungenau wird)

    es gibt bestimmt noch andere Faktoren



  • Ja wie gesagt, es soll halt realistisch wirken, wie aus der First-Person-Perspektive. Dabei gehts um kleinere Räume. Ich weiß das ich die Maßstäbe frei wählen kann, ich wollte halt nur mal rumfragen, mit welchen Maßstäben und passenden Sichtwinkeln man das ganze als realistisch empfindet, als ob man selbt die Kamera wäre.

    Mit Pi/4 als Sichtwinkel und 10.0 = 1m gehts so halbwegs, aber irgendwie wirkt es noch nicht als ob ich in dem Raum stehen würde.

    Pi/2 als Sichtwinkel wirkt hingegen sehr verwirrend, als obs nen Weitwinkel hat.



  • zu einem Ergebnis kommst: guck mal was in den NeHe Tutorials für Werte für die Near, Far Clipping Plane gewählt wurden - bzw. welche Werte für das Sichtvolumen gewählt wurden (als Right, Left, Top, Bottom, Near, Far - siehe dazu auch: http://loop.servehttp.com/~vertexwahn/public_html_an_turing/PerspektivischeProjektion.pdf)

    Es gibt bestimmt auch Papers, in denen man nachlesen kann wie man seine Objekte und das Sichtvolumen Dimensionieren soll, damit alle halbwegs numerisch stabil bleibt - aber ich glaube es reicht für dich die Werte aus einem x-Belieben Tutorial zu übernehmen 😉



  • "Quake defaults to a 90 degree field of view"



  • danke für die Mühe.
    Also die theorethischen Grundlagen sind mir bekannt, ich such eher nach Erfahrungswerten für eine 3D-Engine mit First-Person-Ansicht.

    Vertexwahn schrieb:

    "Quake defaults to a 90 degree field of view"

    Ja sowas in die Richtung meinte ich. Also da muss ich nur noch nen Maßstab für die Einheit finden.



  • Also ich habe die Erfahrung gemacht:
    Bei theoretischen Ansätzen verrechnet man sich sowieso und dann stimmt man es doch nach Gefühl an.

    Also lass diese Parameter schön leicht zu ändern an eine zentrale Stelle, schreib dein Programm und stimme es dann beim Testen ab.



  • Ja so mach ichs ja derzeit auch, hab ne Konstante definiert, die das dann umrechnet. Hätt ja sein können das da jemand schon ähnliches gemacht hat und da mal Anregungen hat.



  • ich hab die near clipping plane bei 5 die Far bei 100 und 90 Fov 😉



  • Naja wo die Planes liegen ist dabei ja nicht so entscheidend, eher wie groß die Objekte im sichtbaren Raum sind. Hab jetzt 90° Sichtwinkel und eine Umrechnung von 1m = 5.0f;

    das sieht schonmal annähernd realistisch aus. Da sieht ein 10m langer Raum auch so ungefähr so aus als wäre er 10m lang.


Anmelden zum Antworten