Sced: Constraint Based Scene Design



Sced is a modelling program that makes use of geometric constraints to edit objects in a virtual world. The scenes created can be exported to a variety of rendering programs, including:

For those of you in Europe, this web page is mirrored weekly at http://gd.tuwien.ac.at/graphics/sced/sced.html.

The latest Sced release is version 1.02. Changes for this release are minor over those for 1.0: just bug fixes to cone vertex normal generation, CSG vertex normals for difference operations, loading and saving of attributes, and OFF export code. For 1.0 there were lots of bug fixes, of course, but also an interface for grouping objects into aggregates for editing, and VRML 2.0 support. In fact, there have been so many changes made over the last 2 years (yes, that's how long it's been) that I can't remember what they all are.

For general information on raytracing, with hundreds of links to related sites, check out the Ray Tracing home page. For general information about VRML, the 3D file format for the World Wide Web, try the VRML home page at http://www.vrml.org/.


Feature Summary

Currently you can do the following things in Sced.

That's just the beginning. It's the details that distinguish Sced from other modelling programs.


Constraint Based Editing

The interesting thing about Sced is not that it can edit objects, rather how object are edited. For the purposes of editing, objects are defined by some key features. These features may be constrained to satisfy geometric conditions - such as lying in a plane or on a line or at a point. So editing in general is accomplished by saying which conditions you want the object to satisfy and letting the system satisfy them for you.

In addition, constraints are specified through other objects, so that one object may depend on another. In this situation, the system reacts to a change in one object's parameters by adjusting the constraints of any dependent objects.

A simple example is a stack of boxes. Each box must lay on the top of the other, and the adjacent planes must stay parallel (in contact). This situation is easily realised in Sced by constraining the position and orientation of each box in relation to the box beneath it. Then, when the bottom box is moved, the stack follows as the system maintains the constraints between boxes.

There is still a significant place for interactive manipulation. If the constraints on an object leave some degree of freedom, such as motion along a line, the interface allows manipulation of the object. The constraints remain satisfied, but you are free to decide how they are satisfied. This makes for an easy to use interactive interface, with immediate feedback and control.


Extensions

The Elk interface to sced has been mildly upgraded. It allows objects to be manipulated through a scheme programming interface, allowing the creation of animations. Pat Sweeney originally developed this interface, but it has been significantly extended since then.

Denis McLaughlin built a version of Sced that supports animation, and Michael East has taken over development. You may specify a set of keyframes and the program will perform betweening for you. You can check it out at the SCEDA II web page.

Randolf Schultz has written a library for producing seashell or snail like objects. It is capable of exporting in a form readable by Sced, allowing shells and such to be included with other scenes. The software is called ShellyLib.


Supported Systems

Sced runs on almost any UNIX system with X windows Release 5 or later. It may be possible to run Sced under X Release 4 if you have the Xaw3d widgets installed and compiled up to the Release 5 specification using the patches available with Xaw3d. I make no guarantees, and it's painful to do.

Personally I develop Sced on a PPro running Linux. This platform will in general have fewer problems than other platforms, certainly better response time for bug fixes. However Sced is known to run on everything from a Cray to a 386.

POV Users

From now on, Sced only supports POV 3.0. If you haven't upgraded after all these years, you'll have to.

Future Developments

I'm not too sure where it will go from here. There are a few things that are still needed, such as an arbitrary mesh editor. It is also possible to use the constraint system from Sced in a program that supports much higher level interactions, which would be easier to use but less powerful. Such a program would make a great VRML authoring tool. Others have contacted me about about continued development. I'll support that, but I don't have mych free time any more.


Getting It

There's only one distribution for version 1.02. It's source only and contains all the basic files.

Distribution at UC Berkeley:

Mirror at Univ. of Technology Vienna, Austria (may be a little behind this page):


Tutorials

The new Sced tutorials are in html, so here goes:

Sample Defaults

These are my default files for Sced.

Parting Examples

This image shows 2 desk lamps. The one on the left is the original. That on the right was created using only 2 mouse drags from the original. The scene file, containing 2 lamps at a given level of detail, is available as desk_lamp.scn.gz. To modify the lamps, open the CSG window, copy the existing lamp, and edit the small cube at the center and the large angled cube. The former can be slid to change the radius of the torus, and the latter can be rotated to change the angle of the lamp head.

For an mpeg of the constraint system in action, click here. This mpeg was produced via the Elk extension to Sced. Only one object in the linkage is being explicitly moved. All the other objects, including the nuts and bolts, move due to constraints on the system. The scene file, linkage.scn.gz, is available.. To move the linkage, edit the slider in the front left corner (the long skinny one with a cylindrical head - the bit that would really move to drive the linkage). Sliding this bar slides all the linkage. A static image, rendered using Rayshade, is here:

This is a screen dump of Sced editing an image of a church. The full scene is one of the sample files, called church.scn.gz.

This is the image above rendered using POVray.

Another example. This one is a dining room scene. It is still somewhat incomplete, in that it only has simple attributes and is missing lots of small pieces, like glasses and knives and forks. The Sced scene file for this scene is over 600k compressed. The chairs are highly detailed.
This is the same scene rendered using Radiance. The scene only required 5 minutes worth of changes to produce the Radiance input file. Imagine trying to copy the scene by hand! In fact, imagine trying to produce this Radiance scene by hand under any circumstances. The scene took around 20 hours of CPU time on a Sun 4d (using only 1 CPU). You can preview using POV, which only took 2 hours, then do a final image using Radiance for a more realistic picture.

This image was produced by Steve Okay for Smoke 'N Mirrors Inc. It was rendered using the Blue Moon Rendering Tools.

Sced now exports to VRML 2.0. The bar scene is an example of VRML output, and here it is gzipped. These are VRML files - you'll need a VRML configured browser to look at them.

Four other examples are available. Three are useful objects: a truncated pyramid, TruncPyramid.base.gz,a top hat, TopHat.base.gz, and a box with geometrically rounded edges and corners, RoundBox.base.gz. Also available is a simple scene showing a tic-tac-toe board, tictac.scn.gz.


Last modified: Mon Jun 22 17:47:26 PDT 1998 Corrections/comments/questions to: Stephen Chenney