file | ::= | camera background lights materials group |
camera | ::= | orthographicCamera | perspectiveCamera |
orthographicCamera | ::= |
OrthographicCamera { center Vec3f direction Vec3f up Vec3f size float } |
perspectiveCamera | ::= |
PerspectiveCamera { center Vec3f direction Vec3f up Vec3f angle float } |
background | ::= |
Background { color Vec3f ambientLight Vec3f } |
lights | ::= |
Lights { numLights int light ^ numLights } |
light | ::= | directionalLight |
directionalLight | ::= |
DirectionalLight { direction Vec3f color Vec3f } |
materials | ::= |
Materials { numMaterials int Material ^ numMaterials } |
Material | ::= |
Material { diffuseColor Vec3f } |
group | ::= |
Group { numObjects int (object3D | material object3D) ^ numObjects } |
object3D | ::= | group | transform | sphere | plane | triangle | triangleMesh |
transform | ::= |
Transform { transformation* object3D } |
transformation | ::= |
Translate Vec3f | Scale Vec3f | XRotate float | YRotate float | ZRotate float | Rotate { Vec3f float } | Matrix { float ^ 16 } |
sphere | ::= |
Sphere { center Vec3f radius float } |
plane | ::= |
Plane { normal Vec3f offset float } |
triangle | ::= |
Triangle { vertex0 Vec3f vertex1 Vec3f vertex2 Vec3f } |
triangleMesh | ::= |
TriangleMesh { obj_file string } |
material | ::= |
Material { diffuse_color Vec3f } |
Vec3f | ::= | float float float |
| | means "OR" |
^ n | means "exactly n elements" |
* | means "zero or more elements" |