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

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

1

24.09.2004, 01:31

Problem mit Matrizen und Rendern eines Modells

Hi,
ich wollt eine Pyramide rendern. Model ist mit Milkshape erstellt worden. 10 x 10 x 10 Einheiten groß. Keine Textur vorhanden nur ein Material

Modell wird initialisiert:

C-/C++-Quelltext

1
2
if(K_Menu->mMiene->Init("Data\\Pyramide.tbm","Data\\",""))
    TB_ERROR("Fehler beim initialsieren des Mienen Modells", TB_ERROR);


Code zum rendern:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
            // Rotations- und Translationsmatrix der Miene erzeugen

            mRotation = tbMatrixRotationY(TB_DEG_TO_RAD(fTime * 90.0f));
            mTranslation = tbMatrixIdentity(); // Es soll keine verschiebung stattfinden


            // Beide Matrizen kombinieren und als Weltmatrix einsetzen

            mWorld = mRotation * mTranslation;
            tbDirect3D::SetTransform(D3DTS_WORLD, mWorld);

            // Camera

            mCamera = tbMatrixCamera(vCameraPos, vCameraDir);
            tbDirect3D::SetTransform(D3DTS_VIEW, mCamera);

            // Projektionsmatrix erstellen und einsetzen

            fAspect = (float)(g_pGQ->m_Config.Direct3D.VideoMode.Width) / (float)(g_pGQ->m_Config.Direct3D.VideoMode.Height);
            mProjection = tbMatrixProjection(TB_DEG_TO_RAD(60.0f), fAspect, 1.0f, 100.0f);
            tbDirect3D::SetTransform(D3DTS_PROJECTION, mProjection);

            // Puffer leeren und Szene beginnen

            tbDirect3D::Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
                tbColor(0.0f, 0.0f, 0.0f), 1.0f, 0);

            // Miene zeichnen

            if(mMiene->Render())
                TB_ERROR("Rendern von Miene hat nicht funktioniert",TB_ERROR);

            // Ein Richtungslicht erstellen mit der Richtung der Kamera

            ZeroMemory(&Light, sizeof(D3DLIGHT9));
            Light.Type = D3DLIGHT_DIRECTIONAL;
            Light.Diffuse = tbColor(0.5f, 0.5f, 0.5f);
            Light.Ambient = tbColor(0.5f, 0.5f, 0.5f);
            Light.Specular = tbColor(0.5f, 0.5f, 0.5f);
            Light.Direction = vCameraDir;
            tbDirect3D::SetLight(0, &Light);
            tbDirect3D::LightEnable(0, TRUE);


Effekt:

Zitat


// Dieser Effekt wurde automatisch vom TriBase-Tool ModelConverter generiert.
// Hinweis: um einen Tabulator einzufügen, drücken Sie <Strg+Tab>!

DWORD NumTextures = 0;

TECHNIQUE T1
{
PASS P1
{
// Es gibt keine Textur - Farbe kommt aus der Streufarbe!
// Wenn Sie doch eine benutzen, ändern Sie "SelectArg2" in "Modulate" um!
Texture[0] = NULL;
ColorOp[0] = SelectArg2;
ColorArg1[0] = Texture;
ColorArg2[0] = Current;

// Es scheint keine Opazitätstextur zu geben!
// Wenn Sie doch eine benutzen, ändern Sie "SelectArg2" in "Modulate" um!
AlphaOp[0] = SelectArg2;
AlphaArg1[0] = Texture;
AlphaArg2[0] = Current;

// Materialeinstellungen
MaterialDiffuse = {0.000f, 0.000f, 1.000f, 1.000f};
MaterialAmbient = {0.000f, 1.000f, 0.000f, 0.000f};
MaterialEmissive = {0.000f, 0.000f, 0.000f, 0.000f};
MaterialSpecular = {0.000f, 0.000f, 0.000f, 0.000f};
MaterialPower = 0.000f;

}
}


Ich will die Pyramide nur rotieren lassen. Die Kamera ist auf Position 0,5,-20 und zeigt nach 0,0,1. Es kommt leider nur ein schwarzer bildschirm, aber das Programm läuft noch da es auf meine Tasteneingaben reagiert. Wenn Enter gedrückt wird, wird es beendet. Ich hab mir die Stellen nochmal im buch durchgelesen und im Code von den Beispielprogs gekuckt. Das obere ist dabei rausgekommen. Ich finde es müsste funktionieren.
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

24.09.2004, 10:40

Render-States etc. ...?

Hi bassdscho,

bist Du Deinen Code durchgegangen, um zu gucken, ob Du irgendeine Anweisung auskommentiert hast?
Was hast Du denn für Render-States gesetzt?

MfG - Steven77.

PS: Mit "Miene" meinst Du Mine, oder?

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

3

24.09.2004, 13:01

Mit Miene meine ich Mine. Ich bin den Code 3mal durchgegangen und gekuckt ob ich mal wieder den Fehler mit den Komentaren gemacht hab. Diesml nicht.
Aber Renderstates ist ein gutes stichwort. Ich hab gedacht die werden im Effekt gesetzt. Das macht das Progi vom David wohl nicht automatisch. Was muss ich den da für welche setzten:

Z-Buffer an
Alpha aus
Licht an
und das nur die Dreiecke gezeichnet werden die gegenden Uhrzeiger gezeichnet sind. Welcher ist das nochmal CCW oder CW?

Das muss ich nochmal nachlesen glaub. Eigentlich sollte die Miene ganz normal gezeichnet werden
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

4

24.09.2004, 13:10

CCW-Counter Clockwiese Dreiecke werden nicht gezeigt
CW Clockwise (Uhrzeigersinn) werden nicht gezeichent!

Könnte auch am up Vketor der Kamera leigen, ich hatte grad keine Lust das nachzuschauen. Jedenfalls darf der nicht mit dem LookAt übereinstimmen, sonst gibts Blackscreen!
Lieber dumm fragen, als dumm bleiben!

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

5

24.09.2004, 13:25

Liegt er nicht, LookAt ist 0,0,1, und Up Vektor ist Standart(0,1,0)
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

6

24.09.2004, 16:40

Ok hat sich erledigt. Die Camera Position ist irgendwie nicht gesetzt worden und mitten im Modell gelandet.
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

Werbeanzeige