In OOGL, hierarchical object definitions use inheritance to pass down
default values of attributes like appearance and material
characteristics. Transforms are also handled hierarchically so that
you can reposition objects within a larger hierarchy. The same
object can be instantiated in multiple contexts where it inherits
different attributes and transforms.
To place Joe's refrigerator into your world, with the correct
location, size, angle, etc., you would do something like:
{ INST geom { < http://joe.com/fridge.oogl }
transform { 1 0 0 0 0 1 0 0 0 0 1 0 3 4 5 1 } }
Note the 4x4 transform which allows translation, rotation, scaling,
shearing, etc. (this example is just a translation).
To place a red copy of Joe's refrigerator into your world -- assuming
that Joe hasn't explicitly overridden the inherited colors in his
definitions -- you would do something like:
{ appearance { material { diffuse 1 0 0 } }
{ < http://joe.com/fridge.oogl } }
See the OOGL specification in the proposal for more examples and
details.
--------------------------------------------------------------------
Paul Burchard <burchard@geom.umn.edu>
``I'm still learning how to count backwards from infinity...''
--------------------------------------------------------------------