AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Allgemeine Frage zum Transformieren mit DirectX
Thema durchsuchen
Ansicht
Themen-Optionen

Allgemeine Frage zum Transformieren mit DirectX

Ein Thema von .chicken · begonnen am 1. Mai 2008 · letzter Beitrag vom 3. Mai 2008
Antwort Antwort
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#1

Allgemeine Frage zum Transformieren mit DirectX

  Alt 1. Mai 2008, 19:01
Also ich habe eine generelle Frage wie das Transformieren bei DirectX funktioniert.
Also wie ich es im Code mache weiss ich, aber was genau passiert versteh ich nicht.
Mal sehen wie ich das nun beschrieben bekomme ^^

Das erste Programm in dem ich etwas bewegen lies, hatte nur eine Funktion zur Transformation.
Diese wurde einmal am Anfang der Render Prozedur aufgerufen, danach wurden alle Objekte gerendert.
Dies führte dazu, dass alle Objekte mit nur einer Transformationsanweisung transformiert wurden und somit alle gleich.

Jetzt habe ich für meine Objekte jeweils eigene Klassen, die jeweils eine eigene Matrix besitzen.
Vor dem Rendern jedes einzelnen Objekts wird dann folgendes aufgerufen:
Device.SetTransform(D3DTS_WORLD, ObjektMatrix); Dies führt dazu, dass nur das bestimmte Objekt transformiert wird.

Wie genau funktioniert das nun also? Mich verwirrt es etwas, dass man zB keine Funktion hat um einen komplette Vertexbuffer zu transformieren. Woher weiss DX nun was transformiert werden soll?
Ich kann mir schon vorstellen, dass das Objekt garnicht wirklich transformiert wird sondern es für den Benutzer hinterher nur so aussieht oder? Was genau macht DirectX denn nun bei so einer Transformation?

Ich hoffe ihr versteht was ich meine und koennt mich kurz aufklären.

Grüße, .ch!cken
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#2

Re: Allgemeine Frage zum Transformieren mit DirectX

  Alt 2. Mai 2008, 17:01
Kann mir dazu niemand was sagen? Bitte...
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#3

Re: Allgemeine Frage zum Transformieren mit DirectX

  Alt 2. Mai 2008, 17:42
Was passiert ist eine rein mathematischer Prozess, die sich in 3 Stadien unterteilt.
Du kannst 3 Transformationsmatrizzen festlegen, deren Namen sich generell als World-, View- und Projection-Matrix festgelegt haben. Alle 3 haben dabei eine unterschiedliche aufgabe:
Die Projection-Matrix bestimmt die Projektionsparameter. Es gibt verschiedene Arten der Projektion, im 3D-Bereich wird meist die Zentralprojektion verwendet. In der Matrix bestimmst du, welchen Ausschnitt der Szene du in welchem Format auf deine Zeichenfläche rendern willst.
Die View-Matrix bestimmt die Kamera-Position. Mit ihr beschreibst du also, von welchem Punkt aus und in welche Richtung du die Szene betrachtest.
Die World-Matrix bestimmt die Position des derzeit gerenderten Objektes. D.h. wenn du in deiner Szene einen Würfel verschoben oder gedreht zeichnen willst, erledigst du dies über die World-Matrix.

Bei DirectX läuft dies nun so ab, dass die gerenderten Vertices mit den zu dem Zeitpunkt gesetzten Transformationsmatrizzen transformiert und projeziert werden. Willst du bspw. 2 Vertexbuffer unterschiedlich transformieren, musst du - abhängig davon, was sich ändern soll - die entsprechende Matrix vor dem Renderbefehl mit SetTransform umsetzen. Meist gehts dabei darum, unterschiedliche Objekte an unterschiedliche Positionen zu setzen. Die dafür zuständige Matrix ist die Weltmatrix; Die wirst du während einer Szene sehr oft setzen. (Normalerweise für jedes Objekt, das du zeichnen willst, min. einmal).

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#4

Re: Allgemeine Frage zum Transformieren mit DirectX

  Alt 3. Mai 2008, 01:31
Ok, danke soweit. Das bedeutet aber eigentlich, dass ein Objekt sich nicht wirklich "bewegt" oder? Eigentlich bleiben die Vertices wo sie sind nur für den Benutzer werden sie an einer anderen Stelle gezeichnet oder?
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Allgemeine Frage zum Transformieren mit DirectX

  Alt 3. Mai 2008, 04:22
Jop
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#6

Re: Allgemeine Frage zum Transformieren mit DirectX

  Alt 3. Mai 2008, 08:26
Ok, danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz