Ich krieg den Würfel nicht richitg Textruriert....



  • Ja, also ich hab mir in nem Array die Vertizes eines Würfels gemacht, jede Ecke hat irgendeine Farbe. Nun will ich ihn Texturieren, aber ich kann mir das mit den Koordinaten nicht richtig vorstellen, wie welches u oder v wird, wenn der Würfel um 90 grad x, 180 grad y, und z.b 270 grad z gedreht wird. Bis jetzt hab ich diese Koordinaten aufgeschrieben:
    aber die Textur auf dem Würfel ist eben irgendwie völlig verdreht. Achso, ich arbeite mit STRIPS.

    g_aTriangleVertex[0].vPosition  = tbVector3( 1.0f,  1.0f, 0.0f);
    g_aTriangleVertex[1].vPosition  = tbVector3( 0.0f, 1.0f, 0.0f);
    g_aTriangleVertex[2].vPosition  = tbVector3(1.0f, 0.0f, 0.0f);
    g_aTriangleVertex[3].vPosition  = tbVector3(0.0f, 0.0f, 0.0f);  
    g_aTriangleVertex[4].vPosition  = tbVector3(0.0f,  0.0f, 1.0f);
    g_aTriangleVertex[5].vPosition  = tbVector3( 1.0f, 0.0f, 0.0f);
    g_aTriangleVertex[6].vPosition  = tbVector3(1.0f, 0.0f, 1.0f);
    g_aTriangleVertex[7].vPosition  = tbVector3(1.0f, 1.0f, 0.0f);  
    g_aTriangleVertex[8].vPosition  = tbVector3( 1.0f,  1.0f, 1.0f);
    g_aTriangleVertex[9].vPosition  = tbVector3( 0.0f, 1.0f, 0.0f);
    g_aTriangleVertex[10].vPosition = tbVector3(0.0f, 1.0f, 1.0f);
    g_aTriangleVertex[11].vPosition = tbVector3(0.0f, 0.0f, 0.0f);  
    g_aTriangleVertex[12].vPosition = tbVector3( 0.0f,  0.0f, 1.0f);
    g_aTriangleVertex[13].vPosition = tbVector3( 1.0f, 0.0f, 0.0f);
    g_aTriangleVertex[14].vPosition = tbVector3(1.0f, 0.0f, 1.0f);
    g_aTriangleVertex[15].vPosition = tbVector3(1.0f, 1.0f, 0.0f);  
    g_aTriangleVertex[16].vPosition = tbVector3( 1.0f,  1.0f, 1.0f);
    g_aTriangleVertex[17].vPosition = tbVector3( 0.0f, 1.0f, 0.0f);
    g_aTriangleVertex[18].vPosition = tbVector3(0.0f, 1.0f, 1.0f);
    
    g_aTriangleVertex[0].dwColor    = (DWORD)(tbColor(1.0f, 0.0f, 0.0f));
    g_aTriangleVertex[1].dwColor    = (DWORD)(tbColor(0.0f, 1.0f, 0.0f));
    g_aTriangleVertex[2].dwColor    = (DWORD)(tbColor(0.0f, 0.0f, 1.0f));
    g_aTriangleVertex[3].dwColor    = (DWORD)(tbColor(1.0f, 0.0f, 0.0f));
    g_aTriangleVertex[4].dwColor    = (DWORD)(tbColor(1.0f, 0.0f, 0.0f));
    g_aTriangleVertex[5].dwColor    = (DWORD)(tbColor(0.0f, 1.0f, 0.0f));
    g_aTriangleVertex[6].dwColor    = (DWORD)(tbColor(0.0f, 0.0f, 1.0f));
    g_aTriangleVertex[7].dwColor    = (DWORD)(tbColor(1.0f, 0.0f, 0.0f));
    g_aTriangleVertex[8].dwColor    = (DWORD)(tbColor(1.0f, 0.0f, 0.0f));
    g_aTriangleVertex[9].dwColor    = (DWORD)(tbColor(0.0f, 1.0f, 0.0f));
    g_aTriangleVertex[10].dwColor   = (DWORD)(tbColor(0.0f, 0.0f, 1.0f));
    g_aTriangleVertex[11].dwColor   = (DWORD)(tbColor(1.0f, 0.0f, 0.0f));
    g_aTriangleVertex[12].dwColor   = (DWORD)(tbColor(1.0f, 0.0f, 0.0f));
    g_aTriangleVertex[13].dwColor   = (DWORD)(tbColor(0.0f, 1.0f, 0.0f));
    g_aTriangleVertex[14].dwColor   = (DWORD)(tbColor(0.0f, 0.0f, 1.0f));
    g_aTriangleVertex[15].dwColor   = (DWORD)(tbColor(1.0f, 0.0f, 0.0f));
    g_aTriangleVertex[16].dwColor   = (DWORD)(tbColor(1.0f, 0.0f, 0.0f));
    g_aTriangleVertex[17].dwColor   = (DWORD)(tbColor(0.0f, 1.0f, 0.0f));
    g_aTriangleVertex[18].dwColor   = (DWORD)(tbColor(0.0f, 0.0f, 1.0f));
    
    g_aTriangleVertex[0].vTexture   = tbVector2(1.0f,  0.0f);
    g_aTriangleVertex[1].vTexture   = tbVector2(0.0f,  0.0f);
    g_aTriangleVertex[2].vTexture   = tbVector2(1.0f,  1.0f);
    g_aTriangleVertex[3].vTexture   = tbVector2(0.0f,  1.0f);
    g_aTriangleVertex[4].vTexture   = tbVector2(1.0f,  0.0f);
    g_aTriangleVertex[5].vTexture   = tbVector2(0.0f,  1.0f);
    g_aTriangleVertex[6].vTexture   = tbVector2(0.0f,  0.0f);
    g_aTriangleVertex[7].vTexture   = tbVector2(1.0f,  1.0f);
    g_aTriangleVertex[8].vTexture   = tbVector2(0.0f,  1.0f);
    g_aTriangleVertex[9].vTexture   = tbVector2(0.0f,  0.0f);
    g_aTriangleVertex[10].vTexture  = tbVector2(1.0f,  0.0f);
    g_aTriangleVertex[11].vTexture  = tbVector2(1.0f,  1.0f);
    g_aTriangleVertex[12].vTexture  = tbVector2(0.0f,  1.0f);
    g_aTriangleVertex[13].vTexture  = tbVector2(0.0f,  0.0f);
    g_aTriangleVertex[14].vTexture  = tbVector2(1.0f,  0.0f);
    g_aTriangleVertex[15].vTexture  = tbVector2(1.0f,  1.0f);
    g_aTriangleVertex[16].vTexture  = tbVector2(0.0f,  1.0f);
    g_aTriangleVertex[17].vTexture  = tbVector2(0.0f,  0.0f);
    g_aTriangleVertex[18].vTexture  = tbVector2(1.0f,  0.0f);
    

    Wie stellt ihr euch das vor mit dem ganzen drehen und so?
    Vielleicht könnt ihr mir ja mal die richtigen Koordinaten geben.
    Die von der Vorderseite stimmen schon.

    Gruß, Maxi



  • Also erstmal würde ich kein Strip nehmen sonder einen Indexbuffer. Das würde das ganze übersichtlicher und auch schneller machen.
    Ich glaub mit dem Drehen hast Du was falsch verstanden. Die Texturkoordinaten brauchst Du nur einmal am Anfang berechnen, 'mitgedreht' werden die dann später automatisch. Oder was genau willst Du drehen, den Würfel, oder?
    Außerdem braucht jeder Punkt 3 Texturkoordinaten, da jeder Punkt ja zu 3 Seiten des Würfels gehört. Alternativ erstellst Du einfach jeden Eckpunkt in 3facher Ausführung mit jeweils den Passenden Texturkoordinaten.



  • hm, danke erstmal für deine Antwort.
    Aber ich habe noch nie was von einem IndexBuffer gehört, höchstens von einem VertexBuffer. Ich benutze aber DravPrimitiveUp(..) also aus dem Systemspeicher die Vertizen lesen, weil David Scherfgen sagt 🙂 das ist nicht so kompliziert und für den Anfang reicht das auch aus.

    Mir ist auch gerade aufgefallen, dass mein Würfel kein richtiger Würfel ist, sonder nur ein Kasten, eine Setie fehlt, ich weiß auch nciht wie ich die mit in den Strip einbauen kann, da die Dreieckke da ja immer nebeneinander liegen.

    Vielleicht kann mir einer mal nen Link geben, z.B. wo mal ein ordentlicher Würfel angegeben ist oder so

    Gruß, amxi



  • Original erstellt von Maxi:
    ... weil David Scherfgen sagt 🙂 ...

    Na, wenn er es sagt, dann wird's schon stimmen 😉
    Schlag mal Seite 155 auf, dort fange ich an, Index-Buffer zu erläutern...



  • hihi, hallo david 🙂
    finde dein buch echt gut. Ich habe noch ein älteres amerikanisches, aber das ist so oberflächlich.. deins dagegen beschreibt alles sehr ausführlich das gefällt mir, auch wenn das meiste auf meinem PC so stark ruckelt, dass man es sich nicht lange angucken kann...

    Nun ja, Da war ich noch nicht, beim IndexBuffer, aber ich werde es mir mal durch lesen, das Buck leigt ja schließlich neben mir :-).

    Gruß, Maxi


Anmelden zum Antworten