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

09.06.2007, 14:54

Model Position

Hallo ich hätte da eine Frage wie ich eine Egoperspective erstellen kann.
Momentan ist es so dass die Kammera durch die Spielwelt bewegt wird über Tastatur und über die Maus kann man sich drehen und nach oben und unten schauen.
Mein Problem ist jetzt dass ich eben z.b. eine Waffe erstellen möchte die immer in die Blickrichtung der Kammera ausgelegt ist (kennt man ja von Doom usw.) nur weiss ich nun nicht wie ich die erreichen kann ich experimentiere nun schon ewig herum die Position des Models zu berechnen bekomme es aber nicht hin.
Könntet Ihr mir da etwas behilflich sein?
Danke!!!

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

09.06.2007, 14:56

Einfach das Model immer nach deinem Lookvektor orientieren.
@D13_Dreinig

3

09.06.2007, 19:50

Naja hab ich versucht aber ich bekomme es nicht hin hier mal der Code von ModelRenderer

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
void Model::Render()
{

    D3DXMatrixRotationX(&RotMatrixX,rot.x);
    D3DXMatrixRotationY(&RotMatrixY,rot.y);
    D3DXMatrixRotationZ(&RotMatrixZ,rot.z);
 
    D3DXMatrixIdentity(&RotMatrix);
    D3DXMatrixScaling(&RotMatrix,scale.x,scale.y,scale.z);

    D3DXMatrixMultiply(&RotMatrix,&RotMatrix,&RotMatrixX);
    D3DXMatrixMultiply(&RotMatrix,&RotMatrix,&RotMatrixY);
    D3DXMatrixMultiply(&RotMatrix,&RotMatrix,&RotMatrixZ);

    D3DXMatrixMultiply(&mMeshMatrix,&RotMatrix,&TransMatrix);

    D3DXMatrixTranslation(&TransMatrix,position.x,position.y,position.z);

    D3DXMatrixMultiply(&mMeshMatrix,&RotMatrix,&TransMatrix);
    d3dDevice->SetTransform(D3DTS_WORLD,&mMeshMatrix); 

    for( DWORD i=0; i<dMaterials; i++ )
    {
         d3dDevice->SetMaterial( &pMeshMaterials[i] );
         d3dDevice->SetTexture( 0, pMeshTextures[i] );
         pMesh->DrawSubset( i );
    }
}

Ich kann mein Model Skalieren Rotieren und eine Position zuweisen aber wie weise ich dem Model zu dass es immer in der Sicht der Kammera dargestellt werden soll oder besser gesagt an einer bestimmten Position vor der Kammera hab es zwar soweit dass es immer vor der Kammera ist also indem ich die Position der Kammera übergebe aber wenn ich mich drehe dreht es sich ja nicht mit und genau da ist mein Problem.

DarioFrodo

Treue Seele

Beiträge: 349

Wohnort: Kerkau, 100km nördlich von Magdeburg

Beruf: Selbstständig

  • Private Nachricht senden

4

09.06.2007, 20:41

Ich sehe da nicht so richtig durch, weil ich nicht genau weiß, was diese Funktionen machen, denn ich arbeite mit OpenGL. Aber vom Prinzip her
musst du bedenken, was die Kamera eigentlich repräsentiert.
Im Prinzip verschiebst du ja alle Objekte um die Kameraposition und rotierst diese auch entsprechend. Das heißt also, um Objekte immer da wo die Kamera ist, darzustellen, musst du für diese Objekte die Kamera außen vor lassen.

Also das Objekt rendern, ohne es mit der Kameramatrix zu transformieren.
Erst wenn der letzte Fluss vergiftet,
der letzte Baum gefällt,
der letzte Fisch gefangen,
dann werdet ihr merken, dass man Geld nicht essen kann

Man verkauft die Erde nicht, auf der die Menschen wandeln.

- Indianerweisheiten

Ich bin auch ein einhornimmond ;)

5

09.06.2007, 23:52

Also ich bekomme es nicht hin dass das Model vor der Kammera bleibt.

DarioFrodo

Treue Seele

Beiträge: 349

Wohnort: Kerkau, 100km nördlich von Magdeburg

Beruf: Selbstständig

  • Private Nachricht senden

6

10.06.2007, 14:18

Müsste aber gehen, wenn du die Kameramatrix auf Identy setzt, und dann nur die Projectionsmatrix und die Matrix des Modells (Um es z.B. 1 m Vorm player zu rendern).
So mache ich es doch auch es muss gehen.
Erst wenn der letzte Fluss vergiftet,
der letzte Baum gefällt,
der letzte Fisch gefangen,
dann werdet ihr merken, dass man Geld nicht essen kann

Man verkauft die Erde nicht, auf der die Menschen wandeln.

- Indianerweisheiten

Ich bin auch ein einhornimmond ;)

7

10.06.2007, 19:23

Ja ich werde mal meine ganzen matrix berechnungen neu erstellen.

8

10.06.2007, 21:29

Also es geht jetzt.
Das Problem lag an der Skybox da ich sie immer nach meiner Kammera verschoben habe gab es da irgendwie Probleme aber wenn ich ihr einen festen Wert zuweise geht es.
Danke für deine Hilfe!

Werbeanzeige