91-07/3dm.info > Also, is there a system yet that allows the user to build an environment > from within it? I know most make you build it from outside using a mouse- > driven CAD-type program and then you go into it. > > Rudy > darken@seas.gwu.edu I'm a grad student at the UNC-Chapel Hill Computer Science department, and I can proudly attest to the fact that there is such a system. It was written in the Spring 1991 semester by Jeff Butterworth, Steve Hench, Marc Olano and myself for a COMP 145 Software Engineering project. The program, called 3dm (for 3D Modeler) runs using VPL Eyephones and a 6D mouse that consists of a Polhemus in a billiard ball with two buttons. The program runs on Pixel Planes 5, a custom graphics engine developed here at UNC. Pixel Planes 5 can display up to 1,000,000 (yes, 1 million) shaded (phong with specular highlights) polygons (of any size) per second on the screen. Pixel Planes 5 supports up to four viewpoints (i.e. two users with stereo vision). 3dm's virtual world includes a "toolbox" which is a rectangular palette like those found in most Macintosh drawing applications. The toolbox cells contain 3D icons that represent tools (extended modes of operation) and commands (which execute immediately). The toolbox can be grabbed and repositioned, and "locked" so that it follows the user at a fixed distance and is (almost) always within reach. 3dm models consist entirely of triangles. Pixel Planes 5 supports n-gons, and support in 3dm will probably be added soon. The main tool in 3dm is the Mark tool, which can "mark" triangle vertices and groups of vertices in a model. A triangle counts as marked when all of its vertices are marked. Vertices near the cursor (a 3D arrow) are tracked -- each vertex hilites when the cursor is near it and the cursor snaps to its position. Marked vertices and triagles can then be moved with this tool. Vertices can also be moved individually to deform objects (like sculpting). Many vertices can be marked at once by dragging out a wire frame box to mark all vertices within it. Objects can be created with the Extrusion tool. The user can define edges (or mark existing edges) by clicking at the vertices, and dragging then creates a surface between them. A Triangle tool allows the creation of individual triangles and rapid creation of triangle strips. Because of vertex tracking, triangles (and pretty much any other object that is created) can be easily connected to existing vertices. Marked triangles can be scaled up or down with the Resize tool (which may be incorporated into the Mark tool by giving selected objects "resize handles" like on the Macintosh). There is also a Box tool for dragging out 6-sided boxes. A Sphere tool allows the user to create polygonal spheres. Pixel Planes 5 supports spheres as a primitive, but they cannot be sculpted and deformed. (3dm uses small sphere primitives to indicate a vertex is marked, BTW). Other tools may be added that allow other high-level objects to be created easily. Flying around the virutal world is accomplished with the Fly tool -- you fly in the direction you point and click. The virtual world may be grabbed as a whole and rotated with the Rotate World tool. The world scaling can be controlled with the Scale World tool, so you can see your virtual objects from the point of view of an ant or Godzilla. Clipboard commands (Cut, Copy, Paste, Erase) are supported, as are infinite levels of Undo and Redo. There is a Color Selector menu for changing triangles' color. Pixel Planes 5 also supports textures (though this slows down the frame rate somewhat), although they has not yet been incorporated into 3dm. Triangles can be grouped with the Group command, and group hierarchies can be created with the Parent command. By copying and pasting a selected group, another instance of the group is created. All instances are automatically updated when one is modified. Precision ("I want to click right...there...dang!") has been a big problem, considering the jitteryness of the Polhemus. It's really easy to make "natural-looking" (read: asymetrical :-) things (like a tree), but pretty hard to make symetrical things (like cars or planes). Vertex tracking helps a *LOT*. The box and other high-level-object creation tools are also useful. Sometimes it helps to scale the world up and work with the model at a larger scale. But with the help of snap-to-gridding, a floor plan of a building can be drawn on a plane and extruded up at right angles -- instant walls. We have several ideas for other constraints (like virutal mirrors for creating symmetrical objects) in the works. The toolbox icons are not very intuitive to first-time users, so we have thought about putting many of the commands into pull-down text menus. The extremely low resolution of the Eyephones makes it difficult to display text unless it is quite large in the virual world. Text will definitely be used to some extent, however. Also on the wish list is a virtual keyboard, for entering file and group names, and a virtual "standard file" interface like on the Mac. This summer I wrote high-level routines for easily creating and manipulating virtual "windows"/palettes (like the toolbox), controls (like each icon cell in the toolbox), and pull-down menus, so I suspect these wish-list features are not very far off at all. 3dm, and many other absolutely staggeringly amazing applications will be on display at the Virtual Reality Applications Gallery at SIGGRAPH '91. I hope to see everyone there. A spendid time is guaranteed for all. ;-) Later, Drew -- Drew Davidson \\ HELP FULLY INFORM JURORS! TELL YOUR FRIENDS: davidson@cs.unc.edu \\ As a juror, you have the right to vote NOT GUILTY ** LEGALIZE TRUTH ** \\ if you believe the law broken is unjust or wrongly * FULLY INFORM JURORS * \\ applied, regardless of the facts of the case.