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

Aktuelle Zeit: Mi Mai 22, 2024 00:37

Foren-Übersicht » Programmierung » Mathematik-Forum
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: [Erledigt] Normalmap-Problem
BeitragVerfasst: So Jan 04, 2009 19:43 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Mir ist leider kein besserer Name für mein Problem eingefallen, deshalb hat der Thread diesen recht nichtssagenden Titel.
Mein eigentliches Problem betrifft aber nicht den Namen:

Ich habe 2 Graustufen-Texturen, die Farben entsprechen den Werten 0(=schwarz) bis 1(=weiß).
Dazu habe ich für beide eine Normalmap.
Wenn ich beide Graustufen-Texturen multipliziere bekomm ich logischerweise wieder eine Graustufen-Textur.

Mein Problem betrifft nun die Normalmap für diese 3te Graustufen-Textur: Ist es möglich die Normalmap für diese aus den 4 anderen Texturen zu errechnen, wenn man jeweils nur die Werte von einem Pixel jeder Textur hat.

Kurz: Ich möchte aus 2 Graustufen-Texturen und Normalsmaps die Normalmap für das Produkt der Graustufen-Texturen haben.
Muss nicht ganz genau stimmen, kann es wohl auch nicht, aber so circa wäre schon gut.

Und der ein oder andere hat es vllt schon erraten: Ich möchte das in einem Shader verwenden.


Zuletzt geändert von Schläfer am Do Jan 08, 2009 18:39, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 04, 2009 20:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Die ersten 2 Bumpmaps sind ja wahrscheinlich RGB(A) Texturen.
Du kannst ja im Shader die 2 Bump Vektoren aus den Pixel entpacken, sie addieren und anschließend normalisieren. Denn was du eigentlich nur brauchst sind ja die Bumpmap Vektoren.

Ansonsten: normales Multiplizieren der entpackten Vektoren?

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 04, 2009 21:28 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
MatReno hat geschrieben:
Die ersten 2 Bumpmaps sind ja wahrscheinlich RGB(A) Texturen.
Du kannst ja im Shader die 2 Bump Vektoren aus den Pixel entpacken, sie addieren und anschließend normalisieren. Denn was du eigentlich nur brauchst sind ja die Bumpmap Vektoren.

Ansonsten: normales Multiplizieren der entpackten Vektoren?


Ich bin mir jetzt nicht so sicher ob ich dich richtig verstanden habe.
Erstmal ist der Wert den ich brauche natürlich ein Vektor.
Wenn ich dem Ganzen mal Namen gebe, habe ich jeweils einen Float für die grauen Texturen, zB A und B, und NA und NB sind die Vektoren aus der Normalmap.

NA+NB bringt allerdings nicht den gewünschten Wert.
zB wenn ich jetzt mal nur eine Zeile oder Spalte der Textur betrachte: A geht linear von 0 bis 1 und B von 1 bis 0, dann würde einfaches Addieren und Normalisieren) auf der ganzen Strecke den selben Wert liefern, A*B wäre aber in der Mitte am größten, sodass die Normalen eigentlich links und rechts davon auch etwas nach links und nach rechts zeigen (oder nach oben und unten... ach einfach zu verschiedenen Enden der Strecke).

Und komponentenweise multiplizieren würde bei dem Beispiel auch nicht klappen.
Auf jeden Fall zeigt sich das A und B selbst noch mit einbezogen werden müssen, wie allerdings weiß ich eben nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 05, 2009 12:20 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Ja, stimmt, ist wohl doch etwas komplizierter...
Und was ist, wenn du die entpackten Vektoren noch mit dem Graustufenwert der entsprechenden Textur multiplizierst, bevor du dann die Vektoren addierst und normalisierst?
Also: norm(A*NA + B*NB)

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 05, 2009 12:27 
Offline
DGL Member

Registriert: Sa Aug 09, 2008 09:07
Beiträge: 112
Muss jetzt nachfragen... Was beschreiben die graustufen Maps?
Und was bringt es sie zu multipizieren?

Vil. kann ich dir bei den Vektoren dann helfen, wenn ich das weiß...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 05, 2009 18:42 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
MatReno hat geschrieben:
Ja, stimmt, ist wohl doch etwas komplizierter...
Und was ist, wenn du die entpackten Vektoren noch mit dem Graustufenwert der entsprechenden Textur multiplizierst, bevor du dann die Vektoren addierst und normalisierst?
Also: norm(A*NA + B*NB)


So ähnlich war meine Lösung die ich mirgestern Nacht noch überlegt habe auch, allerdings mit (1-A) bzw (1-B) multiplizert weil sonst bei A=0 und B=1 die Normale=NB wäre, richtig wäre NA.

So war meins genau: Normale = norm(NA*(1-(A-A*B))+NB*(1-(B-A*B)))
Also nicht gleich mit (1-A) multiplizieren sondern mit dem Abstand zu A*B.
Keine Ahnung was davon besser funktioniert, so weit reicht mein Vorstellungsvermögen nicht; Muss ich mal ausprobieren.


Und verwenden möchte ich das für einen Shader für einen Skydome um die Wolken plastischer wirken zu lassen.

Edit:
Also von den beiden Möglichkeiten funktioniert wohl keine so richtig
Wenn ich A und B mal als Funktion angebe (eindimensional) dann müsste die Normale für A(X)=X und B(X)=X bei X=0 entweder direkt nach oben oder unten zeigen, wo immer das auch ist. Auf jeden Fall kann die berechnete Normale aber nicht in die richtige Richtung zeigen da sie immer irgendwo zwischen NA und NB liegt.

Naja, so richtig mathematisch, wie es sich für eine Mathematik-Forum gehört, kann ich das wohl nicht ausdrücken. XD

Edit2:
Ich hatte gerade noch eine Idee dazu: Da die Normalen ja so ähnlich wie der Anstieg einer Funktion sind kann man vllt einfach die Ableitungsregeln anwenden:
(g * h)' = g' * h + g * h'

Ob das aber auch bei zweidimensionalen Texturen funktioniert weiß ich nicht. War eben nur eine Idee. Vielleicht könnte das jemand bestätigen (oder eben auch nicht).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 06, 2009 20:41 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Ok, mit der Produktregel geht es wohl.
Für den Fall das A und B NULL sind muss man natürlich ein bischen nachhelfen, da sonst die Normale auch der Nullvektor wird.

Ich denke das Ergebnis kann ich sehen lassen.


Dateianhänge:
wolken.JPG [12.47 KiB]
75-mal heruntergeladen
Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Mathematik-Forum


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.036s | 18 Queries | GZIP : On ]