|
Prof.
Urban
|
![]() |
![]() |
||
Vor einen blauen Himmel setzen wir 1000 zufällig vor der Bildebene positionierte Kugeln. Nett, aber kein toller Effekt.
![]() |
![]() |
| Original | Detailvergrößerung |
Wir machen jetzt aber aus allen Kugeln einen einzigen Blob, der völlig durchsichtig ist und das Licht brechen kann. Damit sehen wir den dahintergelegenen Himmel durch. Es ergibt sich der Effekt von Glastüren mit Wellenschliffmuster.
Mithilfe von seed(zahl) starten wir eine Folge zufälliger Zahlen zwischen Null und Eins. Mit der Funktion rand() erhalten wir diese Werte. Durch Subtraktion und nachfolgende Multiplikation mit geeigneten Werten können wir den Zahlenbereich bestimmen, in dem die Zufallskoordinaten liegen sollen.

// eine Fläche aus durchsichtigen Glas-Blobs
global_settings{ max_trace_level 99 }
// Himmel mit einfachem senkrechtem Farbverlauf
sky_sphere{
pigment{
gradient y
color_map{
[0 rgb <1,1,1>]
[1 rgb <0,0.2,0.5>]
}
scale 2
translate <0,1,0>
}
}
// eine Zufallsfolge starten
#local Q=seed(1);
// einen Blob aus 1000 Kugeln erzeugen
#local i=1000;
blob{
#while(i>0)
sphere { <(rand(Q)-.5)*3, (rand(Q)-.5)*2, 2> 0.1 , 1}
#local i=i-1;
#end
pigment {rgbt <1,1,1,1>} // weiß und komplett durchsichtig
interior {ior 1.2} // mit Brechungsindex
}
Zusatzaufgabe: Statt des blauen Himmels belege eine Ebene im Hintergrund mit einem Photo und passe die Werte so an, dass man das Photo durch die Glasscheibe sehen kann.