PovRay, Strahlenrückverfolgung

In einer künstlichen Szene raffinierte Beleuchtungseffekte einzubauen geht erstaunlich gut, wenn man vom Auge aus einen Strahl verfolgt, der durch ein Pixel des zu konstruierenden Bildes geht. Das Pixel erhält die Farbe des getroffenen Szenenteils. Unter Umständen muss man den Strahl per Reflektion oder Brechung weiterverfolgen bis man auf eine Lichtquelle stösst. Diese bestimmt dann die Farbe des Bildpixels. Alles wiederholen für alle anderen Pixel des Bildes.  Eine schlichte Idee und eine Sisiphosarbeit. Aber heutige Computer (sogar einfache PC’s) sind so schnell, dass sie in nützlicher Frist fertig werden. Zusätzlich ist ein Programm absolut gratis auf Internet erhältlich, „PovRay“ hier . Das Bild ist vergrösserbar (klicken).

 

Ohne gross die benutzte Sprache zu lernen, habe ich ein Beispiel genommen und darin nur einen Gegenstand abgeändert (die Schachtel). Es ist ein Tisch mit gemustertem Tischtuch, Biskuits, eine Biskuitschachtel und eine Tasse Tee. Ich habe die zylinderförmige Schachtel ersetzt durch Zylinderschnitte. Ich brauchte nur die Koordinaten der Zylinderachsen (eck) einzuspeisen und dann die Operation des Zylinderbildens (cylinder) und des Schneidens dieser Zylinder (intesection) abzurufen.

 

//----------------------- intersection of cylinders 10iii

 

#declare s=9;

 

#declare eck1=<0,1.61803398874989,1>;

#declare eck2=<0,-1.61803398874989,1>;

#declare eck3=<1,0,1.61803398874989>;

#declare eck4=<-1,0,1.61803398874989>;

#declare eck5=<1.61803398874989,1,0>;

#declare eck6=<1.61803398874989,-1,0>;

#declare eck7=<0,0.539344662916632,1.4120226591666>;

#declare eck8=<-0.872677996249965,-0.872677996249965,0.872677996249965>;

#declare eck9=<1.4120226591666,0,0.539344662916632>;

#declare eck10=<0.539344662916632,-1.4120226591666,0>;

 

intersection {

   cylinder {-eck1*s, eck1*s, s pigment { color Blue }}

   cylinder {-eck2*s, eck2*s, s }

   cylinder {-eck3*s, eck3*s, s pigment { color Red }}

   cylinder {-eck4*s, eck4*s, s }

   cylinder {-eck5*s, eck5*s, s pigment { color Magenta }}

   cylinder {-eck6*s, eck6*s, s pigment { color Yellow } } 

   cylinder {-eck7*s, eck7*s, s pigment { color Green } } 

   cylinder {-eck8*s, eck8*s, s pigment { color Cyan } } 

   cylinder {-eck9*s, eck9*s, s pigment { color LimeGreen } } 

   cylinder {-eck10*s, eck10*s, s pigment { color LightBlue } } 

   rotate y*-95 rotate x*-15 rotate z*45  translate <-1.2*s,s,-1.2*s> 

   pigment {Gray60} finish {phong 0.8 metallic reflection {0.5, 0.7}}

}

 

Verblüffend einfach und das Programm rechnet sehr schnell. Bezaubernd!

 

Kommentar schreiben

Kommentare: 0

Es werden nur die 100 letzten Beiträge angezeigt. Ueber den Link "Sitemap" ganz unten kann man auch ältere Beiträge einsehen !!

 

Meine Homepage:

http://www.baumanneduard.ch/