Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

idontknow

unregistriert

1

29.05.2010, 23:26

Rendering Splines; Splines vieeeel zu groß!

Moin!

Ich habn Problem! Kurz und knapp: Ich schreibe gerade ein Spline Editor (siehe W.I.P. THread!) und sitze gerade am Problem, dass die Spline Koordinaten im Editor unverhältnismäßig groß sind im Vergelich zu den Koordinaten in DX!

Sprich: Ein Spline(Kurve) im Editor ist in DirectX so groß dass ich so stark zommen müsste dass ich die Linie schon gar nich mehr erkennen könnte! Ich will zwar nur immer einen Ausschnitt sehen aber ich denke das Problem ist soweit verstannden oder?

Die Frage ist jetzt wie transformiere ich die Koordinaten aus dem Editor so, dass cih den Spline zwecks der Größe einigermaßen darstellen kann im DirectX programm? Einfach alle Koordinaten mit nem Wert < 1 multiplizieren scheint mir keine gute Lößung.

Eventuell per Projektion o.ä. in DirectX zoomen? Habe nur wenig Ahnung davon daher bitte nen bisschen genauer erläutern das wäre sehr nett :)

mfg

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

2

30.05.2010, 09:16

Der ganze Bildschirmbereich einfach von -1 bis 1 (x und y) und von 0 bis 1 in z-Richtung in Direct3D. Das heißt folglich, dass alles was du jetzt einfach so renderst (ohne irgendwelche Matrizen zu setzen) nur innerhalb des gerade genannten Bereiches Sichtbar ist.
Dazu könntest du tatsächlich deine Koordinaten einfach manuell auf diesen Bereich skalieren.

Oder aber du benutzt nicht-vor-transformierte Vertices (das sind die ohne den RHW Anteil) und setzt eine Projektionsmatrix die das für dich dann macht - dabei bist du dann etwas flexibler dabei welchen Ausschnitt du betrachten möchtest und musst nicht immer alle deine Koordinaten umrechnen, denn Direct3D macht dass dann für dich on-the-fly.
Da du ja zweidimensional rechnest, brauchst du keine perspektivische Projektion, sondern nur eine sog. orthogonal Projektion (auch parallel Projektion). Sofern du D3DX benutzt, kannst du einfach diese Funktion verwenden. Wie du siehst, kannst du mit den Parametern angeben, wie groß dein Sichtbereich ist. Die erzeugte Matrix kannst du dann mit DeinDevice->SetTransform(D3DTS_PROJECTION, &DeineProjektionsMatrix); setzen.
Was du früher oder später auch brauchen wirst, ist eine Kameramatrix, mit der du diesen Sichtbereich den du in der Projektionsmatrix festgelegt hast irgendwo anders hin bugsieren kannst (bisher schaust du ja immer genau auf den Koordinatenursprung - aber vielleicht möchtest du die Ansicht ja auch mal verschieben.). Dazu schaust du dir mal dashier an. Kameramatrizen kannst du mit DeinDevice->SetTransform(D3DTS_VIEW, &DeineKameraMatrix); setzen.
Du kommst natürlich auch ohne die D3DX-Funktionen aus - bei den Links steht weiter unten sogar wie du dir so eine Matrix selbst erzeugst :)

idontknow

unregistriert

3

30.05.2010, 12:08

Hey, vielen vielen Dank :).
Scheint genau das zu sein was ich brauche werde das dann mal einbauen und die Resultate posten :)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

30.05.2010, 12:29

Ist effektiv aber das selbe als würdest du einfach alle Koordinaten mit nem fixen Wert < 1 multiplizieren ;)

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

5

02.06.2010, 11:11

Splines sind erstmal nur so gross, wie du selbst Daten hineingibst. Zahlen die da raus kommen haben keine Verbindung zu DX und koennen in dem Sinne also auch nicht zu gross fuer DX sein. Wenn du bei sowas scheiterst, wuerde ich persoenlich dringend noch etwas Beschaeftigung mit Grundlagen anraten!

idontknow

unregistriert

6

04.06.2010, 13:54

Jo hast recht. Die "Frage" war auch relativ dumm gestellt, kommt eben darauf an wasandere Grafiken für eine Größe haben, das Verhältnis muss eben passen.

Werbeanzeige