/** 
  Description: Die with round feel
  Object Name: Die_1, Die_2
  Sub-parts  : Die_Spots, Die
  Textures   : Spot_Texture, Die_Texture
  Position   : Center of die is at origin (radius=4)
  Requires   : colors.inc
  Comments   : Adjust A to affect how beveled the holes are
               Adjust B to affect the space between holes.
**/

#declare A_die=4.5 
#declare B_die=2

#declare Pos_1 = <-B_die,B_die,-A_die>
#declare Pos_2 = <0,B_die,-A_die>
#declare Pos_3 = 
#declare Pos_4 = <-B_die,0,-A_die>
#declare Pos_5 = <0,0,-A_die>
#declare Pos_6 = 
#declare Pos_7 = <-B_die,-B_die,-A_die>
#declare Pos_8 = <0,-B_die,-A_die>
#declare Pos_9 = 

#declare Spot_Texture=texture{
  pigment{ color White }
  finish { specular 1 roughness 0.001 }
}
#declare Die_Texture=texture{
  pigment{ color Red }
  finish{ 
    specular 1 
    roughness 0.001 
    reflection 0.01
  }
}

#declare Die_Spot = sphere{
  <0,0,0> 0.9 texture{ Spot_Texture }
}

#declare Face_1=object{ 
  Die_Spot translate Pos_5
}
#declare Face_2=union{ 
  object{Die_Spot translate Pos_1}
  object{Die_Spot translate Pos_9}
}
#declare Face_3=union{ 
  object{ Face_1 }
  object{ Face_2 }
}
#declare Face_4=union{ 
  object{ Face_2 }
  object{ Face_2 rotate z*90}
}
#declare Face_5=union{ 
  object{ Face_4 }
  object{ Face_1 }
}
#declare Face_6=union{ 
  object{ Face_4 }
  object{Die_Spot translate Pos_4}
  object{Die_Spot translate Pos_6}
}

#declare Die_Spots=union{
    object{ Face_1 rotate y*90}
    object{ Face_2 rotate y*180}
    object{ Face_3 rotate x*90}
    object{ Face_4 rotate -x*90}
    object{ Face_5 }
    object{ Face_6 rotate -y*90}
}

#declare Die_1 = object{
  difference{
    intersection{
      sphere{<0,0,0> 5.5 }
      box{-4 4}
    }
    object { Die_Spots }
  }
  texture{ Die_Texture }
}

// Adjust C to affect roundiness of edges
#declare C=0.1
#declare Die_2 = object{
  difference{
    superellipsoid{C scale 4}
    object { Die_Spots }
  }
  texture{ Die_Texture }
}

    Source: geocities.com/dun_roamin