Du bist nicht angemeldet.

Werbeanzeige

1

03.09.2010, 23:28

3D Modell "Fixieren"

Hallo ich hätte eine kleine Frage: wie bekomme ich es hin das ich ein 3D Modell fest auf dem Bildschirm angezeigt bekomme? Also wenn ich die Kamera Drehe und mich Bewege soll das Modell immer an der selben Stelle bleiben. (Waffe in einem Egoshooter). Das die Waffe an meiner Position bleibt ist kein Problem. nur wenn ich die Kamera "Drehe" verschwindet die Waffe eben aus dem Sichtfeld.

2

03.09.2010, 23:40

Du könntest das Modell doch einfach um deine Camera Position mit rotieren lassen.

C-/C++-Quelltext

1
2
3
4
while(true)
{
    printf("Schon wieder aufgehangen!?");
}

3

04.09.2010, 00:08

Das krieg ich irgendwie nicht so richtig hin. :(

4

04.09.2010, 00:33

Ich Kriege die Models zwar Rotiert. aber nie so das es 100%ig passt (Das das Model auch in der Position bleibt)

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

5

04.09.2010, 01:23

Ohne Quellcode kann man nicht viel helfen, aber ich nehme an, dass du dein Objekt als erstes verschiebst und dann rotierst, was die falsche Reihenfolge ist.

6

04.09.2010, 01:30

Erst rotieren, dann translieren, im endeffect ist das aber völlig wurscht, jenachdem welchen Ansatz er verfolgt. Aber das ist erstmal nicht so schwer. Worauf du achten musst, ist das du das Modell nicht einfach um den Ursprung rotierst, sondern um einen beliebigen Punkt, in dem Fall deine Kamara Position.

Erstes Google Ergebnis:
http://www.hinterseher.de/Diplomarbeit/Transformation.html

jetzt ist die Frage ob du DX oder ähnliche Hilfefunktionen nutzen willst. Falls ja, werden diese bestimmt eine Funktion in der Art bereit stellen.

C-/C++-Quelltext

1
2
3
4
while(true)
{
    printf("Schon wieder aufgehangen!?");
}

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Potatoman« (04.09.2010, 01:37)


BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

7

04.09.2010, 01:43

@Potatoman
Das ist kein bisschen "wurscht". Rotationsmatrix x Translationsmatrix ist nicht das gleiche wie Translationsmatrix x Rotationsmatrix, wobei das 2. richtig ist.

Du kannst es aber auch komplizierter machen, wie es ist, indem du das Objekt um einen anderen Punkt rotierst.

8

04.09.2010, 15:05

denke das Problem ist eher das ich das Model zwar um sich selbst gedreht bekomme aber nicht "um mich". das heißt wenn ich mich um 180° drehe hab ich den Lauf im gesicht ^^

9

04.09.2010, 15:21

Deswegen sollt du es ja auch um einen Punkt drehen. Den Link dazu habe ich dir bereits geschickt ;)

C-/C++-Quelltext

1
2
3
4
while(true)
{
    printf("Schon wieder aufgehangen!?");
}

Fred

Supermoderator

Beiträge: 2 132

Beruf: Softwareentwickler

  • Private Nachricht senden

10

04.09.2010, 19:18

Theoretisch kannst du auch Kugelkoordinaten zum Ausrichten deines Objektes verwenden.
Für einen Punkt auf der Kugeloberfläche gilt:
§ x = r \cdot \sin \vartheta \cdot \cos \varphi \\ y = r \cdot \sin \vartheta \cdot \sin \varphi \qquad \\ z = r \cdot \cos \vartheta . §
Näheres hierzu siehe Wikipedia

Wenn du dann deine Kamera nach rechts drehst ändert sich eben einfach der Winkel §\varphi§. So kannst du dein Objekt dann recht leicht von der Kamera abhängig machen.

Werbeanzeige