Ephemeris Documentation


Ephemeris' central design philosophy is the use of sub-objects; large objects are likely to be less flexible, less reusable, and more memory-intensive. When you use a sub-object you can override almost all of its common properties, so you can think of a sub-object as being little different from a built-in object. When you are designing objects think about sub-dividing objects, especially if a certain set of pieces are re-used. And if you ever think about cutting and pasting, you should definitely be using a sub-object.

For instance, suppose that you are modelling the outside of a Victorian house. The main pieces that you need are walls, the roof, and a porch. Victorian houses are usually two stories, with windows at regular intervals. Now you could just make one big object that had all the rectangles for the walls and the windows. Suppose that you decided that windows needed more than just a rectangle; they needed to have some trim around them. You would have to visit every window in the object and change it. If you made the windows a sub-object, however, you could change it once in the window object and all instances would change.

Now you progress to the roof. Again, you could make a bunch of rectangles (and probably triangles, too) and texture them with a shingle image. If you are not sure what texture you are going to use for the roof, it would be easiest to make the roof a sub-object with no textures and set the roof sub-object to have the appropriate shingle texture.

Finally, consider the porch, specifically the railing. It will have those ornate, turned posts for the railing. A perfect use for the LathedObject, so you make a railing with 20 of them, copying and pasting them. It looks beautiful, but if you want to modify it, you have to remember to do it in all 20 copies. Also, the LathedObject takes some time to compute the polygons. If you made one post a sub-object and used that sub-object 20 times, only one set of polygons was computed. Instead, because of the copy-pasting, it is now generating 20 identical sets of polygons, wasting memory and start-up time.

So, to summarize, subdivide, subdivide, subdivide! It will save you editing time, may give you objects to use again later, and will save time and memory.

When you make subobjects, keep them within the 1 x 1 x 1 bounding cube (i.e. x, y, z ε [0, 1] ), as this will allow you scale and rotate them easily when you need to use them. Although this is not an enforced rule, it is strongly encouraged as it will make your life a lot easier. (Plus the engine itself assumes this and may not work correctly if the assumption is incorrect) The Sphere and LathedObject actually have slightly different assumptions since it is easier to work with them that way. The Sphere is centered at (0, 0, 0) and has a radius of 1.0 (use the size property to make it larger or smaller). The LathedObject is centered around the y-axis and has a radius of no more than one (e.g. x, z ε [-1, 1], y ε [0, 1] ).

For reference information, please see

Home    About    Screenshots    Download    Documentation

Copyright © 2001 Geoffrey Prewett