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

Jawaiica

Treue Seele

  • »Jawaiica« ist der Autor dieses Themas

Beiträge: 134

Wohnort: Hannover

Beruf: Student

  • Private Nachricht senden

1

25.07.2011, 21:34

[Direct3D & C++] Testraum erstellen?

Hallo Leute,

ich habe mir vor kurzem den Petzold geholt und bin momentan noch am lernen, aber um auch etwas mehr in die Spieleprogrammierung zu gehen, wollte ich mir direct3D anschauen. Bisher habe ich alles verstanden, bis auf die Matrizen. Ok, eigentlich habe ich diese ebenfalls verstanden, nur ich weiß nicht direkt wie ich jetzt einen kleinen Testraum erstellen könnte ( Licht kann ich schon benutzen, weshalb ich das mal testen wollte ). Meine Idee war es einen 1.0f x 1.0f x 1.0f Würfel zu erstellen und dann für jede Wand eine Translationsmatrix und eine Skaliermatrix anzuwenden, doch dann wusste ich nicht mehr genau, wie ich die Wände dann richtig positionieren muss. Daher meine Frage:

Wie gestaltet man am besten so einen Raum? Erstellt man eine neue Vertex Struktur und benutzt dann vier Translationsmatrizen und eine Rotationsmatrix um die Wände zu erstellen und der Scalematrix aus dem "Weg" zu gehen, oder macht man das eher wie ich vor hatte mit einem 1.0f x 1.0f x 1.0f Würfel denn man dann skaliert und verschiebt?

Ich hoffe ihr könnt mir diese Frage beantworten ( aber bitte nicht mit Sätzen wie probiere es aus, denn ich bin mir sicher ich könnte es mit beiden Möglichkeiten schaffen einen Testraum zu erstellen, nur welche die bessere Methode dafür ist weiß ich leider nicht ).

MfG Jawaiica'
"Die Sekunde ist die Dauer von 9 192 631 770 Perioden der Strahlung, die dem Übergang zwischen den beiden Hyperfeinstrukturniveaus des Grundzustandes des Atoms Caesium 133 entspricht."

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Jawaiica« (25.07.2011, 21:39)


Fireball

Alter Hase

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

2

26.07.2011, 10:08

Petzold? Gute Wahl! Der WinApi32 Guru überhaupt.

Ehrlich gesagt verstehe ich nicht was du vor hast. Du schreibst, dass du einen Raum erstellen willst. Ich gehe davon aus, dass er dann noch nicht existiert. Dann schreibst du jedoch, dass du Licht schon benutzen kannst. Wie geht das ohne eine Umgebung in die du zeichnen kannst?

Ich würde es so machen ...

1. Baue ein Fenster

2. Initialisiere Direct3D

3. Zeichne ein Dreieck

4. Zeichne 2 Dreiecke um ein Rechteck zu erhalten

5. Führe einen Index ein, um schneller zu zeichnen.

6. Erstelle einen großen Würfel

7. Setze die Kamera und Licht in das Innere


Gruß

Fb

Jawaiica

Treue Seele

  • »Jawaiica« ist der Autor dieses Themas

Beiträge: 134

Wohnort: Hannover

Beruf: Student

  • Private Nachricht senden

3

26.07.2011, 15:33

Ehm ja ok ich habe etwas versagt beim Ausdruck, was ich schon alles gelernt habe sorry :D Jedenfalls meinte ich das so, dass ich bisher soweit alles verstanden habe und anwenden kann, bis auf die Tatsache, dass ich nicht weiß, wie ich einen Testraum erstellen kann. Das heißt ich habe etwas noch nicht so richtig verstanden. ^^

Man kann die Position der Kamera also in den Würfel setzen und ebenfalls ein Point Light und dann sieht man die Wände?! Das stand nicht in meinem Tutorial das ich dazu gelesen habe! Danke ich werde das gleich mal ausprobieren :)
"Die Sekunde ist die Dauer von 9 192 631 770 Perioden der Strahlung, die dem Übergang zwischen den beiden Hyperfeinstrukturniveaus des Grundzustandes des Atoms Caesium 133 entspricht."

Fireball

Alter Hase

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

4

26.07.2011, 15:58

Hallo,

wenn du willst, dass ein Würfel von innen beleuchtet wird, dann musst du darauf achten, dass die Normalen-Vektoren nach innen zeigen.
Ansonsten kannst du das Licht nicht berechnen. Es kann sogar sein, dass du gar nichts siehst, weil an den Normalen Vektoren entschieden wird, ob ein Objekt gezeichnet wird oder nicht.

Schönen Gruß

Fb

Jawaiica

Treue Seele

  • »Jawaiica« ist der Autor dieses Themas

Beiträge: 134

Wohnort: Hannover

Beruf: Student

  • Private Nachricht senden

5

26.07.2011, 16:16

Also ich habe die Normal Vectoren jetzt mal umgedreht, sodass die von der ersten Seite in { 0.0f, 0.0f, -1.0f } zeigen und das halt bei jeder Seite so, dass die immer nach innen zeigen, aber wie du schon sagtest ich sehe nur schwarz. Was kann ich denn jetzt machen?

Edit: Jetzt weiß ich wie es geht! Man muss den Cullmode auf None setzen um die Innenseiten zu sehen. Das selbe Problem war bei mir auch bei dem Dreieck, da man da nicht die Rückseite sehen konnte, bis ich den Cullmode auf None gesetzt hatte.
"Die Sekunde ist die Dauer von 9 192 631 770 Perioden der Strahlung, die dem Übergang zwischen den beiden Hyperfeinstrukturniveaus des Grundzustandes des Atoms Caesium 133 entspricht."

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Jawaiica« (26.07.2011, 16:51)


Werbeanzeige