/* --- settings --- */
#local MitSonnenTau = 0;
#local MitGras = 0;
#local MitHalmen = 1;
#local MitBluete = 0;
#local MitPflanzen = 1;
#local MitGaenseBlume = 0;
#local MitSteinen = 1;
#local MitSchnecken = 0;
#local MitFLiegenpilz = 0;
#local MitBaum = 1;
#local MitBuddha = 1;
global_settings {
adc_bailout 0.003922
ambient_light <1.0,1.0,1.0>
assumed_gamma 1.8
hf_gray_16 off
irid_wavelength <0.25,0.18,0.14>
max_intersections 64
max_trace_level 10
number_of_waves 10
/* radiosity {
brightness 3.3
count 100
distance_maximum 0.0
error_bound 0.4
gray_threshold 0.5
low_error_factor 0.8
minimum_reuse 0.015
nearest_count 6
recursion_limit 1
}
*/
}
#declare Dummy = sphere { <0,0,0> 0 pigment { color rgb<0,0,0> } }
/* --- includes --- */
#include "colors.inc"
#include "textures.inc"
#include "woods.inc"
#include "shapes.inc"
#include "shapes2.inc"
#include "functions.inc"
#include "math.inc"
#include "transforms.inc"
#include "woodmaps.inc"
/* --- wiesen elemente --- */
// #include "glockenblume.pov"
/* --- akteure --- */
#include "hummel2.pov" // object Bee
#include "vogel-v3.pov"
/* --- sun --- */
#declare Sonne = light_source {
<0,2500,-200> color White
}
/* --- sky --- */
#declare Himmel = plane {
<0,1,0>,1 hollow
texture {
pigment {
bozo turbulence 0.92
color_map {
[0.00 rgb <0.2, 0.2, 1>*0.9]
[0.50 rgb <0.2, 0.2, 1>*0.9]
[0.70 rgb <1,1,1>]
[0.85 rgb <0.25,0.25,0.25>]
[1.0 rgb <0.5,0.5,0.5>]
}
scale<1,1,1.5>*2.5
translate<1.0,0,-1>
}
finish {
ambient 1 diffuse 0
}
}
scale 10000
}
/* --- ground --- */
#declare Untergrund = plane {
<0,1,0>, 0
texture {
pigment {
color rgb<0.35,0.65,0.0>*0.8
}
normal {
bumps 0.75 scale 0.015
}
finish {
ambient 0.1 diffuse 0.8
}
}
}
/* --- zaun elemente --- */
#declare Zaun = merge {
box { <0,0,1>,<1,3,1.2> }
prism {
0.00, 0.2, 4
<-1.00, 0.00>,
< 0, 0.00>,
< -0.5, 0.20>,
<-1.00, 0.00>
rotate<-90,0,0>
translate<1,3,1.2>
}
texture {
Yellow_Pine
normal {
bumps 0.5 scale 0.08
}
finish {
ambient 0.1 diffuse 0.9 phong 1.0
}
} //Ende der Texturbeschreibung
scale 0.97 // 0.5
}
#declare ZaunMitLoch = merge {
difference {
box { <0,0,1>,<1,3,1.2> }
sphere {
<0,0,0>,0.2 translate <0.25,1.2,1.1>
texture {
pigment {
color Black
}
}
}
prism {
0.00, 0.2, 4
<-1.00, 0.00>,
< 0, 0.00>,
< -0.5, 0.20>,
<-1.00, 0.00>
rotate<-90,0,0>
translate<1,3,1.2>
}
texture {
Yellow_Pine
normal {
bumps 0.5 scale 0.08
}
finish {
ambient 0.1 diffuse 0.9 phong 1.0
}
}
} // difference
box {
<0,0.8,1.2>, <0.7,1.5,1.25> //<--- Farbe hinter dem Loch - kann man auch weglassen dann is halt der Himmer dahinter
texture {
pigment {
color Black
}
}
} // Ende der Zaunelemente
scale 0.97
}
#declare Random_1 = seed (1153); // Zufall f�r Zaun krmm und schief
#declare Random_2 = seed (9153); // Zufall f�r Zaun krmm und schief
//---------------------------------------------------------------------
//-.------------------------Variab------------------------------------
#declare zAbstand = -25; // immer negativen Wert nehmen sonst.......
//Zaungr��e ist immer doppelt so gro� wie zAbstand
#declare W = 0; // zus�tzlicher Z-Abstabnd nach hinten
#declare zufall=2;
/* --- gras --- */
#if (MitGras)
#include "gras_2.inc"
#include "gras.inc"
#end
#macro GrasBueschel(anz_halme,anz_blaetter) object {
#if (MitGras)
grasbueschel (anz_halme,anz_blaetter)
#else
Dummy
#end
}
#end
//------------------------------------------------------
//.....---------------------------------------------------------
#declare ZaunAlles = union {
// Der komplette Zaun ist eine Union
// Bretter hinten
#declare NrA = zAbstand+1; // start
#declare EndNrA = zAbstand*-1; // end
#while (NrA < EndNrA+1)
object {
Zaun rotate <rand(Random_2)*3,0,0> translate < NrA,-rand(Random_1)/4,-zAbstand+W>
}
#declare NrA = NrA + 1; //next Nr
#end
//Bretter rechts
#declare NrX = zAbstand; // start
#declare EndNrX = -zAbstand; // end
#while (NrX < EndNrX+1)
object {
Zaun rotate <0,90,rand(Random_2)*6> translate <-zAbstand,-rand(Random_2)/2,NrX+W+1>
}
object { GrasBueschel (2,4) scale 0.09 translate <-zAbstand-0.8,-rand(Random_2)/3,NrX+W+1> }
#declare NrX = NrX + 1; //next Nr
#end
// Bretter Links
#declare NrY = zAbstand; // start
#declare EndNrY = -zAbstand; // end
#while (NrY < EndNrY+1)
object {
Zaun rotate <0,90,rand(Random_1)*4> translate <zAbstand,-rand(Random_1)/3,NrY+W+1>
}
// object { GrasBueschel (2,4) scale 0.15 translate <zAbstand+2,-rand(Random_1)/3,NrY+W+1> }
#declare NrY = NrY + 1; //next Nr
#end
//Bretter vorne
#declare NrB = zAbstand+1; // start
#declare EndNrB = -zAbstand; // end
#while (NrB < EndNrB+1)
object {
Zaun rotate <rand(Random_1)*8,0,rand(Random_1)> translate < NrB,-rand(Random_2)/3,zAbstand+W-1>
}
#declare NrB = NrB + 1; //next Nr
#end
//Zaun mit Loch mu� �ber ein bereits vorhandenes Dr�bergelegt werden
object { ZaunMitLoch translate <2,0,-zAbstand+W-0.1> }
}
// Lasst uns die Wiese ergr�nen und mit viel Schwachsinn f�llen!
// Howto : while schleifen mit seed werten
// Kugel 1 - ist Grasb�schel
#declare Kugel_X_Random = seed (59873); // Zufall f�r Kugel 1 X- Achse
#declare Kugel_Z_Random = seed (1971); // Zufall f�r Kugel 1 Z - Achse
#declare Kugel_Y_Random = seed (7865); // Zufall f�r Kugel 1 Y - Achse
#declare Kugel_W_Random = seed (579); // Zufall f�r Kugel 1 W- Achse
#declare KugelA = sphere {
<0, 1, 0>, 0.6 translate <0,0,0>
texture {
pigment {
color Red
}
}
}
//Kugel1_Random verteilung in X und Z richtung
#declare KuX = zAbstand-1; // start
#declare KuEnd = -zAbstand+1; // end
#while (KuX < KuEnd) // der Wert der von KuEnd Abgezogen wird ver�ndert die Anzahl der Dinge Im Verh�ltnis zur gr��e des Gartens!!!!
// 4 verschiedene Grasb�schel
object { GrasBueschel (7,4) scale 0.09 translate < KuX,0,zAbstand*(-1+2*rand(Kugel_Z_Random))> }
object { GrasBueschel (4,2) scale 0.08 translate < KuX,0,zAbstand*(-1+2*rand(Kugel_X_Random))> }
object { GrasBueschel (2,1) scale 0.06 translate < KuX,0,zAbstand*(-1+2*rand(Kugel_Y_Random))> }
object { GrasBueschel (4,1) scale 0.07 translate < KuX,0,zAbstand*(-1+2*rand(Kugel_W_Random))> }
#declare KuX = KuX + 0.02; //next Nr
#end // ------------ end of loop --
/* --- fliegenpilz --- */
#if (MitFLiegenpilz)
#include "fliegenpilz.pov"
#declare KugelB_X_Random = seed (73); // Zufall f�r Kugel2 X- Achse
#declare KugelB_Z_Random = seed (171); // Zufall f�r Kugel2 Z - Achse
#declare KugelB = sphere {
<0, 1, 0>, 0.5
translate <0,0,0>
texture {
pigment {
color Blue
}
}
}
//Kugel2_Random verteilung in X und Z richtung
#declare Ku2 = zAbstand; // start
#declare Ku2End = -zAbstand; // end
#while (Ku2 < Ku2End)
object {
pilz
rotate <-90,0,0>
scale 0.1
translate < Ku2,0.5,Ku2*(-1+2*rand(KugelB_Z_Random))>
}
#declare Ku2 = Ku2 + 2; //next Nr
#end
#end
/* --- bluete --- */
#if (MitBluete)
#include "bluete.pov"
#declare KugelC_X_Random = seed (1833); // Zufall f�r Kugel3 X- Achse
#declare KugelC_Z_Random = seed (1748); // Zufall f�r Kugel3 Z - Achse
#declare Bedingung = seed (5679); // Zufall f�r Kugel3 Z - Achse
#declare KugelC = sphere {
<0, 1, 0>,0.7 translate <0,0,0> //hier m�sste dann das Ding kommen
texture {
pigment {
color Black
}}
}
//Kugel2_Random verteilung in X und Z richtung
#declare Ku3 = zAbstand+1; // start
#declare Ku3End = -zAbstand; // end
#while (Ku3 < Ku3End)
#if (-1+2*rand(Bedingung) < -0.8)
#declare drei = union {
object {
bluete rotate <-90,-90/*rand(KugelC_X_Random)*/,-8> scale 0.24
}
object {
bluete rotate <-90,90/*rand(KugelC_X_Random)*/,1> scale 0.23
}
object {
bluete rotate <-90,45/*rand(KugelC_X_Random)*/,-15> scale 0.21
}
}
object {
drei rotate <0,10*rand(KugelC_X_Random),0> translate < Ku3,0,zAbstand*(-1+2*rand(KugelC_Z_Random))>
}
#end
#if (-1+2*rand(Bedingung) > 0.8)
#declare zwei = union {
object {
bluete
rotate <-90,-45/*rand(KugelC_X_Random)*/,1>
scale 0.2
}
object {
bluete
rotate <-90,95/*rand(KugelC_X_Random)*/,-2>
scale 0.19
}
}
object {
zwei
rotate <0,-10*rand(KugelC_X_Random),0>
translate < Ku3,0,zAbstand*(-1+2*rand(KugelC_Z_Random))>
}
#end
#if (-1+2*rand(Bedingung) > 0.4)
object {
bluete rotate <-90,100*rand(KugelC_X_Random),1> scale 0.22 translate < Ku3,0,zAbstand*(-1+2*rand(KugelC_Z_Random))>
}
#declare Ku3 = Ku3 + 0.5; //next Nr
#end
#end
#end
/* --- Glockenblume --- */
#declare Kugel4_X_Random = seed (767); // Zufall f�r Kugel3 X- Achse
#declare Kugel4_Z_Random = seed (7513); // Zufall f�r Kugel3 Z - Achse
// Verteilung in X und Z richtung
#declare Ku4 = zAbstand+1; // start
#declare Ku4End = -zAbstand-1; // end
/* FIXME: povray kennt "glockenblume" nicht
#while (Ku4 < Ku4End)
object {
glockenblume
scale 0.07
rotate <-90,90*rand(Kugel4_X_Random),0>
translate < Ku4,1.5,zAbstand*(-1+2*rand(Kugel4_Z_Random))>
}
#declare Ku4 = Ku4 +1; //next Nr
#end
*/
/* --- Schneckenhaeuser --- */
#if (MitSchnecken)
#include "schnecke3.pov"
#declare Schne_X_Random = seed (123); //Zufall Schneckenhaus X
#declare Schne_Z_Random = seed (7979); //Zufall ScheeZ
#declare Schne = zAbstand; // start
#declare SchneEnd = -zAbstand-10; // end
#while (Schne < SchneEnd)
object {
schnecke
scale 0.2
rotate <-90,7*Schne_X_Random,0>
translate <Schne*rand(Schne_X_Random)+14,0,Schne*rand(Schne_Z_Random)*-1+14>
}
#declare Schne = Schne + 4; //next Nr
#end
#end
/* --- Gaensebluemchen --- */
#if (MitGaenseBlume)
#include "gbluete.pov"
#declare Gans_Random = seed (1453); //Zufall Schneckenhaus X
#declare Gans_Z_Random = seed (98546); //Zufall ScheeZ
#declare goos = zAbstand; // start
#declare goosend = -zAbstand; // end
#while (goos < goosend)
object {
Gansblume scale 0.5 rotate <-90,90*rand(Gans_Random),0>translate < goos,0,zAbstand*(-1+2*rand(Gans_Random))>
}
#declare goos = goos + 0.05; //next Nr
#end
#end
/* --- Halme --- */
#if (MitHalmen)
#include "halm.pov"
#declare Halm_Random = seed (47964); //Zufall Schneckenhaus X
#declare Halm_Z_Random = seed (7645); //Zufall ScheeZ
#declare ha = zAbstand;
#declare haend= -zAbstand;
#while (ha < haend)
object {
Halm scale 0.23 rotate <-90,90*rand(Halm_Random),0>translate < ha,0,zAbstand*(-1+2*rand(Halm_Random))>
}
#declare ha = ha + 0.5; //next Nr
#end
#end
/* --- Steine ohne Kaefer --- */
#if (MitSteinen)
#include "stein.pov"
#declare Stein_Random = seed (7864); //Zufall Schneckenhaus X
#declare ste = zAbstand;
#declare steend= -zAbstand;
#while (ste < steend)
object {
stein scale 1 rotate <-90,90*rand(Stein_Random),0>translate < ste+3,-0.5,zAbstand*(-1+2*rand(Stein_Random))>
}
#declare ste = ste + 10; //next Nr
#end
#end
/* --- Buddha --- */
#if (MitBuddha)
#include "boudha.inc"
#include "golds.inc"
#end
#declare Buddha = object {
#if (MitBuddha)
boudha scale 0.15 rotate <0,145,0> translate <zAbstand+4,0,-zAbstand-1>
//texture { pov_default }
texture { T_Gold_2C }
#else
Dummy
#end
}
/* --- Verschiedene Pflanzen --- */
#if (MitSonnenTau)
#include "sonnentau.inc"
#end
#declare SonnentauAngepasst = object {
#if (MitSonnenTau)
Sonnentau
scale 0.2
translate <3*rand(Kugel4_X_Random)*-1,0,rand(Kugel4_Z_Random)-15>
#else
Dummy
#end
}
#if (MitBaum)
#include "baumstamm.inc"
#end
#declare Baum = object {
#if (MitBaum)
Stamm
scale 0.9
translate<6,-10,4>
pigment { color Brown }
#else
Dummy
#end
}
/* --- hummel fuer spline flug --- */
#declare FixedBee = object {
Bee // extends in y-dir, located above origin
scale 0.5 // adjust size
translate <0, -1, 0> // shift bee center into origin
Axis_Rotate_Trans (<1,0,0>, 90) // make z-axis vertical bee axis
Axis_Rotate_Trans (<0,0,1>, 180) // turn on belly
}
/* --- camera splines --- */
#declare KameraFahrt_Garten1 = spline { // von Sven
// Steuerpunkt, Startpunkt, ..., Endpunkt, Steuerpunkt
linear_spline
-0.20, < - 1.0, 1, + 0.6 >,
+0.00, < - 1.0, 1, + 0.6 >,
+0.20, < - 2, 2.0, - 0 >,
+0.40, < - 2, 1.5, 8 >,
+0.60, < - 4, 0.5, 14 >,
+0.80, < - 5, 1, 19 >,
+1.00, < -12, 3.5, 25 >,
+1.20, < - 2, 3.78, 26.1 >
}
#declare KameraFahrt_Garten2 = spline { // von Andre
// Steuerpunkt, Startpunkt, ..., Endpunkt, Steuerpunkt
natural_spline
-0.03, < -56.078542 / 2, 5.0, 8.746195 / 2 >,
+0.00, < -55.078542 / 2, 6.5, 10.746195 / 2 >,
+0.03, < -54.078542 / 2, 7.0, 12.246195 / 2 >,
+0.06, < -52.99165 / 2, 7.151988, 13.376533 / 2 >,
+0.09, < -49.904758 / 2, 8.586647, 20.0648 / 2 >,
+0.12, < -46.973683 / 2, 8.945312, 27.267548 / 2 >,
+0.15, < -40.332447 / 2, 9.303977, 37.042707 / 2 >,
+0.18, < -32.100734 / 2, 8.227983, 43.216491 / 2 >,
+0.21, < -22.419635 / 2, 6.793324, 48.361312 / 2 >,
+0.24, < -9.322434 / 2, 7.151988, 47.332348 / 2 >,
+0.27, < -2.057928 / 2, 10.379971, 39.100635 / 2 >,
+0.30, < 2.822288 / 2, 12.173295, 27.267548 / 2 >,
+0.33, < 2.728228 / 2, 12.173295, 21.093764 / 2 >,
+0.36, < 10.804123 / 2, 11.495231, 23.592046 / 2 >,
+0.39, < 18.521353 / 2, 9.662641, 26.753066 / 2 >,
+0.42, < 23.151692 / 2, 8.945312, 30.35444 / 2 >,
+0.45, < 24.180656 / 2, 6.434659, 39.100635 / 2 >,
+0.48, < 13.53235 / 2, 6.434659, 45.27442 / 2 >,
+0.51, < 1.543446 / 2, 5.358665, 44.245455 / 2 >,
+0.54, < -10.804123 / 2, 5.0, 26.753066 / 2 >,
+0.57, < -17.024937 / 2, 8.586647, 8.231713 / 2 >,
+0.60, < -16.104761 / 2, 9.662641, -8.746195 / 2 >,
+0.63, < -10.95994 / 2, 9.662641, -28.296512 / 2 >,
+0.66, < 3.601374 / 2, 9.662641, -36.528225 / 2 >,
+0.69, < 22.63721 / 2, 11.0973, -33.441333 / 2 >,
+0.72, < 23.354539 / 2, 10.738636, -33.441333 / 2 >,
+0.75, < 26.955914 / 2, 10.021306, -22.63721 / 2 >,
+0.78, < 28.810994 / 2, 8.227983, -10.804123 / 2 >,
+0.81, < 33.238485 / 2, 6.434659, 7.202749 / 2 >
}
/* --- Objekte --- */
object { Himmel }
object { ZaunAlles }
object { Sonne }
object { Untergrund }
object { SonnentauAngepasst }
object { GrasBueschel (1,7) scale 0.25 }
object { Baum }
object { Buddha }
object { vogel scale 0.5 rotate <-90,-70,-10> translate <-2,3.79,26.1> }
object {
object { FixedBee scale 3 }
// sphere { <0,0,0> 1 pigment { color Blue } }
#local curve_ahead = 1; // >= 0.0000000000001
#local tilt = 1;
Spline_Trans (KameraFahrt_Garten2, clock, y, curve_ahead, tilt)
}
// object { Bee scale 0.71 rotate <-25,20,0> translate <0,1,-8> }
/* --- camera/view definition --- */
camera {
angle (60 - clock * 40)
translate KameraFahrt_Garten1 (clock)
look_at KameraFahrt_Garten2 (clock)
}
fog {
fog_type 2
distance 150
color White
fog_offset 0.1
fog_alt 1.5
turbulence 1.8
}
/* --- emacs editing helpers --- */
/*
(setq load-path (cons "/home/timj/tmp/" load-path))
(load "pov-mode.el")
(pov-mode)
(hotkeys-programming)
*/