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

08.11.2011, 13:21

Objekte bewegen sich mit Kamera

Hallo
Ich habe folgendes problem: Wenn ich mein Kamera bewege dann bewegen sich mein Objekte leicht mit O.o. Leicht bedeutet nicht sehr schnell. Aber um so größ erdie Objekte sind desto schneller bewegen sie sich.
Ich habe folgenden Code um ein Objekt zu bewegen:

C-/C++-Quelltext

1
2
3
4
5
mWorld = tbMatrixIdentity();
    m_vSpeakerPos = tbVector3Normalize(m_vSpeakerPos);
    mWorld =tbMatrixTranslation(m_vSpeakerPos);
    D3D.SetTransform(D3DTS_WORLD, mWorld);
    m_pSpeaker->Render(-1, -1, TRUE, FALSE);

Mit der TriBase ;)
m_vSpeaker pos wird nicht verändert und ist immer (50.0f,0.0f,50.0f).
Meine Kamera bewegung ist so:

C-/C++-Quelltext

1
2
3
m_mCamera = tbMatrixCamera(m_vCameraPos,
                             m_vCameraPos + m_vCameraDir);
    tbDirect3D::Instance().SetTransform(D3DTS_VIEW, m_mCamera);

Ich habe dann noch ein Boden:

C-/C++-Quelltext

1
2
3
4
    D3D.SetTransform(D3DTS_WORLD, tbMatrixIdentity());

    // Boden Rendern
    m_pGround->Render(-1,-1,TRUE,FALSE);

Und wenn man nunhinguckt bewegt sich mein Objektobwohl ich nichts verändere O.o
Danke;)
MfG

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

08.11.2011, 13:22

Wahrscheinlich bildest du dir das nur ein.

3

08.11.2011, 13:25

Nein wirklich nicht ich habe 2 Objekte naja 3 mit Boden ;) und wenn ich mich bewege steckt das ein aufeinmal in dem anderen !
Danke

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

08.11.2011, 13:28

Wie groß sind die Objekte, wieviel musst du dich bewegen dass das passiert und wie erzegust du deine Projection-Matrix. Ich vermutmal dass es an der Depth-Buffer-Precision liegt...

5

08.11.2011, 13:48

Die objekte sind ungefähr 20 einheiten und 5 einheiten( in 3ds max beim Freund ;) )
Ich muss mich nicht viel bwegen aber erst nach einer längeren zeit sieht man den unterschied.
Projectionsmatrix:

C-/C++-Quelltext

1
2
mProjection = tbMatrixProjection(TB_DEG_TO_RAD(60.0f), tbDirect3D::Instance().GetAspect(), 0.1f, 30000.0f);
tbDirect3D::Instance().SetTransform(D3DTS_PROJECTION, mProjection);

Danke

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

08.11.2011, 13:59

Jo, mit diesen Werte für die near- und far-Plane sollte dich nix wundern. Man sollte die near-Plane immer so weit weg wie möglich und die far-Plane so nahe wie möglich platzieren um den Depth-Buffer optimal auszunutzen. Mit einer Range von [0.1, 30000.0] nutzt du bei diesen Objektabmessungen wohl gerade mal ein paar Prozent vom Depth-Buffer. Nimm mal Werte in der Gegend von [1.0, 1000.0] und staune ;)

7

08.11.2011, 14:10

Danke das hat schon geklappt die bewegung ist sehr wenig geworden. Allerdings dreht sich das Objekt immernoch mit der Kamera O.o zwar nur bisschen aber wenn die Kamera ein Hlabkresi von 180° macht hat sich das Objekt um 10° gedrehtr O.o
Wie löst man das?
Danke ;)
PS: Wieso genau geht das jetzt eigentlich?
EDIT wenn ich die far planeauf 300 setzte bewegt sich das objekt zwar nicht aber dreht sich schnelle O.o Ich bin verwirrd...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

08.11.2011, 14:17

Wie weit ist das Objekt denn von der Kamera entfernt?

9

08.11.2011, 14:18

Das variiert. Die makera ist der Mensch also FP. ;)
Aber ich schätze mal so 50 einheiten.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

08.11.2011, 14:21

Die Sache ist die: Wenn das Objekt so groß oder so weit weg ist, dass es die far-Plane schneidet, dann sieht das evtl. so aus als würde es rotieren. Tatsächlich rotiert es aber nicht, sondern wird einfach nur ab einer gewissen Entfernung abgeschnitten.

Werbeanzeige