Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » DirectX » Normale berechnen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
22.04.2005, 12:38 Uhr
SKARF



Und noch eine DX Frage:

Habe mittels einer Hightmap ein Polygongitter in folgendem Vertexformat erstellt:

struct CustomVertex2
{
float x, y, z; // die Position des Vertex
float tu, tv; // Texturkoordinaten
};

Das ganze soll aber in Zukunft so aussehen:

struct CustomVertex
{
float x, y, z; // die Position des Vertex
float nx, ny, nz; // die Normale
float tu, tv; // Texturkoordinaten
};

Ist an sich kein Problem, aber die Frage ist: wie berechne ich die Normale??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.04.2005, 12:50 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wenn man halt Geometrie nicht aufpasst

normale von nem punkt hat unendliche möglichkeiten, genauso von ner geraden, auch wenns da schon eingeschränkter ist, ansonsten bei ner ebene z.b das kreuzprodukt der richtungsvektoren
--
class God : public ChuckNorris { };

Dieser Post wurde am 22.04.2005 um 12:57 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.04.2005, 13:02 Uhr
SKARF



Unendlich ist ein bisschen viel , ich müste mich schon auf eine einigen.

Also: ich weiss eigendlich gar nicht was Normale geometrisch bedeutet.
In DX brauche ich das allerding für die Lichtberechnung.
Hier ist die Normale die Richtung in die ein Polygon zeigt!?

Wenn man zu Beispiel ein Mesh läd giebts die Normale normalerweise inclusive.
Hir erstelle ich aber mit eigenem Code ein Polygongitter und muss die Normale irgendwie berechnen, weiss aber nicht wie!

und wenn ich jetzt noch wüsste was ein Kreuzprodukt ist... verdammt ich hätte wirklich aufpassen sollen

Dieser Post wurde am 22.04.2005 um 13:16 Uhr von SKARF editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.04.2005, 13:55 Uhr
SKARF



Ich kann mich wage erinnern mal was von einem durchschnittswert der angrenzenden Vectoren gelesen zu haben?!
Liege ich da falsch? hatt das vieleicht sogar was mit deinem Kreuzprodukt zu tun?? Hilfe!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.04.2005, 14:05 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ok also

normale ist die senkrechte z.b zu einer ebene, also wenn du ne ebene hast:


Code:
----
|  |
----



dann ist die normale ein vektor senkrecht zur ebene, nach oben oder nach unten in einem beliebigen punkt


oder so:


Code:
  | <- normale
----- <-ebene
  | <- auch ne normale, nach unten diesem fall



eine ebene wird ja so definiert:

Aufpunkt + k * (richtungsvektor1) + l * (richtungsvektor2)

und die beiden richtungsvektoren kreuzmultipliziert ergeben deine normale einer beliebigen länge und richtung (also bei ner ebene hoch runter, bei ner geraden gäbs nen kreis und bei nem punkt, tja da gehts im 3d-raum nicht
--
class God : public ChuckNorris { };

Dieser Post wurde am 22.04.2005 um 14:07 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.04.2005, 14:28 Uhr
SKARF



also diesen Ausdruck:

"Aufpunkt + k * (richtungsvektor1) + l * (richtungsvektor2)"

hab ich jetzt nicht verstanden.( wer oder was ist Aufpunkt und oder k ?? )

In meinem Fall ist die Ebene ja ein Polygon, ein Dreieck duch drei Vektoren definiert.
zu jedem dieser Vektoren soll eine Normale gespeichert werden, die irgendwie die angrenzenden Ebenen/Polys berücksichtigt.

Ziel ist ja das DX zwecks Beleuchtung weiß wo bei dem polygon oben ist und in welchem Winkel das Licht auftrifft.

Ach ja und das Wort Kreuzprodukt entzieht sich auch meiner Kenntniss.
Mann möge geduld mit mir haben, das scheint dann doch etwas komplizierter zu sein
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.04.2005, 15:27 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


jo von einem polygon oder dreieck oder etwas was durch mind 2 vektoren definiert ist kannste einen normalenvektor bilden.

z.b 3 punkte:

A(4,3,2)
B(15,3,4)
C(32,3,65)

kannste ne ebene wie oben aufstellen:

A + faktor1 * (B-A) + faktor2* (C-A)

und wenn du eben

(B-A) x (C-A) machst haste die normale der ebene durch die 3 punkte.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.04.2005, 15:49 Uhr
SKARF



Ok ich versuchs mal.
Ich kommentier das am Montag nachmal wenns geklappt hat oder nicht.

Vielen Dank erstmal.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
25.04.2005, 12:28 Uhr
SKARF



1. Und wie funktioniert das mit 8 Vectoren? So wie ich das jetzt gelesen habe brauche ich das Kreuzprodukt der 8 angrenzenden Vectoren!

2. Abgesehen davon habe ich eine Funktion gefunden die aus einer Hightmap ( als Textur vorliegend ) eine Normalmap errechnet! Ist schon mal ein Teilsieg.

3. Ich würde allerding trotzdem gerne wissen wie man das " von Hand " macht. Erstens um es zu verstehen und zweitens um das mal in Echtzeit mit einem bewegten Polygongitter zu testen.

Irgendwelche Meinungen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
27.04.2005, 13:02 Uhr
SKARF



Traut euch!

Noch nie mit Dynamischer Beleuchtung beschäftigt?
Irgendjemand muß da doch was wissen?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ DirectX ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: