| 
  | 
Here is a basic scene file and an attached include files to make Soma Cube
shapes. See the thread in p.b.i for example images.
// Persistence of Vision Ray Tracer Scene Description File
// File: SomaG.pov
// Vers: 3.5
// Desc: Piet Hein's Soma Cube
// Date: 2005-11-09
// Auth: PM 2Ring
//
// -d +A0.2 +AM2 +R4
// -F -A0.4 +AM2 +R1
//
// -A0.3 +AM2 +R2 +KFF24 -F
//
// Render as anim to get shapes 1 to 24
// Render as single frame to get shape 0
//
global_settings {
  assumed_gamma 1
  //max_trace_level 7
}
#declare Reflect = 0.85;
#declare WorldRad = 640;
#declare CamLoc = <0, 5.25, -7> * 6.25;
//#declare CamLoc = <0, 4, -5> * 6;
camera {
  location CamLoc
  right x*image_width/image_height up y
  direction z
  angle 30
  look_at  y
}
light_source {
  <-0.75, 5, -3> * 12
  //rgb 1
  rgb 50 fade_distance 6 fade_power 2
}
light_source {CamLoc rgb .20}
//---Textures--------------------------------------------------------------
//Conway's colours for the Soma pieces
//Brown=B=1; Yellow=Y=2; Green=G=3; Orange=O=4; blUe=U=5; Red=R=6;
blAck=A=7.
//Taken/modified from "colors.inc"
#declare DarkBrown = rgb <0.36, 0.25, 0.20>;
#declare Yellow  = rgb <1,1,0>;
#declare Green   = rgb <0, 1, 0>;
#declare Orange  = rgb <1, 0.5, 0>;
#declare Red     = rgb <1, 0, 0>;
#declare Blue    = rgb <0, 0, 1>;
#declare Black   = rgb .075;
#declare White   = rgb .95;
#declare Pigments = array[8]
{
  White, DarkBrown, Yellow, Green, Orange, Blue, Red, Black
}
//For sky
#declare CMGray0 = color_map {[0.2 rgb 0.25][0.8 rgb .75]}
//For ground
#declare CMGray1 = color_map {[0 rgb .70][1 rgb 1.0]}
//Block finish
#declare FShiny =
finish{
  ambient 0.075
  specular .75 roughness 3e-4
  phong .5 phong_size 5
  reflection .1*Reflect diffuse .8
}
#declare TGround =
texture{
  pigment{granite scale 75 colour_map{CMGray1}}
  finish{
    ambient 0.175
    specular .75 roughness 3e-4
    reflection .15*Reflect diffuse .8
  }
}
#declare TSky =
texture{
  pigment {
    function{abs(y)}
    color_map{CMGray0}
  }
  finish{ambient 0.1 diffuse 0.85}
}
//---Macros-------------------------------------------
//Rounded unit cube
#declare Round = 0.2;
#macro Cube(V) superellipsoid{<Round, Round> scale .5+Round/4 translate
V+.5} #end
//Build figure from 3D array data
#macro MakeShape(A)
  #local MI = dimension_size(A,1);
  #local MJ = dimension_size(A,2);
  #local MK = dimension_size(A,3);
  union{
    #local I=0;
    #while(I<MI)
      #local J=0;
      #while(J<MJ)
        #local K=0;
        #while(K<MK)
          #local N=A[I][J][K];
          #if(N>0)
            object{
              Cube(<K, MJ-1-J, MI-1-I>)
              //Cube(<MK-1-K, MJ-1-J, I>)
              pigment{Pigments[N]}
              finish{FShiny}
            }
          #end
          #local K=K+1;
        #end
        #local J=J+1;
      #end
      #local I=I+1;
    #end
    translate -0.5*<MK, 0, MI>
    #declare Size = max(MI, MJ, MK);
  }
#end
//--------------------------The objects-------------------
#declare Ground =
  cylinder{
  -y, -1e-4*y, WorldRad
  texture{TGround}
}
#declare Sky =
sphere {0,1 inverse
  texture{TSky}
  scale WorldRad
}
//--------------------------The actual scene-------------------
#if(1)
  object{Sky}
#else
  background{rgb 0.75}
#end
object{Ground}
//Soma figures
#include "Soma2.inc"
#declare Shapes = Soma2;
object{
  MakeShape(Shapes[frame_number])
  rotate -25*y
  scale 10/Size
  //translate -z*3
}
//-------------------------End of file-------------------------
 Post a reply to this message 
 
Attachments: 
Download 'soma2.inc.txt' (9 KB)
 
  
 | 
  |