jaw3d Model Viewer by Jawed Karim http://umn.edu/~jawed jaw3d is a Nullsoft Inc. Product http://www.nullsoft.com Invocation: =========== jaw3d expects to be passed up to two command line parameters. They specify the model you would like to view, and the texture you wish to map to it. The format is as follows : jaw3d [pcx file][.pcx] The second argument is not required. If no PCX file is specified, the default 'texture.pcx' filename will be used. You can leave off the .pcx extension on the command line if you so choose. The extensions supported for the models are .jaw and .mdl yes .mdl as in Quake MDLs View Modes ========== The Jaw3d Model Viewing engine can be toggled through five different modes, two of which can support enviornmental mapping. NOTE: The viewing modes are changed in real time. 1 - wire framed 2 - flat lambert shaded 3 - gouraud shaded 4 - texture mapped 5 - shaded texture mapped 6 - environmental mapping toggle on/off (fake phong shading with an appropriate texture, can be applied to modes 4 and 5 only) Object Manipulation =================== Model viewers wouldn't be complete without the ability to move and view objects from different angles. Basic key commands are as follows : x - rotate object on the x axis y - rotate object on the y axis z - rotate object on the z axis w - rotate light source around the x axis e - rotate light source around the y axis r - rotate light source around the z axis home - re-center the object keypad - moves the object up, down, left or right respective to the direction the keypad keys point. The keys + (plus) and - (minus) will zoom in and out on the object. If you have the pleasure of owning a mouse, these *additional* options are avaliable to you. Hold your head up proud. Enhanced Controls are as follows : Moving the mouse rotates the object on the x, y, or z axis. While holding button 1, moving the mouse will translate the object on your screen. While holding button 2, moving the mouse up will zoom out, and pulling the mouse down will zoom in. Don't do these too fast, you might zoom in too far and lose track of the object. While holding both buttons 1 and 2, moving the mouse will move the light source around the object, very cool. Keep in mind that these commands are non-interdependent, meaning you could hit 'Y' to start rotating the object on the y axis, and move the light source around with the mouse. .jaw model file format: ======================= The .jaw model file format was created to keep the file size down and simplify the reading in of the objects by the program. The first line in any .jaw file specifies the location of the light source: Light: (1,0,0) Rotating the light source only affects flat shading and gouraud shading at this time. Following the light source is a list of vertex coordinates. Then, a list of polygons follows. Example: Light: (0,0,1) 0: -10 10 0 1: 10 10 0 2: 10 -10 0 tri 0, 1, 2 The jaw file above represents a simple triangle with three vertices. Only the 'tri' keyword is supported for polygons. Why only triangles you may ask? Because triangles are the most magical shapes to ever exist. Given 3 points, there is no physically possible way you could draw the triangle incorrectly. All of the vertices however must be in the same order. Do not mix counterclockwise and clockwise vertices. PCX Files: ========== The TEXTURE.PCX file is the default graphic that is wrapped around the object. You can use another PCX file by specifying it in the command line. Feel free to use any image, however, be sure that the file is always a ZSoft PCX file version 5 with 256 colors or less. About jaw3d: ============ jaw3d is written in Ansi C and is therefore very portable. I have ported jaw3d to Linux using svgalib. For speed, I implemented a few fixed-point math optimizations but there is no assembly at all. About the author: ================= I'm 18 and a senior in High School. Check out my resume on my homepage. Credits: ======== The following people contributed to the development of jaw3d through either conceptual help, feature suggestions, or through the development of independent utilities for jaw3d. Thanks guys! Justin Frankel, Nullsoft http://www.nullsoft.com/ Mark Grocki, Hirise Software http://hirisesoftware.home.ml.org/ Matthew Sullivan http://www.tc.umn.edu/nlhome/g371/sull0192/ Jake Harvey, 2Real Entertainment http://homepage.interaccess.com/~jwharvey/projectx.html Brent York, Nuclear Winter Entertainment Inc. york@nbnet.nb.ca royce3 royce3@flash.net defile necro@easyway.net