Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 14:26

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: BumpMapping Hilfe
BeitragVerfasst: So Apr 03, 2005 17:46 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Mär 09, 2005 12:26
Beiträge: 53
Wohnort: Dornbirn
Hallo Leute, habe mir hier das Tutorial für Bumpmaps durchgelesen...

Es gibt dennoch einige Fragen offen...

Reicht es nicht aus wenn das Bild für das Bumpmap einfach nur schwarz weiß ist?
Muss unbedingt ein Licht benutzt werden?
Und kann mir jemand ein funktionierendes Beispiel schicken? (Wenns geht mit Source..., ich kriegs einfach net hin).

_________________
Good software is like sex, it's best when it's free


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Apr 03, 2005 19:41 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Zitat:
Reicht es nicht aus wenn das Bild für das Bumpmap einfach nur schwarz weiß ist?

Obwohl das zum Beispiel bei Blender geht, wird hier eine NormalenMap benötigt.

Zitat:
Muss unbedingt ein Licht benutzt werden?

Der Tiefeneffekt entsteht nur durch das Licht. Wenn du kein Licht hast, brauchst du auch kein Bumpmapping.

MfG
Flo

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Apr 17, 2005 13:12 
Offline
DGL Member

Registriert: Mi Aug 28, 2002 17:03
Beiträge: 37
Wohnort: ABG
Hi!
Ja, man kann aus einer Heightmap eine Normalmap berechnen lassen. Ist aber nicht Sinn und Zweck. Normalerweise berechnet man die Normalmap aus einem Highpoly-Mesh und legt sie dann auf das Lowpoly-Mesh.

Ein Hardwarelight ist nicht erforderlich. Sieht subjektiv betrachtet auch scheiße aus, wenn man Bumpmapping und Hardwarelighting verwendet. Kann man ja individuell bestimmen, welches Objekt beleuchtet und welches unbeleuchtet sein soll.

Bumpampping ist nun nichtmehr Entwicklerabhängig:
Code:
  1. ' Normalmap
  2. glActiveTexture GL_TEXTURE0
  3. glEnable GL_TEXTURE_2D
  4. glBindTexture GL_TEXTURE_2D, iNormalMap
  5.    
  6. glTexEnvf GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT
  7. glTexEnvf GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_DOT3_RGB_EXT
  8.  
  9. ' Texture
  10. glActiveTexture GL_TEXTURE1
  11. glEnable GL_TEXTURE_2D
  12. glBindTexture GL_TEXTURE_2D, iTexture
  13.    
  14. glTexEnvf GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT
  15. glTexEnvf GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_ADD


So einfach geht es. Standardmäßig sind anscheinend schon Source und Destination für die Combiner festgelegt. Also muss man nur noch die Vertexfarben berechnen lassen. Das geht am besten über einen VertexProgram/Shader.

Als erstes muss du ein Vektor zwischen Vertexposition im Worldspace und der Lichtquelle im Worldspace erechnen. Nehmen wir an, Vertexposition steht in V und Lichtposition in L. Dann ist der zu berechnente Vektor LV = L-V. Dieser wird anschließend normalisiert(also auf Länge 1.0 gebraacht, in dem alle Komponenten durch die aktuelle Länge geteilt werden). Nun musst du die Normalkoordinaten des Vertex ebenfalls in Worldkoordinaten umrechnen. Dabei ist zu beachten, das hier nur Rotation einfließt(also Skalierung und Translation entfallen). Nennen wir den Transformierten Normalvektor N. Dann berechnet man das Punktprodukt aus N und LV und Speichern es in S(S ist natürlich kein Vektor, sondern nur ein Floatwert). Ist S < 0.0 so ist die Lichtquelle hinter dem Triangle. Somit muss S auf 0.0 in diesem Fall gesetzt werden. Jetzt kann man die Vertexfarbe ausrechnen: Rot = LV.X*S+0.5, Grün = LV.Y*S+0.5 und Blau = -LV.Z*S+0.5. Das +0.5 deswegen, weil z. B. bei Grün 0.5 die Y Achse = 0.0 ist, des beim Dot3 Bumpampping einfließenden Vektors.

Kann leider nicht mit Quellcode dienen, da ich selber dabei bin, das Umzusetzen in meine Engine. Aber hier mal Bilder wo ich das in einer anderen Engine schon umgesetzt hatte(ebenfalls selbst berechnet):

Berechneten Vertexfarben
Bild

Normalmap
Bild

Daraus berechnet der Combiner folgende Textur:
Bild

Die normale Textur:
Bild

Das über Multitexturing resultierende Ergebnis:
Bild

mfg olli

_________________
Programmieren beginnt im Kopf und endet im Compiler


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Apr 17, 2005 16:46 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
@Vertex: Sieht schick aus. Nur für präsentationszwecke sollte man keine Kugel nehmen. Bei dehnen fällt der Schmuh, den Bumpmapping ja darstellt, immer sofort auf. ;)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 16 Queries | GZIP : On ]