|
|
For your enjoyment today :-)
In between things, I have been working on this scene. Radiosity is not
optimal here, but that has to wait for later.
Two versions of the same scene are given. The difference is in the crackle
function used for the (isosurface) desert floor.
The scene has been primarily inspired by the cover of a book that has been
sitting on my shelf for almost 40 years (see:
http://www.klaus-johansen.dk/?page_id=138 ), and illustrating the short
story O moon of my delight. It was time for me to give it my own
interpretation.
The girl figure is a Poser figure of course (Kate); you will recognize of
course Zeeger's greebles in the background.
My question is about the pylons. I don't remember where I got the code, nor
who wrote. If somebody recognize them (pylon.pov; 2002) please let me know
so that I can acknowledge properly.
For those interested, here follows the crackle and isosurface code:
//Start code
//------------------------------------------------------------------Isosurface/Height_field
desert - start
//First crackle function, like broken-up slabs of stone:
#declare F_crackle_solid =
function {
pigment {
crackle solid
//crackle form <-1.0, 1.0, 0.0>
color_map {
[ 0.00 rgb 0 ]
[ 0.10 rgb 0 ]
[ 0.10 rgb 1 ]
[ 0.50 rgb 0.5 ]
[ 0.90 rgb 1 ]
[ 0.90 rgb 0 ]
[ 1.00 rgb 0 ]
}
warp {
turbulence <0.1, 0.1, 0.1>
octaves 5
omega 0.5
lambda 2
}
frequency 100
ramp_wave
scale 0.1
}
}
//Second crackle function, like dessication cracks:
#declare F_crackle_form =
function {
pigment {
//crackle solid
crackle form <-1.0, 1.0, 0.0>
color_map {
[ 0.00 rgb 0 ]
[ 0.10 rgb 0 ]
[ 0.10 rgb 1 ]
[ 0.50 rgb 0.9 ]
[ 0.90 rgb 1 ]
[ 0.90 rgb 0 ]
[ 1.00 rgb 0 ]
}
warp {
turbulence <0.1, 0.1, 0.1>
octaves 5
omega 0.5
lambda 2
}
frequency 0.7
poly_wave 0.5
scale 0.1
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Based on a Bruno Cabasson example:
#macro IsoHF2(fn_Terrain,TERRAIN_SIZE_X,TERRAIN_SIZE_Z,TERRAIN_HEIGHT,RES)
#declare ISO_Terrain =
isosurface {
//function {y - TERRAIN_HEIGHT*fn_Terrain(x/TERRAIN_SIZE_X, 0,
z/TERRAIN_SIZE_Z)}
function {y - TERRAIN_HEIGHT*fn_Terrain(x, 0, z)}
max_gradient 5
contained_by {box {<-TERRAIN_SIZE_X, -0.01, -TERRAIN_SIZE_Z>,
<TERRAIN_SIZE_X, TERRAIN_HEIGHT, TERRAIN_SIZE_Z>}}
}
#declare HF_Terrain =
height_field {
function RES, RES {fn_Terrain ((x-0.5)*(TERRAIN_SIZE_X*2), 0,
(y-0.5)*(TERRAIN_SIZE_Z*2))}//the function is reduced proportionally to
terrain scale
smooth
translate <-0.5, 0, -0.5>
scale <2*TERRAIN_SIZE_X, TERRAIN_HEIGHT, 2*TERRAIN_SIZE_Z>
}
#end //of macro
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Choose here between the two crackle functions:
//#declare fn_Terrain = function (x, y, z) {F_crackle_solid (x, 0, z).red}
#declare fn_Terrain = function (x, y, z) {F_crackle_form (x, 0, z).red}
IsoHF2(fn_Terrain, 100, 100, 0.005, 1000)
#declare CrackledSurf ace =
//as an isosurface:
object {ISO_Terrain texture {mytexture} translate -50*z}
//as a height_field:
//object {HF_Terrain texture {mytexture} translate -50*z}
//------------------------------------------------------------------Isosurface/Height_field
desert - end
// end of code
Thomas
Post a reply to this message
Attachments:
Download 'Age of Innocence_01.jpg' (382 KB)
Preview of image 'Age of Innocence_01.jpg'
|
|