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

1

03.08.2009, 21:05

Kamera funktioniert nicht richtig

hi @ all,

ich hatte das bedürfniss nach 1/2 jahr oberflächenprogrammierung in java mal wieder was in 3d zu machen. also habe ich mir das buch von david wieder vorgenommen. die dreiecksstruktur wird mit daten gefüttert, DrawPrimitiveUP gibt s_ok zurück. ich vermute einfach die kamera funzt nicht richtig, bzw ich stehe auf dem dreieck.

hier der code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
InitCamera(D3DXVECTOR3 camPosition, D3DXVECTOR3 camViewPoint)
{
    D3DXMATRIX ViewMatrix;
    D3DXMatrixLookAtLH(&ViewMatrix, 
                       &camPosition, 
                       &camViewPoint, 
                       &D3DXVECTOR3(0.0f, 1.0f, 0.0f));

    m_lpD3DDevice->SetTransform(D3DTS_VIEW, &ViewMatrix);

    D3DXMATRIX ProjMatrix;
    D3DXMatrixPerspectiveFovLH(&ProjMatrix, 
                               D3DX_PI/4, 
                               static_cast<float>(1024) / 
                               static_cast<float>(768), 
                               0.1f, 
                               100.0f);

    m_lpD3DDevice->SetTransform(D3DTS_PROJECTION, &ProjMatrix);
}

C-/C++-Quelltext

1
.InitCamera(D3DXVECTOR3(-10.0f, 0.0f, 0.0f), D3DXVECTOR3(1.0f, 0.0f, 0.0f));

C-/C++-Quelltext

1
2
3
4
.m_lpD3DDevice->DrawPrimitiveUP(    D3DPT_TRIANGLELIST,
                                                        1,
                                                        &TriangleVertex,
                                                        sizeof(SVertex))));


C-/C++-Quelltext

1
2
3
4
5
6
TriangleVertex[0].vPosition = D3DXVECTOR3( 0.0f,  1.0f, 0.0f);
TriangleVertex[1].vPosition = D3DXVECTOR3( 1.0f, -1.0f, 0.0f);
TriangleVertex[2].vPosition = D3DXVECTOR3(-1.0f, -1.0f, 0.0f);
TriangleVertex[0].dwColor = D3DCOLOR_XRGB(255, 0, 0);
TriangleVertex[1].dwColor = D3DCOLOR_XRGB(0, 255, 0);
TriangleVertex[2].dwColor = D3DCOLOR_XRGB(0, 0, 255);


C-/C++-Quelltext

1
2
3
4
m_lpD3DDevice->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE)
m_lpD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
m_lpD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
m_lpD3DDevice->SetRenderState(D3DRS_DITHERENABLE,true);

das sind der entsprechenden quellcodeausschnitte wo ich den fehler vermute. ich denke mal das es was mit der clippingebene zu tun hat, da ich ein ähnliches problem schonmal hatte.

fehler werden natürlich abgefangen, aber aus übersichtlichkeitsgründen habe ich die prüfungen herausgenommen

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

2

03.08.2009, 21:44

versuch mal in richtung z-achse zu gucken:

Vector(0.f, 0.f, -10.f)

das dreieck sieht auf den ersten blick ganz ok aus.

kannst auch mal versuchen die weltmatrix zu setzen (z.b. auf die einheitsmatrix),
da die gerne uninitialisiert ist.
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

3

03.08.2009, 22:46

dreck, ich hab den wald vor lauter bäumen nicht gesehen. die kamera war einfach falsch positioniert. danke Gotbread

Werbeanzeige