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

25.10.2011, 19:59

Unterschied zwischen dem "Up-Vector" und dem Normalenvektor einer Ebene

Hallo.

Ich arbeite mit der Ogre Engine und habe wegen der Erstellung der Ebenen eine kleine Unklarheit:

Hier gibt man den Normalenvektor der Ebene an:

C-/C++-Quelltext

1
Ogre::Plane planeGround(Ogre::Vector3::UNIT_Y, 0);



Hier muss man allerdings noch einen Vektor (den "Up-Vektor") eingeben, in diesem Fall UNIT_Z

C-/C++-Quelltext

1
2
3
4
Ogre::MeshManager::getSingleton().createPlane("planeGround",
                                                Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
                                                planeGround, 1500, 1500, 20, 20, true, 1, 5, 5,
                                                Ogre::Vector3::UNIT_Z);


Nach meinem Verständnis gibt der Up Vektor an, wo die Oberseite der Ebene ist, sprich, er müsste bei meiner Ebene eigentlich auch UNIT_Y sein. Wenn man allerdings das versucht, bekommt man einen Laufzeitfehler, dass UpVector und Normalenvektor parallel sind.

Nanu? Da hab ich mir den Up-Vektor wohl falsch gedeutet...

Die Frage die ich mir (und euch) stelle: was ist ein Up-Vektor und wozu braucht man ihn überhaupt?? Die Ausrichtung einer Ebene ist doch eigentlich durch die Angabe eines Normalenvektors festgelegt.

lg Paul

Tobiking

1x Rätselkönig

  • Private Nachricht senden

2

25.10.2011, 21:12

Jetzt einfach mal so ins Blaue geraten gäbe es da noch die Rotation der Ebene um die Normale. Das hat auf die Form der Ebene natürlich keinen Einfluss, aber wenn die Ebene texturiert ist, bestimmt es die Ausrichtung der Textur.

3

25.10.2011, 22:36

Hmm kann gut sein. Das würde also bedeuten, der UpVector muss immer senkrecht zum Normalenvektor sein. Werd ich morgen mal mit ner Textur ausprobieren.

4

26.10.2011, 05:51

In 3D-Editoren..und ich denke da macht es hierzu keinen Unterschied .....kuemmern sich diese Vectoren um die Ausrichtung des Objekts im local-space.
Z.B. bei einer geriggten Hand mit entsprechenden Joints fuer die Knoechel, zeigt jeder Joint auf den nachfolgenden (Aim-Vector).
Der Up-Vector versucht dem world-up-vector am naechsten zu kommen.
Ballt man eine Faust rotieren alle Knoechel, ausser die des Daumes ungefaehr um die gleiche Achse. Der Up-Vector vom Daumen ist aber um ca. 90 Grad verdreht


Zumindest glaub ich das es so richtig ist....


(Link)


(hier ist der Aim-Vector "verkehrt rum" weil die Achsen gespiegelt wurden)

5

26.10.2011, 15:25

Sorry, Shoot, aber das beantwortet nicht meine Frage.
Ich wollte wissen, was der Unterschied zwischen Normalen- und Up-Vektoren ist, speziell bei Ebenen, da sich diese ja nur in 2 richtungen ausdehnen,.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

26.10.2011, 16:11

Jetzt einfach mal so ins Blaue geraten gäbe es da noch die Rotation der Ebene um die Normale.

Exakt. Ich hab zwar keine Ahnung von Ogre, aber genau das legt ein "Up-Vector" normal fest. Ist ja z.B. bei einer Kameramatrix auch nicht anders. Da hat man auch einen Up-Vector der die Rotation um die Blickrichtung definiert. Deine Ebene ist zwar durch Punkt und Normalvektor exakt definiert. Aber wenn du die Basis eines Koordinatensystems das die Ebene aufspannt haben willst, dann brauchst du einen zweiten Vektor der in der Ebene liegt.

Werbeanzeige