10.1.8  Objects

Describe an object in the scene
OBJECT:
FINITE_SOLID_OBJECT | FINITE_PATCH_OBJECT | INFINITE_SOLID_OBJECT | ISOSURFACE | PARAMETRIC | CSG_OBJECT | OBJECT_STATEMENT
OBJECT_STATEMENT:
object { OBJECT_IDENTIFIER [OBJECT_MODIFIERS] }

Quick Reference Contents

10.1.8.1  Finite Solid Objects

Describe a solid finite shape:
FINITE_SOLID_OBJECT:
BLOB | BOX | CONE | CYLINDER | HEIGHT_FIELD | JULIA_FRACTAL | LATHE | PRISM | SPHERE | SPHERE_SWEEP | SUPERELLIPSOID | SOR | TEXT | TORUS
The blob object:
BLOB:
Jump to SDL
blob { [threshold FLOAT] BLOB_ITEM... [BLOB_MODIFIERS] }
BLOB_ITEM:
sphere { V_CENTER, F_RADIUS, [strength] F_STRENGTH [COMPONENT_MODIFIERS] } |
cylinder { V_END1, V_END2, F_RADIUS, [strength] F_STRENGTH [COMPONENT_MODIFIERS] }
COMPONENT_MODIFIERS:
[TEXTURE] & [PIGMENT] & [NORMAL] & [FINISH] & [TRANSFORMATION...]
BLOB_MODIFIERS:
[hierarchy [BOOL]] & [sturm [BOOL]] & [OBJECT_MODIFIERS]
The box object:
BOX:
Jump to SDL
box { V_CORNER1, V_CORNER2 [BOX_MODIFIERS] }
BOX_MODIFIERS:
[UV_MAPPING] & [OBJECT_MODIFIERS]
The cone object:
CONE:
Jump to SDL
cone { V_BASE_CENTER, F_BASE_RADIUS, V_CAP_CENTER, F_CAP_RADIUS [open] [OBJECT_MODIFIERS] }
The cylinder object:
CYLINDER:
Jump to SDL
cylinder { V_BASE_CENTER, V_CAP_CENTER, F_RADIUS [open] [OBJECT_MODIFIERS] }
The height field object:
HEIGHT_FIELD:
Jump to SDL
height_field { HF_IMAGE [HF_MODIFIERS] }
HF_IMAGE:
FUNCTION_IMAGE | [HF_TYPE] FILE_NAME
HF_TYPE:
gif | tga | pot | png | pgm | ppm | jpeg | tiff | sys
HF_MODIFIERS:
[hierarchy [BOOL]] & [smooth [BOOL]] & [water_level FLOAT] & [OBJECT_MODIFIERS]
The Julia fractal object:
JULIA_FRACTAL:
Jump to SDL
julia_fractal { 4D_VECTOR [JF_ITEMS] [OBJECT_MODIFIERS] }
JF_ITEMS:
[ALGEBRA_ITEM] & [max_iteration INT] & [precision FLOAT] & [slice V4_NORMAL, F_DISTANCE]
ALGEBRA_ITEM:
quaternion [QUATER_FUNCTION] | hypercomplex [HYPER_FUNCTION]
QUATER_FUNCTION:
sqr | cube
HYPER_FUNCTION:
sqr | cube | exp | reciprocal | sin | asin | sinh | asinh | cos | acos | cosh | acosh | tan | atan | tanh | atanh | ln | pwr (FLOAT,FLOAT)
The lathe object:
LATHE:
Jump to SDL
lathe { [LATHE_SPLINE_TYPE] I_NUM_POINTS, POINT_LIST [LATHE_MODIFIERS] }
LATHE_SPLINE_TYPE:
linear_spline | quadratic_spline | cubic_spline | bezier_spline
POINT_LIST:
2D_VECTOR [, 2D_VECTOR]...
The quantity of 2D_VECTORs is specified by the I_NUM_POINTS value.
LATHE_MODIFIERS:
[sturm [BOOL]] & [UV_MAPPING] & [OBJECT_MODIFIERS]
The prism object:
PRISM:
Jump to SDL
prism { [PRISM_ITEMS] F_HEIGHT1, F_HEIGHT2, I_NUM_POINTS, POINT_LIST [open] [PRISM_MODIFIERS] }
PRISM_ITEMS:
[PRISM_SPLINE_TYPE] & [PRISM_SWEEP_TYPE]
PRISM_SPLINE_TYPE:
linear_spline | quadratic_spline | cubic_spline | bezier_spline
PRISM_SWEEP_TYPE:
linear_sweep | conic_sweep
PRISM_MODIFIERS:
[sturm [BOOL]] & [OBJECT_MODIFIERS]
The sphere object:
SPHERE:
Jump to SDL
sphere { V_CENTER, F_RADIUS [SPHERE_MODIFIERS] }
SPHERE_MODIFIERS:
[UV_MAPPING] & [OBJECT_MODIFIERS]
The sphere sweep object:
SPHERE_SWEEP:
Jump to SDL
sphere_sweep { SWEEP_SPLINE_TYPE I_NUM_SPHERES, SPHERE_LIST [tolerance F_DEPTH_TOLERANCE] [OBJECT_MODIFIERS] }
SWEEP_SPLINE_TYPE:
linear_spline | b_spline | cubic_spline
SPHERE_LIST:
V_CENTER, F_RADIUS [, SPHERE_LIST]
The quantity of V_CENTER, F_RADIUS pairs is specified by the I_NUM_SPHERES value.
The superquadric ellipsoid object:
SUPERELLIPSOID:
Jump to SDL
superellipsoid { < FLOAT, FLOAT > [OBJECT_MODIFIERS] }
The surface of revolution object:
SOR:
Jump to SDL
sor { I_NUM_POINTS, POINT_LIST [open] [SOR_MODIFIERS] }
SOR_MODIFIERS:
[sturm [BOOL]] & [UV_MAPPING] & [OBJECT_MODIFIERS]
The text object:
TEXT:
Jump to SDL
text { ttf FILE_NAME STRING F_THICKNESS, V_OFFSET [OBJECT_MODIFIERS] }
The torus object:
TORUS:
Jump to SDL
torus { F_MAJOR_RADIUS, F_MINOR_RADIUS [TORUS_MODIFIERS] }
TORUS_MODIFIERS:
[sturm [BOOL]] & [OBJECT_MODIFIERS]

