|
|
"PM 2Ring" <nomail@nomail> wrote:
> This group of stones is a single isosurface. The wet sand is a
> normal-perturbed plane. The stone textures are the standard textures
> in stones.inc.
>
> Now I just need to figure out how to perturb the stones' positions a bit
> more...
Excellent stones, I spent a while trying to get good isosurface stone shapes
for one of my IRTC entries for this round. (I didn't get as intersting
shapes as you managed would you mind posting the source for a couple so I
can see how you did it....
Here's how I created one of mine
#declare S = function { sqrt(pow(x,2) + pow(y,2) + pow(z,2)) - 2 }
#declare Stone1 = isosurface {
function {
S(x,y*(1.5-y/12),z)-f_wrinkles(x*0.3,y*0.5,z*0.03)*0.05-fn_scallop_ripples(x,y,z).gray*0.001-f_wrinkles(x*3,y*4,z*4)*0.
005
}
accuracy isoAccuracy
max_gradient 2.75
contained_by{sphere{0,2.2}}
}
Sean
Post a reply to this message
|
|
|
|
"PM 2Ring" <nomail@nomail> wrote:
> This group of stones is a single isosurface. The wet sand is a
> normal-perturbed plane. The stone textures are the standard textures
> in stones.inc.
>
> Now I just need to figure out how to perturb the stones' positions a bit
> more...
Thanks everyone for all the nice comments. Here's the source code:
//------------------------------------------------------------
// Persistence of Vision Ray Tracer Scene Description File
// File: IsoBalls.pov
// Vers: 3.6
// Desc: Multiple distorted spheres using a single isosurface
// Date: 2005.09.03
// Auth: PM 2Ring
//
// -D +A0.1 +AM2 +R2
// -F +A0.6 +AM2 +R2
//
#include "colors.inc"
#include "stones.inc"
#include "functions.inc"
global_settings {
assumed_gamma 1.0
max_trace_level 7
}
#declare W = 1/8; //Cell width
#declare R = W*.70; //Stone radius
#declare D = 0.875/R; //Radius deformation rate
#declare H = .55; //Stone height
#declare StoneMax=44;
#declare T_Stones = array[StoneMax]{
T_Stone1, T_Stone2, T_Stone3, T_Stone4, T_Stone5,
T_Stone6, T_Stone7, T_Stone8, T_Stone9, T_Stone10,
T_Stone11, T_Stone12, T_Stone13, T_Stone14, T_Stone15,
T_Stone16, T_Stone17, T_Stone18, T_Stone19, T_Stone20,
T_Stone21, T_Stone22, T_Stone23, T_Stone24, T_Stone25,
T_Stone26, T_Stone27, T_Stone28, T_Stone29, T_Stone30,
T_Stone31, T_Stone32, T_Stone33, T_Stone34, T_Stone35,
T_Stone36, T_Stone37, T_Stone38, T_Stone39, T_Stone40,
T_Stone41, T_Stone42, T_Stone43, T_Stone44,
}
#declare MultiStone = texture{
cells translate 0.5*y+11
texture_map{
#declare I=0;
#while(I<StoneMax)
[I/StoneMax T_Stones[I]]
[(I+1)/StoneMax T_Stones[I]]
#declare I=I+1;
#end
}
}
#declare smod = function(A,B) {mod(B+mod(A,B),B)}
//#declare scmod = function(A,B) {smod(A,2*B)-B}
#declare f_cnoise = function(x,z) {(W-R)*f_snoise3d(floor(x*.5/W), 0,
floor(z*.5/W))}
#declare f_modnoise = function(x,z) {smod(x,2*W)-W+f_cnoise(x,z)}
//Stones
isosurface{
function {f_r(f_modnoise(x,z), y/H, f_modnoise(-z,x)) - R*(1 +
..5*f_snoise3d(x*D,y*D,z*D))}
contained_by{box{<-1,-W*H,-1>,<1,W*H,1>}}
max_gradient 1.65//12.65 // 10 // 16
accuracy 5e-3
texture {MultiStone scale 2*W}
rotate -3*y
translate y*(0.35*R*H-1) + z*1
}
//------------------------------------------------------------
#if(1)
sky_sphere {
pigment {
gradient y
color_map {
[0.4 rgb 0.1]
[0.9 rgb 0.8]
[1 rgb 1]
}
}
}
#else
background{rgb .5}
#end
//Wet sand
#if(1)
plane {
y, -1.0001
pigment {rgb <1,.915,.620>}
finish{ambient 0 diffuse 0.65 specular .25 roughness 1e-3
reflection{0,.9}}
normal {
ripples 0.075
frequency 12
turbulence .175
scale .4
translate -1
}
}
#end
#declare CamPos = <0.45, 8, -8> * .2;
//#declare CamPos = 4*y; //Overhead
camera {
location CamPos
direction z
right x*image_width/image_height up y
look_at y*-.175
angle 40
}
light_source {
<-1, 1, -1> * 30
//rgb 1.75
rgb 135
spotlight point_at <-1,-1,0> falloff 2.25 radius 0.35
area_light 9*x,9*z,7,7 jitter adaptive 1 orient circular
fade_distance 3 fade_power 2
}
//------------------------------------------------------------
Post a reply to this message
|
|