HowTo:Build a basic scene
Sometimes it's helpful to have a sort of "ruler" to gauge how far things are apart and if you're close to the "floor" and have a checker pattern you can scale the checkers as '10' on a square but if you're up in the air and don't have the floor for a reference you can use an object you build yourself to gauge the distance. Here's how to build a simple ruler:
// ruller.inc as of 07Feb2009 // yeah, I know I've misspelled ruler. It's a way to prevent name collision.
- ifndef( Ruller_Inc_Temp)
- declare Ruller_Inc_Temp = version;
- include "colors.inc" // comment this out when you're through with it
- declare DisplayFont = "arial.ttf"
- declare MyRuller = text {
ttf // font type (only TrueType format for now) DisplayFont, "0.....|....20....|......40.....|....60.....|.....80.....|.....100", // the string to create 1, // the extrusion depth 0 // inter-character spacing //rotate 90*y scale <5,5,1> translate <0,2,0> texture{pigment{Light_Purple}}
}
- end
Your ruler will display aligned along the x-axis and you can rotate / translate it to where you need it.
You can calibrate the ruler by comparing it to the checkered floor and adjust by adding or removing '.'s between the numbers. I use it when I'm building a scene.
Alternately, you might need a quick reference to which axis is where and I've built an axis indicator to use myself. Here it is:
// origin axis display this file is axis.inc as of 07Feb2009
- ifndef( ORIGIN_Inc_Temp)
- declare ORIGIN_Inc_Temp = version;
- include "colors.inc"
- declare DisplayFont = "arial.ttf"
// let's label the origin of the scene with a black sphere
- declare MyOrigin = object {
sphere { <0, 0, 0> // center of sphere <X Y Z> 1.0 // radius of sphere texture{ pigment{Black} } }
} //--------------------------------------------- // X-axis pointer:
- declare MyXPointer = union {
cylinder {
0*x, 10*x, 1 open texture{ pigment{ Red } }
} cone {
10*x, 1.0, 11*x, 0.0 texture{pigment{ Red}}
}
text {
ttf // font type (only TrueType format for now) DisplayFont, "X", // the string to create 1, // the extrusion depth 0 // inter-character spacing //rotate 90*y scale <5,5,1> translate <11,2,0> texture{pigment{Red}}
} } //------------------------------------------------ // y-axis pointer:
- declare MyYPointer =
union { cylinder {
0*y, 10*y, 1 open texture{ pigment{ White } }
} cone {
10*y, 1.0, 11*y, 0.0 texture{pigment{ White}}
}
text {
ttf // font type (only TrueType format for now) DisplayFont, "Y", // the string to create 1, // the extrusion depth 0 // inter-character spacing //rotate 90*y scale <5,5,1> translate <5,9,5> texture{pigment{White}}
} }
//------------------------------------------------ // z-axis pointer:
- declare MyZPointer =
union { cylinder {
0*z, 10*z, 1 open texture{ pigment{ Blue } }
} cone {
10*z, 1.0, 11*z, 0.0 texture{pigment{ Blue}}
}
text {
ttf // font type (only TrueType format for now) DisplayFont, "Z", // the string to create 1, // the extrusion depth 0 // inter-character spacing //rotate 90*y scale <5,5,1> translate <2,5,11> texture{pigment{Blue}}
} }
- declare MyAxisDisplay =
union { object {MyOrigin } object {MyXPointer} object {MyYPointer} object {MyZPointer} }
- end
You build an axis display by declaring : object { MyAxisDisplay [modifiers go here] }
Also helpful is a blueprint or 3-views to guide your work. You can put an image_map on a simple box to show you where the various components go like this:
object { box{
<0,0,0>,<1,1,1>
pigment{
image_map{ gif "side view.gif" } } scale<940,300,0.1>
no_shadow
}
}