Quick Reference Contents

10.1.8.2  Finite Patch Objects

Describe a totally thin, finite shape:
FINITE_PATCH_OBJECT:
Jump to SDL
BICUBIC_PATCH | DISC | MESH | MESH2 | POLYGON | TRIANGLE | SMOOTH_TRIANGLE
The bicubic patch object:
BICUBIC_PATCH:
Jump to SDL
bicubic_patch { PATCH_ITEMS [PATCH_UV_VECTORS] CONTROL_POINTS [BICUBIC_PATCH_MODIFIERS] }
PATCH_ITEMS:
type PATCH_TYPE & [u_steps INT] & [v_steps INT] & [flatness FLOAT]
PATCH_TYPE:
0 | 1
PATCH_UV_VECTORS:
uv_vectors V2_CORNER1, V2_CORNER2, V2_CORNER3, V2_CORNER4
CONTROL_POINTS:
16 VECTORs, optionally separated by commas.
BICUBIC_PATCH_MODIFIERS:
[UV_MAPPING] & [OBJECT_MODIFIERS]
The disc object:
DISC:
Jump to SDL
disc { V_CENTER, V_NORMAL, F_RADIUS [, F_HOLE_RADIUS] [OBJECT_MODIFIERS] }
The mesh object:
MESH:
Jump to SDL
mesh { MESH_TRIANGLE... [MESH_MODIFIERS] }
MESH_TRIANGLE:
triangle { V_CORNER1, V_CORNER2, V_CORNER3 [MESH_UV_VECTORS] [MESH_TEXTURE] } |
smooth_triangle { V_CORNER1, V_NORMAL1, V_CORNER2, V_NORMAL2, V_CORNER3, V_NORMAL3 [MESH_UV_VECTORS] [MESH_TEXTURE] }
MESH_UV_VECTORS:
uv_vectors V2_CORNER1, V2_CORNER2, V2_CORNER3
MESH_TEXTURE:
texture { TEXTURE_IDENTIFIER } |
texture_list { TEXTURE_IDENTIFIER TEXTURE_IDENTIFIER TEXTURE_IDENTIFIER }
MESH_MODIFIERS:
[inside_vector V_DIRECTION] & [hierarchy [BOOL]] & [UV_MAPPING] & [OBJECT_MODIFIERS]
The mesh2 object:
MESH2:
Jump to SDL
mesh2 { MESH2_VECTORS [TEXTURE_LIST] MESH2_INDICES [MESH2_MODIFIERS] }
MESH2_VECTORS:
VERTEX_VECTORS [NORMAL_VECTORS] [UV_VECTORS]
VERTEX_VECTORS:
vertex_vectors { I_NUM_VERTICES, VECTOR [, VECTOR]... }
NORMAL_VECTORS:
normal_vectors { I_NUM_NORMALS, VECTOR [, VECTOR]... }
UV_VECTORS:
uv_vectors { I_NUM_UV_VECTORS, 2D_VECTOR [, 2D_VECTOR]... }
TEXTURE_LIST:
texture_list { I_NUM_TEXTURES, TEXTURE [, TEXTURE]... }
MESH2_INDICES:
FACE_INDICES [NORMAL_INDICES] [UV_INDICES]
FACE_INDICES:
face_indices { I_NUM_FACES, FACE_INDICES_ITEM [, FACE_INDICES_ITEM]... }
FACE_INDICES_ITEM:
VECTOR [, I_TEXTURE_INDEX [, I_TEXTURE_INDEX, I_TEXTURE_INDEX ]]
NORMAL_INDICES:
normal_indices { I_NUM_FACES, VECTOR [, VECTOR]... }
UV_INDICES:
uv_indices { I_NUM_FACES, VECTOR [, VECTOR]... }
MESH2_MODIFIERS:
[inside_vector V_DIRECTION] & [UV_MAPPING] & [OBJECT_MODIFIERS]
The polygon object:
POLYGON:
Jump to SDL
polygon { I_NUM_POINTS, V_POINT [, V_POINT]... [OBJECT_MODIFIERS] }
The quantity of V_POINTs is specified by the I_NUM_POINTS value.
The triangle object:
TRIANGLE:
Jump to SDL
triangle { V_CORNER1, V_CORNER2, V_CORNER3 [OBJECT_MODIFIERS] }
The smooth triangle object:
SMOOTH_TRIANGLE:
Jump to SDL
smooth_triangle { V_CORNER1, V_NORMAL1, V_CORNER2, V_NORMAL2, V_CORNER3, V_NORMAL3 [OBJECT_MODIFIERS] }

Quick Reference Contents

10.1.8.3  Infinite Solid Objects

Describe a solid, possibly infinite, shape:
INFINITE_SOLID_OBJECT:
PLANE | POLY | CUBIC | QUARTIC | QUADRIC
The plane object:
PLANE:
Jump to SDL
plane { V_NORMAL, F_DISTANCE [OBJECT_MODIFIERS] }
The poly object:
POLY:
Jump to SDL
poly { ORDER, < POLY_COEFFICIENTS > [POLY_MODIFIERS] }
ORDER:
An integer value between 2 and 15 inclusive.
POLY_COEFFICIENTS:
A quantity n of FLOATs separated by commas, where n is ((ORDER+1)*(ORDER+2)*(ORDER+3))/6.
POLY_MODIFIERS:
[sturm [BOOL]] & [OBJECT_MODIFIERS]
The cubic object:
CUBIC:
cubic { < CUBIC_COEFFICIENTS > [POLY_MODIFIERS] }
CUBIC_COEFFICIENTS:
20 FLOATs separated by commas.
The quartic object:
QUARTIC:
quartic { < QUARTIC_COEFFICIENTS > [POLY_MODIFIERS] }
QUARTIC_COEFFICIENTS:
35 FLOATs separated by commas.
The quadric object:
QUADRIC:
Jump to SDL
quadric { < FLOAT, FLOAT, FLOAT >, < FLOAT, FLOAT, FLOAT >, < FLOAT, FLOAT, FLOAT >, FLOAT [OBJECT_MODIFIERS] }

