Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 06.03.2010, 11:14 Titel: Berechnung von Licht |
|
|
Hi zusammen,
ich suche nach einer moeglichkeit Licht in einer Bitmap zu berechnen.
das ganze spielt sich auf einer 2D Ebene ab,
das Bild ist eine Graumaske, die unterschiedlichen grautoene stehen fuer die tiefe des Objekts (Z) anhand dieser Maske und einem Winkel als ausgangspunkt zu meiner Lichtquelle soll die GrauMaske nun an den richtigen stellen aufgehellt bzw. abgedunkelt werden....
hab zu dem Thema bisher noch nichts finden koennen... _________________
 |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 06.03.2010, 15:47 Titel: |
|
|
du hast also nen tiefenpuffer und gehst von unidirektionaler beleuchtung aus?
ich würde spontan mal sowas tippen:
light(x,y,winkel) := max( 0 , cos(winkel) / ( z(x,y)*z(x,y) ) )
erklärung:
Unidirektionales licht ist überall gleich stark. Wenn es von hinten zu dir scheint (winkel = 0) siehst du es in voller stärke (cos(0) = 1) und wenn es von der seite scheint (winkel = 90 bzw pi) siehst du es garnicht (cos(90) = 0), wenn es dir ins gesicht scheint (winkel > 90) siehst du es auch garnicht (cos(x>90) < 0, dann also ergebnis = 0).
zusätzlich nimmt die intensität des reflektierten lichts über die distanz quadratisch ab (3-dimensionaler raum): In eine richtung bewegt sich das licht, da bleibt die intensität gleich, in die anderen zwei dimensionen dehnt es sich aus, also nimmt es quadratisch ab.
zusammenmultipliziert ergibt sich obige formel. der wert der da raus kommt müsstest du einfach auf deinen pixel draufmultiplizieren können, wenns dann viel zu dunkel ist rechne nicht mit z(x,y) sondern rechne mit einem z'(x,y) = z(x,y) / faktor, wobei du ausprobieren musst, mit welchem faktor das ergebnis "schön" aussieht ;P _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 06.03.2010, 16:01 Titel: |
|
|
Nein, so hab ich das eher nicht gemeint, hm.. wie erklaer ich das am besten ?!
angenommmen ich habe meine Tiefenmaske in 640,480 Pixel
dann moechte ich, dass das Licht wenn ich den Winkel beispielsweise 0/360 nehme von oben kommt, dazu muesste noch eine hoehe angegeben werden... nun soll die berechnung alles was innerhalb der berechnung (hoehe) liegt von oben aufgehellt werden, also prinzipiell ueberall da wo das licht von da auf dieser hoehe hinkommt, und da wo es nicht hin kommt eben abgedunkelt werden... wuerd gern ein beispiel bild hochladen, aber hab mein FTP nicht mehr..... _________________
 |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 06.03.2010, 16:19 Titel: |
|
|
man kann bilder auch auf websites wie imageshack hochladen? _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 06.03.2010, 16:37 Titel: |
|
|
schon passiert
da hab ich mal ein kleines testbeispiel, unten links ist das original texturierte bild das mit meiner funktion einen kleinen effekt (links oben) bekommt, dieser macht eben einen meiner tiefen effekte... rechts ist mit einem grafikprogramm gemacht, ein 'Bevel' Effekt, mit einer Lichtquelle (hier 315Grad) da sieht mann eben genau das alles aus diesem winkel hell beleuchtet wird und gegenueber schattiger also abgedunkelt.... _________________
 |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 06.03.2010, 16:49 Titel: |
|
|
willst du den bevel-effekt also nachbauen oder wie? _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 06.03.2010, 16:51 Titel: |
|
|
ja, so ungefaehr hab ich mir das eigentlich gedacht  _________________
 |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 06.03.2010, 17:20 Titel: |
|
|
mal einfach google dazu befragt? man muss probleme ja nicht erst umständlich umschreiben um dann nichts zu finden _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
|