1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
// Persistence of Vision Raytracer Scene Description File
// File: mediasky.pov
// Author: Chris Huff
// Description: This file demonstrates the use of scattering media
// to create a sky with clouds. It attempts to simulate an actual
// atmosphere: there is an outer shell of media that scatters blue
// light, and an inner cloud shell that scatters white. The scattered
// light from the outer shell makes the sky appear blue, and the light
// that passes through is tinted orange by its passage, giving the
// clouds an orange color.
//
// Updated: 2013/02/15 for 3.7
//
// -w320 -h180
// +w640 +h360 +a0.3
// use 16:9 aspect ratio
//
//*******************************************
#version 3.7;
#include "colors.inc"
global_settings {
assumed_gamma 1.0
max_trace_level 5
}
#declare CamPos = <-5, 1,-25>;
camera {
location CamPos
up y
right x*image_width/image_height // keep propotions with any aspect ratio
look_at < 0, 7.5, 0>
angle 90
}
light_source {CamPos, color Gray30 media_interaction off}
//light_source {vrotate(z, <-1, 8, 0>)*500000, color rgb < 1, 0.8, 0.65>}
#declare SunPos = vrotate(z, <-12, 8, 0>)*1000000;
light_source {SunPos, color White*2}
sphere {SunPos, 75000
texture {
pigment {color White}
finish {ambient 10 diffuse 0}
}
no_shadow
}
#declare PlanetSize = 50000;
//the ocean
sphere {< 0, 0, 0>, 1
scale PlanetSize
translate -y*PlanetSize
hollow
texture {
// pigment {color rgb < 1, 1, 1>}
pigment {color rgbf < 1, 1, 1, 1>}
finish {
ambient 0 diffuse 0.7
reflection {0.5, 1
fresnel//use the fresnel form of angle-dependant reflection
metallic//use metallic reflection
}
conserve_energy
metallic//use metallic highlights
}
normal {bumps bump_size 0.075 scale < 4, 1, 1>*0.025}
}
interior {
ior 1.33//required for fresnel reflection
media {
method 3
samples 2 intervals 1
absorption color rgb < 0.75, 0.5, 0.25>*0.005
}
}
}
//the ocean floor
sphere {< 0, 0, 0>, 1
scale PlanetSize - 100
translate -y*PlanetSize
texture {
pigment {color rgb 1}
}
}
#macro SkyShell(minAlt, maxAlt, Int)
difference {
sphere {< 0, 0, 0>, 1 scale (PlanetSize + maxAlt)}
sphere {< 0, 0, 0>, 1 scale (PlanetSize + minAlt)}
hollow
texture {pigment {color rgbf 1}}
translate -y*PlanetSize
interior {Int}
}
#end
//A much more realistic sky could be done using multiple layers
//of clouds to simulate clouds of different densities and with
//different altitudes. Of course, this would render a lot slower...
//the "cloud shell", creates clouds.
SkyShell(1000, 1300,
interior {
media {
method 3 aa_threshold 0.1 aa_level 3
samples 4 intervals 1
scattering {2, color White*0.0075 extinction 1}
density {wrinkles
scale < 5, 2, 2>*200
warp {turbulence 2}
color_map {
[0 color rgb 1]
[0.5 color rgb 0.85]
[0.55 color rgb 0.035]
[1 color rgb 0.035]
}
}
}
/* media {
method 3
samples 2 intervals 1
scattering {2, color White*0.0075*0.015 extinction 1}
}*/
}
)
//the "atmosphere shell", creates the blue sky and orange light.
SkyShell(1001, 2200,
interior {
media {
method 3
samples 2 intervals 1
scattering {4, color rgb < 0.25, 0.6, 0.9>*0.00075 extinction 1}
}
}
)
|