Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » DirectX » Ein paar Fragen zu Vertices

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
13.07.2005, 10:04 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ich hab mir hier (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/TutorialsAndSamples/Tutorials/Direct3DTutorials.asp) mal die ersten beiden Tutorials angeguckt und hab da ein paar Fragen.
Das 1. Beispiel stellt ein Dreieck da und war relativ verständlich bis auf die Customvertex Struktur, welche folgendermaßen definiert ist:

C++:
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)
struct CUSTOMVERTEX
{
    FLOAT x, y, z, rhw; // The transformed position for the vertex.
    DWORD color;        // The vertex color.
};
CUSTOMVERTEX vertices[] =
    {
        { 250.0f, 50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
        { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
        { 50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
    };


Die Koordinatenvergabe und die Farbe ist klar, nur was ist rhw?

Beim 2. Beispiel wird ein anderes Dreiceck nun um seine Y-Achse gedreht. Hier verstehe ich die Vertexstruktur aber überhaupt nicht:

C++:
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)
struct CUSTOMVERTEX
{
    FLOAT x, y, z; // The transformed position for the vertex.
    DWORD color;        // The vertex color.
};
CUSTOMVERTEX vertices[] =
    {
        { -1.0f,-1.0f, 0.0f, 0xffff0000, },
        {  1.0f,-1.0f, 0.0f, 0xff00ff00, },
        {  0.0f, 1.0f, 0.0f, 0xff00ffff, },
    };


Das Dreieck ist von der Größe fast identisch, aber ich verstehe die Koordinatenvergabe nicht. Wie muss ich die Werte verstehen?


Wenn ich versuche die Struktur aus dem 1. Beispiel ins 2. zu übernehmen bekomme ich nichts angezeigt. Hab ich da was falsch gemacht oder brauche ich für die Drehung definitiv eine Struktur wie im Beispiel 2?

Dieser Post wurde am 13.07.2005 um 10:06 Uhr von Guybrush Threepwood editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.07.2005, 10:23 Uhr
Oliver
S2-Pixelgeneral


RHW ist der "Abstand" eines Punktes zum Bildschirm. RHW Vertices sind schon transformiert, bei den xyz übernimmt das Direct3D die Projektion auf den Bildschirm.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.07.2005, 10:34 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Also das mit dem Abstand hab ich nicht verstanden

Transformiert heißt das wenn ich als Koordinate 250, 50 angebe das an der selben Stelle ist wie wenn ich das bei CreateWindow oder so als Koordinate angebe?
Trotzdem verstehe ich aber noch nicht wie das bei der 2. Struktur funktioniert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.07.2005, 10:51 Uhr
Oliver
S2-Pixelgeneral



Zitat:

Transformiert heißt das wenn ich als Koordinate 250, 50 angebe das an der selben Stelle ist wie wenn ich das bei CreateWindow oder so als Koordinate angebe?



Sozusagen, damit mein ich halt die Projektion auf den Bildschirm ( also von 3D -> 2D )

Was verstehst du bei der 2. nicht?
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.07.2005, 10:55 Uhr
xXx
Devil


Du hast ja sicher die SDK Dokumentation, oder?! Dann klickst du dort mal auf Suchen und gibst rhw ein, dann findet der dir ne erklärung. Hba nachgeguckt.
Dieser Post wurde am 13.07.2005 um 10:56 Uhr von xXx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
13.07.2005, 11:00 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von Oliver:

Zitat:

Transformiert heißt das wenn ich als Koordinate 250, 50 angebe das an der selben Stelle ist wie wenn ich das bei CreateWindow oder so als Koordinate angebe?



Sozusagen, damit mein ich halt die Projektion auf den Bildschirm ( also von 3D -> 2D )


Ok, und wofür gwnau ist der rhw wert da? wenn ich den ändere sehe ich keinen unterschied an meinem dreieck.
[quote Oliver]
Zitat:

Was verstehst du bei der 2. nicht


Wie ich mir die Koordinaten vorzustellen habe.
Hier

C++:
CUSTOMVERTEX vertices[] =
    {
        { 250.0f, 50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
        { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
        { 50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
    };


weiß ich das ich bei 250,50; 250,250 und 50,250 jeweils einen Punkt habe die sich zu einem Dreieck verbinden. Ich kann mir halt anhand der Koordinaten vorstellen wo die Punkte liegen.

Bei der 2. Struktur kann ich das nicht weil diese Koordinaten ja auf irgendeinem anderem System basieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
13.07.2005, 11:18 Uhr
Oliver
S2-Pixelgeneral



Zitat:

Ok, und wofür gwnau ist der rhw wert da? wenn ich den ändere sehe ich keinen unterschied an meinem dreieck.



rhw kannst du einfach auf 1 setzen.


Zitat:

Bei der 2. Struktur kann ich das nicht weil diese Koordinaten ja auf irgendeinem anderem System basieren.




Mal dir ein Koordinatensystem auf mit x und y Achse, x von -1 bis 1 und y dasselbe, dann setz da die Punkte rein, verbinde das und du haste ein Dreieck.



Code:

    0; 1
     /\
    /  \
   /    \
   ------  1; -1
-1; -1


--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
13.07.2005, 13:02 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ja klar, aber für was steht denn die 1? Wie ist die Einheit? Wenn das das selbe System wäre wie im 1. Beispiel dann hätte ich ja ein gaaanz kleines dreieck oben links in der Ecke meines Fensters...
Dieser Post wurde am 13.07.2005 um 13:04 Uhr von Guybrush Threepwood editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
13.07.2005, 13:12 Uhr
Oliver
S2-Pixelgeneral


Wie groß das am Ene dann wirklich ist, kommt ja darauf an, wo du die Kamera platziert hast, bzw. was du als Transformationsmatrix festgelegt hast.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
13.07.2005, 13:24 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Achso verstehe

Das bringt mich dann gleich zur nächsten Frage

Das Dreieck im 2. Beispiel dreht sich ja um die Y Achse und vor dem Rendern wird folgende Funktion aufgerufen:

C++:
HRESULT SetupMatrices()
{
    D3DXMATRIXA16 matWorld;

    UINT  iTime  = timeGetTime() % 1000;
    FLOAT fAngle = iTime * (2.0f * D3DX_PI) / 1000.0f;
    D3DXMatrixRotationY( &matWorld, fAngle );
    g_.pD3DDevice->SetTransform( D3DTS_WORLD, &matWorld );


    D3DXVECTOR3 vEyePt( 0.0f, 3.0f,-5.0f );
    D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
    D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
    D3DXMATRIXA16 matView;
    D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
    g_.pD3DDevice->SetTransform( D3DTS_VIEW, &matView );

    D3DXMATRIXA16 matProj;
    D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f );
    g_.pD3DDevice->SetTransform( D3DTS_PROJECTION, &matProj );
    return 1;
}



Der 1. Block setzt wohl die World Transformation und ist anscheinend für die Drehung verantwortlich. Ich habe hier die Vermutung das nicht das Dreieck gedreht wird sondern die Kamera bzw. die Welt drumherum. Ist das richtig?

Der 2. Block ist anscheinend für die Kamera verantwortlich allerdings hab ich noch nicht so ganz raus was vEyePt, vLookatPt und vUpVec im Einzelnen sind.

Was der 3. Block macht hab ich noch überhaupt nicht raus

Aber vielen Dank schonmal bis hierher
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ DirectX ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: