| file | ::= | camera background materials group |
| camera | ::= | orthographicCamera |
| orthographicCamera | ::= |
OrthographicCamera { center Vec3f direction Vec3f up Vec3f size float } |
| background | ::= |
Background { color Vec3f } |
| materials | ::= |
Materials { numMaterials int Material ^ numMaterials } |
| Material | ::= |
Material { diffuseColor Vec3f } |
| group | ::= |
Group { numObjects int (object3D | materialIndex object3D) ^ numObjects } |
| object3D | ::= | group | sphere |
| sphere | ::= |
Sphere { center Vec3f radius float } |
| materialIndex | ::= | MaterialIndex int |
| Vec3f | ::= | float float float |
| | | means "OR" |
| ^ n | means "exactly n elements" |