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

Anonymous

unregistriert

1

04.06.2004, 17:36

Problem mit Zeichnen von Normalen (tbObject Klasse)

Hallo,

ich wollte mal eine Funktion einbauen, die die Ausrichtung eines Objektes, basierend auf der Tribase Engine tbObject Klasse, zeichnet. Die Ausrichtung sieht dann so aus, dass einfach die 3 Achsen als Linien gezeichnet werden, ausgehend vom Objektmittelpunkt und dann in Richtung der jeweiligen Achsen.

Die Achsen sind ja m_vXAxis, m_vYAxis und m_vZAxis, mein Code zum zeichnen der Linien sieht so aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SVertex v[6];

// X-Achse
v[0].vPos = tbVector3(0.0f, 0.0f, 0.0f);
v[1].vPos = m_vXAxis;

// Y-Achse
v[2].vPos = tbVector3(0.0f, 0.0f, 0.0f);
v[3].vPos = m_vYAxis;

// Z-Achse
v[4].vPos = tbVector3(0.0f, 0.0f, 0.0f);
v[5].vPos = m_vZAxis;


// Renderstates setzen für Wireframe...
// Transfprmation für World setzen...


pD3DDevice->getDevice()->DrawPrimitiveUP(D3DPT_LINELIST, 3, v, sizeof(SVertex));


In einer anderen Funktion habe ich noch geschrieben, dass statt einem Model einfach ein einfacher Würfel angezeigt wird. Jetzt zum Problem:

Lasse ich das Objekt um die Z Achse drehen (z.B. 45 Grad pro Sekunde), so dreht sich der Würfel und natürlich auch, sowie auch alle 3 Linien, die die Achsen angeben. Das komische ist nur, dass sich die Linien genau doppelt so schnell drehen, wie der Würfel - wie kann denn das nur sein?
Sollte es nicht so sein, dass der Würfel gedreht wird, indem quasi der Normalvektor X als X-Ausrichtung genommen wird (Es wird ja eine Achsen-Rotationsmatrix in tbObject verwendet), so müsste doch die Linie, die in der Position "m_vXAxis" endet, genau in die Richtung zeigen, in die auch der Würfel rotiert wird?
Ich sehe den Zusammenhang einfach nicht, warum drehen sich die Linien genau doppel so schnell, wie der Würfel?

Ich nehme an, dass der Fehler beim Zeichnen der Linien zu finden ist, deswegen habe ich den Code oben gepostet. Falls Ihr das Zeichnen des Würfels auch noch sehen wollt, poste ich es natürlich gerne.

Und sollte ich das Problem nicht gut beschrieben haben, so poste ich auch gerne noch nen Screenshot.


Vielen Dank für Eure Hilfe!

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

2

04.06.2004, 18:59

M.E. nimmst Du schon transformierte Weltkoordinaten und setzt die DirectX als Modellkoordinaten vor, und sie werden dann nochmal transformiert .

Versuch mal

v[1].vPos = tbVector3(1.0f, 0.0f, 0.0f);

etc

In Deinem Beitrag befinden sich noch Fehler.
Bitte bearbeite die rot markierten Stellen und lösche diesen Text.
"Games are algorithmic entertainment."

Anonymous

unregistriert

3

04.06.2004, 20:17

Ach natürlich... mist, wenn man so auf auf den Code schaut, dann sieht man sowas einfach nicht :)

Danke Osram!

Werbeanzeige