www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheDirectX-Forum

DerHulk

Gepostet:
16.06.2006 11:00

Drehen eines Rechtecks  
Hi, Leutz steh mal wieder vor einem kleineren Problem und hoffe von euch etwas hilfe zu bekommen:

Also folgendes:

Ich habe 6 CustomerVertex (Untransformiert) als Rechteck in einer Ebene angeordnet. Jetzt würde ich gern dieses
Rechteck um eine der Seiten drehen.Jedoch Fehlt mir hier jeglicher Mathematische ansatzweise?!

Geh ich da Über ne Matrix für jeden Punkt oder erstell ich mir eine eigene Formel die ich auf jeden Punkt anwende?
Über die Camera Perspektive ist das ja danke Jammnis Tutorial kein Thema nur will ich das nicht über die Kamera machen!


mfg DerHulk

Smilie
Zum Seitenanfang    
 
Jammni

Gepostet:
16.06.2006 16:35

   
Tja, wie soll ichs dir sagen, aber das ist der Weg, wie man es macht. Du transformierst die Welt so, wie die nachfolgenden Objekte reingehören und anschließend malst du die Objekte, auf die diese Transformation angewendet werden soll. Nun kannst du ggf. die Weltmatrix zurücksetzen (Matrix.Identity) und fängst wieder von vorne an. Also Welt wieder transformieren, die nächsten Objekte zeichnen usw...

Am Ende hast du dann etwa Folgendes:

device.BeginScene();
...
SetupMatricesObjectA();
DrawObjectA();
...
SetupMatricesObjectB();
DrawObjectB();
...
SetupMatricesObjectN();
DrawObjectN();
...
device.EndScene();
device.Present();

Zum Seitenanfang Homepage   ICQ    
 
DerHulk

Gepostet:
16.06.2006 18:03

   
Hi Jammni,

Habe mir das Irgendwie von der Vorgehensweise anders vorgestellt?!Aber es Funktioniert so wie du es sagst!
Na man lernt ja nie aus!Smilie

Hätte da noch ne kleine neben Frage wie kann ich eigendlich Vertexpositionen im Raum(3d) zu TransformedVertexPositionen
(also des Bildschirms) konvertieren?!

Geht das das mit:


Vector3 v3 = new Vector3(0,0,0);//->>VertexPosition im Raum;
v3.Project(viewport,projection,view,world);
v3;//->>VertexPosition in Bildschirm Koordinaten?



mfg DerHulk

Zum Seitenanfang    
 
Jammni

Gepostet:
16.06.2006 20:43

   
Hmm, also ohne mich jetzt da zu weit aus dem Fenster lehnen zu wollen, aber ich glaube, da gibts keine andere Möglichkeit als sowas von Hand zu machen. Schließlich ist es ja Sache der Grafikkarte sowas zu machen.
Zum Seitenanfang Homepage   ICQ    
 
DerHulk

Gepostet:
16.06.2006 23:10

   
Hi, habs vorhin mal ausprobiert und habs herausgefunden:

Also funktioniert eigendlich genua so wie ich es oben beschrieben habe!


Vector3 v3 = new Vector3(0,0,0);//->>VertexPosition im Raum;
v3.Project(Device.Viewport,Device.Transform.Projection,Device.Transform.View,Device.Transform.World);
v3;//->>VertexPosition in Bildschirm Koordinaten?


als gegenstück dafür bietet Vector3 dann noch die Funktion Unprojection

die dann Bildschirm Koordinaten in Räumlich Koordinaten umwandelt.

mfg DerHulk

Smilie
Zum Seitenanfang    
 
Jammni

Gepostet:
16.06.2006 23:43

   
Ok, wieder was dazugelernt ;-)
Zum Seitenanfang Homepage   ICQ