Hallo,
ich hab schon seit längerer Zeit n Problem,ich zerbreche mir schon fast den Kopf daran.
Und zwar würde ich es gerne so machen,dass die Vertices von den Objekten so angepasst werden,dass sie bei Anwendung des Projection Matrix noch zu sehen sind.
Denn momentan sind sie wohl außerhalb dem View Space.
Meine Frage ist:Wie kann ich das hinkriegen,dass die Vertices alle im View Space sind?
Es soll dann nachher so sein,dass wenn ich Meshes mit Assimp importiere,dass diese automatisch so skaliert werden,dass das im komletten View Space sichtbar sind.
Irgendwie muss doch dass auch AssimpView machen.Doch aus dem Code wurde ich nicht wirklich schlau daraus,es scheint zwar die Funktion ScaleAsset zu geben,die die g_mworld matrizen erstellt,nur sind die wohl unabhängig von dem Projection-Matrix,oder irre ich mich da?
Ich hatte mir auch schon mehreres überlegt.
Z.B. wollte ich das so machen,dass ich die Abstände der jeweils größten und kleinsten Koordinaten vom Mesh berechne,dann mit dem Projection Matrix nach den NDC-Koordinaten -1,1 eine Gleichung aufstellen und dann die Wert in World Space auflöse.Anschließend wollte ich dann noch aus denen mit den Abstände der jeweils größten und kleinsten Koordinaten verrechnen,um dann den Scalefaktor für ne Skalierungsmatrix zu bilden.Verschiebung wollte ich auch noch bestimmen,nur leider ging das alles nicht.
Unprojection scheint auch nicht die Lösung zu sein ,da w!=1.
Bin also ziemlich frustriert.
Kann mir da jemand weiterhelfen?
Wäre sehr dankbar
Wie Vertices an Projection Matrix anpassen?
-
- Beiträge: 1
- Registriert: 01.12.2013, 19:23
- xq
- Establishment
- Beiträge: 1590
- Registriert: 07.10.2012, 14:56
- Alter Benutzername: MasterQ32
- Echter Name: Felix Queißner
- Wohnort: Stuttgart & Region
- Kontaktdaten:
Re: Wie Vertices an Projection Matrix anpassen?
Die Lösung dürfte relativ einfach sein:
Lade deine Modelle, bestimme die Bounding Box. Danach skaliere und verschiebe das Modell so, dass es eine Bounding Box der Größe (1,1,1) hat und deren Zentrum im Fokus deiner Kamera liegt.
Verschiebe das Modell so, dass
und
Dadurch wird dein Modell auf einen Würfel mit Kantenlänge 1 reduziert, den kannst du dann mit deiner kamera prima fokussieren.
Du solltest scale natürlich so berechnen, dass das modell nicht verzerrt wird ;)
Für Fehlerfreiheit garantiere ich nicht, aber ich hoffe meine Idee kommt raus.
Lade deine Modelle, bestimme die Bounding Box. Danach skaliere und verschiebe das Modell so, dass es eine Bounding Box der Größe (1,1,1) hat und deren Zentrum im Fokus deiner Kamera liegt.
Verschiebe das Modell so, dass
Code: Alles auswählen
center = 0.5 * (max + min)
Code: Alles auswählen
scale = 2 / (max - min)
Du solltest scale natürlich so berechnen, dass das modell nicht verzerrt wird ;)
Für Fehlerfreiheit garantiere ich nicht, aber ich hoffe meine Idee kommt raus.
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…
Programmiert viel in
Zig
und nervt Leute damit.
Programmiert viel in