Quick Reference Contents

10.1.8.4  Isosurface

Describe a surface via a mathematical function:
ISOSURFACE:
Jump to SDL
isosurface { FLOAT_USER_FUNCTION [ISOSURFACE_ITEMS] [OBJECT_MODIFIERS] }
ISOSURFACE_ITEMS:
[contained_by { CONTAINER }] & [threshold FLOAT] & [accuracy FLOAT] & [max_gradient FLOAT [evaluate F_MIN_ESTIMATE, F_MAX_ESTIMATE, F_ATTENUATION]] & [open] & [INTERSECTION_LIMIT]
CONTAINER:
sphere { V_CENTER, F_RADIUS } | box { V_CORNER1, V_CORNER2 }
INTERSECTION_LIMIT:
max_trace INT | all_intersections

Quick Reference Contents

10.1.8.5  Parametric

Describe a surface using functions to locate points on the surface:
PARAMETRIC:
Jump to SDL
parametric { FLOAT_USER_FUNCTION, FLOAT_USER_FUNCTION, FLOAT_USER_FUNCTION 2D_VECTOR, 2D_VECTOR [PARAMETRIC_ITEMS] [OBJECT_MODIFIERS] }
PARAMETRIC_ITEMS:
[contained_by { CONTAINER }] & [max_gradient FLOAT] & [accuracy FLOAT] & [precompute I_DEPTH, x, y, z]
CONTAINER:
sphere { V_CENTER, F_RADIUS } | box { V_CORNER1, V_CORNER2 }

Quick Reference Contents

10.1.8.6  CSG

Describe one complex shape from multiple shapes:
CSG_OBJECT:
Jump to SDL
UNION | INTERSECTION | DIFFERENCE | MERGE
Combine multiple shapes into one:
UNION:
union { UNION_OBJECT UNION_OBJECT... [UNION_MODIFIERS] }
UNION_OBJECT:
OBJECT | LIGHT
UNION_MODIFIERS:
[split_union BOOL] & [OBJECT_MODIFIERS]
Create a new shape from the overlapping portions of multiple shapes:
INTERSECTION:
intersection { SOLID_OBJECT SOLID_OBJECT... [INTERSECTION_MODIFIERS] }
SOLID_OBJECT:
FINITE_SOLID_OBJECT | INFINITE_SOLID_OBJECT | ISOSURFACE | CSG_OBJECT
INTERSECTION_MODIFIERS:
[cutaway_textures] & [OBJECT_MODIFIERS]
Subtract one or more shapes from another:
DIFFERENCE:
difference { SOLID_OBJECT SOLID_OBJECT... [DIFFERENCE_MODIFIERS] }
DIFFERENCE_MODIFIERS:
[cutaway_textures] & [OBJECT_MODIFIERS]
Combine multiple shapes into one, removing internal surfaces:
MERGE:
merge { SOLID_OBJECT SOLID_OBJECT... [OBJECT_MODIFIERS] }

Quick Reference Contents