Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Berechnung von Licht

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 06.03.2010, 11:14    Titel: Berechnung von Licht Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 06.03.2010, 15:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 06.03.2010, 16:01    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 06.03.2010, 16:19    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 06.03.2010, 16:37    Titel: Antworten mit Zitat

schon passiert zwinkern

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 06.03.2010, 16:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 06.03.2010, 16:51    Titel: Antworten mit Zitat

ja, so ungefaehr hab ich mir das eigentlich gedacht zwinkern
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 06.03.2010, 17:20    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz