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

Aktuelle Zeit: Fr Jul 18, 2025 04:30

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



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 28, 2008 21:11 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
The-Winner hat geschrieben:
woher kommt denn die Scharfe Kante des Schattens bei der Selbstbeschattung? Das sollte normal nicht vorkommen.

Warum sollte die Kante nicht vorkommen ? von einer Lichtquelle bekommen diese Stellen gar kein Licht, dafür von einer anderen. :?

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 28, 2008 21:49 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
weil der cos zwischen Lichtquelle und normale dort 0 wird. und das diffuse Licht ist ja proportional zu
max(cos(Winkel(Normale,Licht)),0)=max(dot3(Normal,NormalizedLightVector),0)
Eine scharfe Kante darf nur entstehen wenn eine Kugel auf die andere einen Schatten wirft.

Canvas.Pixels solltest du auch noch durch was schnelleres ersetzen. Siehe meinen unfertigen Artikel: Pixelweise_Bildbearbeitung

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 29, 2008 10:04 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
hm, ich finde die Kante aber so hübsch :P
Dann stimmt wohl etwas mit meiner Lichtberechnung nicht, oder ?
Code:
  1.         if not invisible then
  2.         begin
  3.           L := v3f_sub(lights[i].position, pinfo.contactpoint);
  4.           L := v3f_normalize(L);
  5.           R := v3f_reflect(L, pinfo.normal);
  6.           E := v3f_normalize(pinfo.contactpoint);
  7.           // Helligkeit
  8.           lambert := max(v3f_dotproduct(pinfo.normal, L), 0);
  9.           ambient := rgb_Multiply(RenderObjects[pinfo.index].Material.Ambient, lights[i].Material.Ambient);
  10.           diffuse := rgb_Multiply(RenderObjects[pinfo.index].Material.Diffuse, lights[i].Material.Diffuse);
  11.           diffuse := rgb_scale(diffuse, lambert);
  12.           specular := rgb_Multiply(RenderObjects[pinfo.index].Material.Specular, lights[i].Material.Specular);
  13.           specular := rgb_scale(specular, power(max(v3f_dotproduct(R, E), 0), Shininess));
  14.           result := rgb_add(result, rgb_add(ambient, rgb_add(diffuse, specular)));
  15.         end;

Scanline hatte bei mir nicht funktioniert, deshalb habe ich ersteinmal pixels genommen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 29, 2008 13:39 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Ambient hat doch nichts mit der Lichtquelle zu tun. Du aus unerfindlichen Gründen Materialeigenschaften dem Licht zugeordnet, und nicht dem Objekt. Das Licht selbst hat normal nur Eigenschaften wie Ort, Farbe(einschließlich Helligkeit), Größe... Ein Licht hat kein Material.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 29, 2008 14:12 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
So ist es aber bei allen Phong Codes die ich bisher gesehen habe. Und in OpenGL kann man dem Licht auch diese Eigenschaften geben, wenn ich mich nicht irre.

http://wiki.delphigl.com/index.php/Tuto ... spiellicht
Code:
  1.     light_ambient  : Array[0..3] of GlFloat = (0.8, 0.8, 0.8, 1.0);
  2.     light_diffuse  : Array[0..3] of GlFloat = (0.8, 0.8, 0.8, 1.0);

Nur Specular ist nicht dabei.

mfg


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 27 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.008s | 14 Queries | GZIP : On ]