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

11

01.09.2011, 19:20

kann es sein, dass du bei

Zitat

C-/C++-Quelltext

1
2
3
        dir.x = (xlook-x);
        dir.y = (xlook-y);
        dir.z = (xlook-z);


ylook und zlook auch verwenden solltest?!?

Zitat

Basically, there are only 10 types of people in the world. Those who know binary, and those who don't.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

01.09.2011, 19:22

Jap, das hab ich auch übersehen^^

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

13

01.09.2011, 19:49

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
mat4 m;
        vec3 dir, right, up, eye;
 
        eye.x = x;
        eye.y = y;
        eye.z = z;

        up.x = xup;    
        up.y = yup;    
        up.z = zup;
         
        dir.x = (xlook-x);
        dir.y = (ylook-y);
        dir.z = (zlook-z);
        dir.normalize();

        right.cross(dir, up);
        right.normalize();

        up.cross(right, dir);
 
        m.values[0] = right.x;
        m.values[1] = right.y;
        m.values[2] = right.z;
        m.values[3] = -right.dot(eye);
 
        m.values[4] = up.x;
        m.values[5] = up.y;
        m.values[6] = up.z;
        m.values[7] = -up.dot(eye);
 
        m.values[8] = -dir.x;
        m.values[9] = -dir.y;
        m.values[10] = -dir.z;
        m.values[11] = dir.dot(eye);
 
        m.values[12] = 0;
        m.values[13] = 0;
        m.values[14] = 0;
        m.values[15] = 1;

        *this *= m;



(Link)


Ich habe eine Theorie! Es ist VERHEXT! Nee mal im ernst... ich checks nicht. Die Indexe waren vorher falsch, aber viel ändert das jetzt nicht ^^

[EDIT]

Achja bei ortho hab ich einfach nur falsche Werte übergeben, aber kann man das vielleicht absichern (gleiches gilt für frustum)?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

01.09.2011, 19:55

Debug halt mal, wo dir da das NaN reinkommt. Du hast außerdem Zeilen mit Spalten verwechselt. Gegen was genau willst du denn "absichern"? Wenn du definieren kannst, was "falsche Werte" genau sein sollen, dann sollte es offensichtlich sein, wie du "dagegen absichern" kannst. Wenn nicht, dann können wir dir auch kaum helfen...wobei ich mich, bei solchen Funktionen wie den obigen, ehrlich gesagt auf das GIGO-Prinzip berufen würde ;)

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »dot« (01.09.2011, 20:06)


DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

15

01.09.2011, 20:06

Zitat

Gegen was genau willst du denn "absichern"? Wenn du definieren kannst, was "falsche Werte" genau sein sollen, dann sollte es offensichtlich sein wie du "dagegen absichern" kannst. Wenn nicht, dann können wir dir auch kaum helfen...


Weiß nicht warum ich das gefragt habe ^^ vergesst ortho und frustum, die funktionieren jetzt. Es geht nurnoch um lookAt.

Zitat

Debug halt mal, wo dir da das NaN reinkommt.


Wie soll ich das denn machen, er gibt keinen Fehler.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

01.09.2011, 20:07

Wie soll ich das denn machen, er gibt keinen Fehler.

Ähm, ja debuggen halt!? Breakpoint setzen, durchsteppen, Werte anschaun, so wie man das eben macht!?

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

17

01.09.2011, 20:34

Haltepunk vor dem ganzen m.values[...

[x, y, z]look = 4 0 4
[x, y, z]eye oder auch x y z = -10 15 -15
[x, y, z]dir = Ergebnis look-eye
.normalize() = 0,5 -0,53 0,67
[x, y, z]up = 0 1 0
[x, y, z]right = 0 0 0

Das NaN liegt daran das in right 0 steht und ich dann normalisiere. Ich such mal gerade woran das liegt.

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

18

01.09.2011, 20:41

*hust*

Vielleicht sollte ich mir meine eigenen structs mal etwas besser merken:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
right = right.cross(dir, up);

// STATT

right.cross(dir, up);

// DA GINGE NUR

right.cross(up);


Jetzt find ichs gerade nur merkwürdig das rotate funktioniert, obwohl die Indexe da 0 1 2 3... sind statt 0 4 8 12...

[EDIT]

Ach ne kurze Frage: muss ich glViewport() auch noch umsetzen?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

19

01.09.2011, 20:43

Jetzt find ichs gerade nur merkwürdig das rotate funktioniert, obwohl die Indexe da 0 1 2 3... sind statt 0 4 8 12...

Ganz einfach: Weil du dort die richtigen Werte in die richtigen Elemente schreibst... :rolleyes:

Was genau würde deine Umsetzung von glViewport() denn so tun!?

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

20

01.09.2011, 20:47

Ok beeinflusst die Matrix ja nicht, also nicht...

Zitat

Ganz einfach: Weil du dort die richtigen Werte in die richtigen Elemente schreibst...


Achja jetzt hab ichs auch gesehen ^^

Ich hasse Matrizen :D

Werbeanzeige