This document will grow as the development continues IMPORTANT!!! File operations: Right now when you save or load a solid you have to type the filename blindly. For example to save a solid, you select it. Press Alt-S. Then type filename without extension and press Enter. To load press Alt-L, type filename, press Enter. The loaded solid will be positioned at camera's origin. Later I'll add a better interface. CSG Operations: They are not 100% finished. Some special cases will cause weird results. So please avoid (at the moment) CSG operations when verts of one solid are on surfaces of the other, when a vert of one solid is on an edge of the other or when edges of the two solids intersect. SOLID EDITOR ============================= Definitions ======================================= Vertex - Point in 3D space, used to define Edges. Edge - Edge connects two Vertices. It is used to define Surfaces via HalfEdges. HalfEdge - Surface is defined as a closed set of HalfEdges. Each HalfEdge tells which Edge it is on and what direction this Edge is 'walked'. Surface - Surface is a polygon used to define a Solid. This polygon can be of any shape (convex, concave, with holes etc). All the HalfEdges that define the Surface must go clockwise when you look at the front side of the Surface. Light - A static sourced light associated with a Solid. Used to create shadow maps. Solid - Solid is a mesh of surfaces that define a 3D object of any shape, that is it can be as simple as a cube or as complex as a whole level in a game. CSG - Constructive Solid Geometry. Concepts ======================================= The main idea of this editor is that you work with solids only. Thus you do not have to think about all those vertices, edges etc. You can perform the following operations on solids: Simple operations: Scaling, Rotation, Translation Complex operations: Union, Substraction, Intersection. To get an idea about these operations take a look at 3D Studio. Of course, a solid can be saved, loaded, copied and pasted. A note about coordinate system. It is a bit unconventional: Y Here positive Z goes into the screen. | Z | / | / | / + - - - - - - X Work area ======================================= The screen is sub-divided into four windows. You can also maximize any window when needed. Each window contains image from a camera. A camera can be of one of the following types: - 'Projection' camera. Shows solids from top, side or front. - 'Perspective' camera. Shows wire-frames or flat/texture-mapped priview. ---------------- | 3D | Top | |--------------| | Side | Front | ---------------- Only one of the windows is active at any time. What you can do in a window depends on type of the camera: 'projection' cameras are used to create geometry, 'perspective' wire-frame camera is useful when you want to walk in almost real time around your solid and texture-mapped preview allows to change and align textures. You are free to move around the world in any window separately or you can synchronize the 'projection' windows so when you move one camera others will follow. This gives you the possibility to look at the same point from different sides. Operations ======================================= To select a solid, move mouse cursor to the solid and click LMB. If the camera where you click is not active it will be selected and you'll have to click again to select the solid. In wire and projection cameras you have to click on the edge. In flat/tex mode click on surface. To perform a simple operation (move, scale, rotate) select a solid, press a key and then move mouse. When done, ENTER or LMB accepts the changes. ESC or RMB restores old values. To perform a CSG operation select a solid, press a key and then select the second solid. You can create a simple solid (parallelepiped) from scratch. Its extents are specified during the creation and can be changed afterwards only using CSG operations. Copying and pasting is done via clipboard. It has 10 slots. So to copy a solid to slot 1 you press Alt-C then press 1. The same is true for pasting: Alt-P, 1. In truth the clipdoard slots are files named _CLIP?.SLD. To free the clipboard just delete them. To add a light to a Solid, select a Solid and then press INS to add a new light. To move a light, select a light and press M. To delete a light, select a light and press DEL. Interface ======================================= Most of operations allowed in a camera will work during solid movement, rotation etc. Thus you can toggle grid-snap, move/zoom or center camera as you do something with a solid. General operations ----------------------------- 1, 2, 3, 4 - Choose active window Enter - Maximize/restore active window Y - Toggle projection cameras sync on/off. Select a projection camera and press this key to align other projection cameras on the same point. Alt-H - Toggle VFX1 head-tracking. Even when enabled head-tracking only works for a full screen perspective camera. Alt-G - Toggle coordinate snap-grid ON/OFF Alt-A - Toggle angle snap ON/OFF - - Decrease size of snap-grid or angle snap in Rotate mode + - Increase size of snap-grid or angle snap in Rotate mode C - Center camera on a solid. In proj camera it simply centers the view. In perspective camera it keeps the same camera direction sets camera origin to the solid origin and then moves away a bit. LMB - Select solid, surface, edge. ESC, RMB - Cancel current operation or clear selection. Alt-V - Toggle vertices drawing. Default OFF. Alt-T - Toggle light drawing. Default ON. Alt-X - Exit Projection camera ----------------------------- Cursor keys - Move camera along projection axes A, Z - Zoom In / Zoom Out Perspective camera ----------------------------- Alt-R - (in Tex mode) Preview the LIGHTED scene! REALLY COOL and SLOW! If you press ESC while waiting for shadows to be computed, the renderer will display polys that have not been processed in normal Tex mode, and lighted preview mode will be turned off. Cursor keys - Rotate camera ALT+Cursor - Slide camera A, Z - Move forward / backward X - Change mode (wire,flat,tex) L - In Flat mode. Move light direction with mouse. T - Select texture V - Work with texture mapping vectors. For now it will just allow you to set texture alignment. Move mouse - Slide the texture TAB - Change axis BACKSPACE - Reset texture offset to (0,0). BACKSPACE - When not in any special mode, align camera along Z axis. Solid operations ----------------------------- SPACE - Create a simple solid (box). The solid is created at the center of current camera. During creation it is not drawn in Tex or Flat cameras. Move mouse - Change size along an axis TAB - Change axis INS - Add a light and then move it Move mouse - Move the light TAB - Change axis SHIFT-TAB - Same as above but clears prev move DEL - Delete the selected light M - Move solid/light (if a light is selected, light is moved) Move mouse - Move the solid/light TAB - Change axis SHIFT-TAB - Same as above but clears prev move S - Scale solid Move mouse - Change solid scale BACKSPACE - Set scale to 1.0 R - Rotate solid Move mouse - Rotate TAB - Change axis of rotation SHIFT-TAB - Same as above but clears prev rotate BACKSPACE - Reset rotation matrix to identity O - Move solid origin used for scaling and rotation. Move mouse - Move the origin TAB - Change axis SHIFT-TAB - Same as above but clears prev move U - CSG Union B - CSG Substract I - CSG Intersect Solid management ----------------------------- Alt-S - Save current solid Alt-L - Load solid from disk Alt-D - Delete current solid Alt-C, # - Copy a solid to a clipboard slot #. Note that you press and release Alt-C and then press the digit 0-9 Alt-P, # - Paste a solid from a clipboard slot #.