home *** CD-ROM | disk | FTP | other *** search
- send mail to wave@media.mit.edu with any questions.
-
- Thi directory contains the source for my 3DKit. This version is based
- on top of NeXT's, but it's been designed to port to OpenGL and Tk.
- Hence, it's a bit different than your normal NeXT-like kit.
-
- From a UI perspective, there's only one object of interest: the
- WW3DWell. The idea behind the WW3DWell is to encapsulate the
- functionality you would want when integrating 3D into an arbitrary
- app. It should support photorealistic rendering, direct manipulation,
- browsing and inspecting of the parts of the shape hiearchy, drag and
- drop, etc. I think it works pretty well, but there are still parts
- that aren't done.
-
- From a programmer's perspective, the most obvious classes are
- WW3DShape and the subclasses of RIBCommand. One of my concerns in
- designing this kit was trying to come up with a way to enumerate all
- possible classes beforehand, so that users wouldn't need to subclass.
- I have various nefarious reasons for this. This is in direct contrast
- to the N3DKit's style, wherein you subclass N3DShape to draw your
- particular kind of geometry. In my 3DKit, their is only one subclass
- of N3DShape: WW3DShape. a WW3DShape has a list of ribCommands, each
- of which is a subclass of RIBCommand. For each appropriate Ri*()
- routine in the RenderMan interface, I've made a subclass of
- RIBCommand, each of which knows how to do a set of things, like render
- themselves and calculate their bounding box. When you tell a
- WW3DShape to render itself, it in turn just tells all of its
- ribCommands to render themselves. This is cool because you can parse
- a rib file into this sort of shape hierarchy, interact with it, and
- get the same rib file out the back end, including transformations.
- This is pretty hard to do any other way.
-
- The main coolness of this kit, though, is the fact that it offers the
- programmer a complete time-based modeling language based on tcl, the
- tool command language. For more info on tcl, look in ../tcl/doc, read
- the newsgroup comp.lang.tcl, ftp to sprite.berkeley.edu and pick up
- the Postscript pre-print of the forthcoming tcl book from
- Addison-Wesley.
-
- Anyway, I've added a complete RenderMan binding to tcl, along with a
- few interesting commands (the most interesting being EveCmd and
- ApplyToCTM). I haven't figured out the best way to document this yet,
- so y'all should take a look at the code and let me know what's really
- opaque.
-
- This kit isn't finished yet, but I am interested in feedback.
-
- More Info
- ---------
- The real power of these two WavesWorld palettes can be seen when you
- combine them to start building what I call "malleable media". This is
- really one of the ideas from my PhD, and it's one that I'm very
- excited about. The basic idea is this:
-
- clip art is dead; it's static. If someone gives you a piece of 2D
- clip art as an EPS, the best you can do is toss it in your
- illustration; maybe you can scale it or rotate it, but that's about
- it. What you really want is the Virtuoso/Illustrator/Create file, so
- you can interact with it.
-
- In the same way, a RIB file is pretty dead. You can extract shape
- hierarchy info from it, but what you really want is a modeling
- language, with variables, looping constructs, procedures and dynamic
- constraints. Assuming you design a modeling language, you then want
- to write your clip objects in it. You obviously want it to reduce
- itself to RIB eventually, but you want to be able to easily attach UI
- elements to manipulate variables inside a model program before it gets
- reduced to RIB.
-