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

Phili

unregistriert

151

27.07.2006, 16:34

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
PHMAMatrix MatrixProjection(float Sichtwinkel, float VerhaeltnisXY, float Sichtweite)
{
    float cosin  = cosf(Sichtwinkel/2) / sinf(Sichtwinkel/2); 
    
    PHMAMatrix A;
    A._11=cosin*VerhaeltnisXY; A._12=0;     A._13=0;                                   A._14=0;
    A._21=0;                   A._22=cosin; A._23=0;                                   A._24=0;
    A._31=0;                   A._32=0;     A._33=Sichtweite/(Sichtweite-0.1f);        A._34=1.0f;
    A._41=0;                   A._42=0;     A._43=Sichtweite/(Sichtweite-0.1f)*-0.1f;  A._44=0;
    return A;
}
PHMAMatrix MatrixView(PHMAVektor3 Position, PHMAVektor3 Ziel, PHMAVektor3 Up)
{
    PHMAVektor3 zaxis = VektorNormalisieren(Ziel - Position);
    PHMAVektor3 xaxis = VektorNormalisieren(VektorKreuz(Vektor3(0, 1, 0), zaxis));
    PHMAVektor3 yaxis = VektorKreuz(zaxis, xaxis);

    PHMAMatrix A;
    A._11=xaxis.x;                      A._12=yaxis.x;                      A._13=zaxis.x;                      A._14=0;
    A._21=xaxis.y;                      A._22=yaxis.y;                      A._23=zaxis.y;                      A._24=0;
    A._31=xaxis.z;                      A._32=yaxis.z;                      A._33=zaxis.z;                      A._34=0;
    A._41=-VektorPunkt(xaxis, Position);A._42=-VektorPunkt(yaxis, Position);A._43=-VektorPunkt(zaxis, Position);A._44=1;
    return A;
}

Seht ihr da nen Fehler?

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

152

27.07.2006, 16:46

Ich verstehe nicht, wieso du das Punktprodukt für die Kameraposition berechnest, anstatt einfach nur die Position zu verwenden...?

Hast du mittlerweile mal debuggt und geprüft, ob die Werte deiner berechneten Matrizen den Werten von vorgefertigten Funktionen entsprechen?
Kommen Sie nie mit einem Schwert zu einer Schießerei.

Phili

unregistriert

153

27.07.2006, 16:59

@Steven77

Quellcode

1
2
3
4
5
6
7
8
zaxis = normal(At - Eye)
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)
    
 xaxis.x           yaxis.x           zaxis.x          0
 xaxis.y           yaxis.y           zaxis.y          0
 xaxis.z           yaxis.z           zaxis.z          0
-dot(xaxis, eye)  -dot(yaxis, eye)  -dot(zaxis, eye)  l

So stehts in der D3D Dokumentation
Des mit dem Debuggen klappt mit Vollbild nicht... und ich hab halt alles in meinen 3D-Funktionen auf Vollbild ausgelegt-müsste die gesamte Init-Funktion neu schreiben....Anders gesagt, bin zu faul. :lol:
Aber ich werd mal die Matrizen als Textdatei ausgeben

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

154

01.08.2006, 12:25

1.wenn ich jetzt ein modell mit mehreren texturen habe, wie schaffe ich das dann, dass das objekt glänzt?

2. kann man mehrere lichquelle in einen shader tun?

3. kann ich ein objekt mit mehreren shader auf einmal rendern?

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

155

01.08.2006, 14:07

@Ghostrider

Zu 1.: Mach dich mal mit Phong-Lighting bzw. Phong-Shading vertraut. Hatte ich schonmal angesprochen. Da berechnest du dann die Licht- bzw. Reflexionsintensität (ambienter, diffuser und spekularer Teil) und nimmst das jeweils als Faktor für die Texturen (je nach dem, wie diese ineinander geblendet werden sollen). Den Glanz erhälst du dann über den spekularen Anteil des Lichts.

Zu 2.: Ja.

Zu 3.: Nein.
Kommen Sie nie mit einem Schwert zu einer Schießerei.

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

156

01.08.2006, 14:28

jetzt habe ich mir bei google den ??? wund gesucht um zu schauen wie man so ein polynom herstellt, der den ganzen bildschirm abdeckt, aber ich finde nichts.

kann mir einer nicht sagen wie man das ungefähr macht??

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

157

31.08.2006, 08:45

hi,
also ich habe bis jetzt immer in den shadern direktionales licht und point lichter benutzt.

gibt es auch nen möglichkeit spot lights zu verwenden?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

158

31.08.2006, 10:16

ja. schau dir einfach mal an, was die dx sdk doku zum thema "light types" zu sagen hat, da steht im prinzip alles was du dafür brauchst...

tnecniv

Treue Seele

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

159

31.08.2006, 17:20

also mit dem glänzen.. gibs nich auch so was wie spectacular-mapping, oder wie der mist heißt??
Gruß Vincent
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

160

31.08.2006, 22:25

specular mapping dient rein dazu, die glänzenden teile einer oberfläche zu "maskieren".

phong bzw. blinns lightning model ist dein stichwort ;)

Werbeanzeige