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

10.09.2008, 14:10

Nochmal das mit den Normalen...

hallo...ich hatte schonmal hier (ich denk hier, in diesem bereich) die frage gestelt, wie man ein dreieck anhand seiner normalen "nach oben" zeigen lässt...naja, mangels fähigkeit mich aus zu drücken und zu verstehen, was die anderen mir mitteilen wollen, hat sich dann mindestens einer so n bißschen aufgeregt, hatte ich das gefühl. weiss ich jetzt nich mehr so genau, hatte danach leider eine sehr lange zeit keine chance mehr, ins netz zu kommen. deswegen nochmal sorry, wem auch immer ich da so annen sack gegangen bin... :oops:

okay, auf jeden fall hatte der, der sich damals "aufgeregt" hatte (weiss jetzt nich mehr, wer das war) den vorschlag, einfach mal zu verraten, was ich denn damit bezwecken wollte. und das tue ich jetzt:

mir gings und gehts "nur" darum, auf einem dreieck zu laufen (und auch die kamera dementsprechen zu drehen), als ob man normal auf dem boden laufen würde, obwohl man an der wand bzw. an der decke läuft! ich krieg diese rotationen iwie nich hin - auf den meisten dreiecken passts 100%, auf anderen wieder sowas von überhaupt nicht. hab das alles also noch nich wirklich "knacken" können.

hat da jemand vielleicht nen vorschlag, nen tipp oder sonst was? :-)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

10.09.2008, 14:25

Nimm einfach für den "Up-Vektor" deiner Kamera den Normalenvektor des Dreiecks.
@D13_Dreinig

3

10.09.2008, 14:42

aha...könntest du etwas genauer sein? hilft mir das nur bei der rotation der kamera, oder auch bei den bewegungen? und was genau soll ich da machen, ich kenn mich da mit den berechnungen nich so aus, wie du das anscheinend tust!

4

10.09.2008, 14:46

Man muss doch auch noch den ViewAt Vektor anpassen, soweit ich weiß, ist der up Vektor nur dazu da, die Rotation um die View-Achse festzulegen.
Lieber dumm fragen, als dumm bleiben!

5

10.09.2008, 14:59

:?

also, im klartext: ich würde gerne eine "engine" programmieren, die es ermöglicht, vom boden an die wände, von den wänden an die decke, und so weiter zu laufen. also einfach das ALLES begehbar ist. dementsprechend soll das "objekt", das da läuft, eben auch je nach neigung des dreiecks, auf dem es sich befindet, gedreht werden. die drehung des objekts könnte ich ja dann ganz einfach auf die kamera übertragen, wenn ich das erst einmal geschafft hätte!

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

10.09.2008, 15:20

Zitat von »"mensk"«


also, im klartext: ich würde gerne eine "engine" programmieren


In diesem Fall rate ich dir dringen, dich mit den "Basics" auseinanderzusetzen...
@D13_Dreinig

7

10.09.2008, 19:09

Der Normalenvector ist ein Kreuzprodukt aus den Vertices, schu hier:

http://de.wikipedia.org/wiki/Kreuzprodukt

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

10.09.2008, 19:11

Zitat von »"Dustin Braun"«

Der Normalenvector ist ein Kreuzprodukt aus den Vertices, schu hier:

http://de.wikipedia.org/wiki/Kreuzprodukt


Nein, das ist der Normalenvektor nicht! Außerdem war das überhaupt nicht die Frage...
@D13_Dreinig

9

10.09.2008, 19:20

hm, naja dann, trotzdem danke für die hilfe.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

11.09.2008, 09:54

versuch mal sowas in der art:

du brauchst einen richtungsvektor r der dir angibt in welche richtung dein objekt "schaut" (oder irgendwas ähnliches).
jetzt nimmst du dir den normalvektor n des dreicks auf dem du dich platzieren willst.
anschließend bildest du das kreuzprodukt u = n x r.
dann bildest du noch das kreuzprodukt v = r x n.
angenommen alle vektoren sind normiert (wenn n und r normiert waren sind es auch u und v, ansonsten musst du halt nachträglich normieren), spannen die vektoren u, v und n jetzt eine orthonormalbasis eines vektorraumes wie du ihn dir wünscht auf.
die dazugehörige rotationsmatrix schaut so aus:

Quellcode

1
2
3
4
u.x  u.y  u.z  0
v.x  v.y  v.z  0
n.x  n.y  n.z  0
 0    0    0   1

Werbeanzeige