CALIGARI Octree Software introduces Caligari, 3D animation software for video and design professionals. Three years of development, Caligari represents a major innovation in 3D conceptual design and animation. Written for the Amiga family of personal computers, Caligari is a powerful tool for corporate presentations, industrial training, educational video, conceptual design, advertising production, architectural design, commercial movie production, broadcast and cable television production and other commercial and artistic activities. Caligari is a conceptual modeler which means that its intuitive real time response enables the designer to do the initial conceptual stage of design directly on the screen without the need for preliminary sketches on paper. At the heart of the system is the unique, intuitive real time interface. The interface is so easy to use a five year old can design simple objects in a matter of minutes (and enjoy it too) and so powerful a professional designer can finish a complex animation job in one day instead of the several weeks it may now take. Typically a designer will go through four phases in developing animation: designing or selecting objects, setting a scene, developing choreography and finally rendering the images to a video tape recorder ("VTR"). OBJECT DESIGN First the designer builds or selects objects to be placed in the scene. Objects may be selected from an object library, built from simple shapes or created from two dimensional sketches. A large object library (including cars, boats, and buildings) in included. Object libraries created with the home version of Octree's software may also be used. Complex objects may also be created by combining simple objects. A comprehensive set of simple 3D shapes ("primitives") such as a cube, a sphere and a cone is included, from which basic building blocks can be chosen. These shapes can be moved, rotated and scaled proportionally or along one or more axes both in global and local (object) space. Then they can be glued together to create complex shapes. Caligari Interface The pictures below illustrate the commands typically used to create, animate and view objects in the object design and scene composition modules. The commands are intuitive and easy to remember. Commands are selected from the menu with a mouse. Some functions, such as selection of color hues are controlled by horizontal sliders - bars which may be moved left or right with the mouse to increase or decrease the desired attribute. The Navigation Menu is the main menu of Caligari. Menu choices are located at the bottom of the screen. They are stackable i.e. the user can add or subtract any menu choice as needed. If desired, all of the menu choices can be eliminated for full screen display with the current function still active. Top, Side and Front views - Orthographical projections may be selected enabling the user to position objects with a high degree of precision. By selecting "zoom" and "translate" from the menu, the user can smoothly magnify any part of a design up to the precision of the database which provides the fine gradation of full floating point representation. Move, Rotate and Scale - Each of these operations can be performed in real time, without accessing a menu. Objects to be manipulated are selected simply by pointing the mouse. These operations form the basis for conceptual object design. On the picture above the rocket has been moved, the sailboat rotated and the robot scaled. Translate - This operation moves the eyepoint linearly in the world space. Encircle - This operation moves the eye point along a spherical path with the center on the currently highlighted object. Pan rotates the eyepoint left or right and up or down without changing the viewer's position in the world space. Hierarchy - Caligari objects are fully hierarchial. This means that parts of a complex object can be selected and manipulated absolutely or relatively to the object itself. For example, in the picture above the robot's arm has been selected and now can be easily pivoted around the shoulder joint. Each level of the hierarchy can be accessed by selecting frm the menu an up or down arrow and pointing to the desired subobject with the mouse cursor. The subobject can be glued or unglued for reuse in other objects. Hierarchial flexibility is important because it is the only means to incorporate parts of an object into a while in a way intuitive to the user. Primitives - Primitives are basic shapes which may be combined to create more complex objects. Because the primitives are used often, they are represented by icons and can be instantly loaded using the mouse pointer. Load - Save (not illustrated) These are scrollable directories for loading and saving objects. They can be accessed with the mouse or keyboard. Render - At any time a solid view of the objects can be obtained by selecting "render" from the main menu. In the object module any part of a solid object can be easily colored, due to the ability to select parts of objects hierarchically. The pallete can be modified by using horizontal sliders for hue, saturation and value. This provides for an intuitive means to achieve a harmonious relation between colors. More comprehensive color manipulation is available in the scene module, where in addition to color, diffuse and specular attributes can also be specified. Extruder - The user can draw two dimensional shapes by hand with the mouse and then use the extruder to create a 3D shape by moving the 2D outline through space. The above objects (from left to right) were created using the "extrude", "cone" and "spin" options from the extrude menu. Scene - In the scene module, a complex environment can be created by moving, rotating and scaling objects. Where applicable, functions in the scene module and object design module work identically. When the geometry of the scene seems right, lights can be placed in the scene and a solid view of the scene can be obtained. In addition to location and intensity, softness of a given light source can be specified. Each object can be assigned values for diffuse and specular attributes. In the picture at the top of the page you can see a top view of the scene. notice that menus were removed to achieve full view of the scene. Another way to create objects is to sweep two dimensional sketches through 3D space. This is done with the extruder. Caligari's powerful extruder can manipulate complex shapes including concave polygons with holes. In wireframe mode the designer can smoothly move objects or zoom in on any particular detail of the design in perspective, top, side or front view selections, all with real time response regardless of object complexity. At any time a solid view of the object can be obtained simply by selecting "render" from the menu. Curves, polyhedra and complex objects can be instantly saved for later recall. "Undo" is available for every operation performed. SCENE COMPOSITION Once objects have been selected or created, they are placed to create a scene, such as a street, space station or room. Here, the overall look of the design is obtained. The designer interactively colors the objects, assigns their material attributes (such as shininess) and places one or more lights in the scene. The intensity and softness of each light may be set. Caligari can display the scene in solid view with flat shaded surfaces using buth diffuse and specular reflectance for the objects. Octree plans to offer upgrades which will render smooth shaded surfaces. Rendering time for a scene with 1,000 polygons is approximately 30 seconds on a standard Amiga PC without a floating point accelerator board and substantially faster with the optional board. SCRIPT MODULE Caligari provides an extraordinary degree of feedback for choreography with its real time preview option. The designer writes a script using simple commands such as move or rotate and then can see the result instantly in wireframe form. The length of the script preview is unlimited. RENDERING The final rendering process is fully automatic. Once the designer is satisfied with the objects, scene, lights, coloring and choreography, Caligari will automatically render each frame in full color and record it to the videotape. Transforming computer images to videotape requires an optional VTR single frame controller. Rendering may be done at night without the user present to maximize hardware value. Caligari supports a variety of professional quality VTR's and also broadcast quality genlocks - hardware devices for combining computer animation with live footage. Caligari Hardware Requirements ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Computer Amiga PC 500/1000/2000 with a minimum of 1 MB memory. 2-4 MB strongly recommmended. Monitor Analog RGB or composite Hardware Options Single frame controller; floating point accelerator; broadcast quality genlock Resolution 736x482 pixels in wireframe mode 736x482 in solid view mode with 16 colors out of a palette of 4096 362x482 in solid view mode with 32 and 64 colors out of a palette of 4096 Caligari's sophisticated color compression techniques increase the number of apparent colors and palettes above by a factor of four. TABLE OF CONTENTS 1. Introduction............................................3 1a. Basic Environment..............................4 2. Main Structure and Mouse Operation......................5 3. Main....................................................6 4. Object Design...........................................7 4a. Base Menu......................................8 4b. Navigation.....................................9 4ba. Viewpoint Manipulation...............10 4bb. Object Manipulation..................15 4bc. Views................................20 4bd. Erase and Undo.......................21 4c. Status........................................27 4d. Tools.........................................28 4da. Glue/Unglue/Copy.....................29 4dc. Extruder.............................32 4e. Load..........................................43 4f. Save..........................................44 4g. Primitives....................................45 4h. Render........................................46 4ha. Color................................49 4i. ETC...........................................50 5. Scene Composition......................................62 5a. Base Menu.....................................63 5b. Tools.........................................64 5ba. Lights...............................66 5c. Load/Save.....................................67 5d. Render........................................69 5da. Color................................72 6. Script.................................................75 6a. Syntax........................................80 INTRODUCTION Our world has three dimensions. Every day we perform a multitude of actions requiring complex coordination in 3D without even thinking about them. Yet existing software for 3D manipulation and animation is usually so difficult to use that it requires special training. Only a few designers and artists are willing and capable to undergo this cumbersome learning process. Octree Software firmly believes that the future of personal computing is three dimensional. 3D visualization is essential in many areas of human activity, not the last one of which is the human communication. However, for personal computers to fulfill this promise, it is necessary it create much more innovative hardware and software. Caligari is a new kind of a software tool. It enables the user to think directly in 3D space instead of just transferring the designs from paper. Because of this and because Caligari allows to move objects in real time the user can create very complicated projects and complete these projects in a fraction of time and cost necessary with current tools. Caligari is for everybody who has a need for 3D visualization. This includes corporate presentations, industrial video, interior and architectural design, training applications, education and fine art. Caligari will establish a new market for 3D conceptual design and animation for those who waited for sophisticated and affordable tool. The wait is over. 1a. BASIC ENVIRONMENT Caligari's environment is designed to provide an unmatched user interface in terms of ease and power of 3D design and animation. This has been accomplished by adhering to a few basic design principles: 1. REAL TIME RESPONSE The user should not have to wait several seconds for the program to react to his actions. In Caligari all but the most complex operations are executed in a fraction of a second. 2. 3D PARADIGM Caligari does not incorporate a traditional window based environment. Rather than looking at the window, user literally looks though a window into a larger 3D environment. In Caligari the computer screen is a illusion of 3D reality uncluttered with windows and menus. 3. TERMINOLOGY Pictorial icons are generally avoided. They are only used to represent spatial concepts such as 3D primitives. For symbolic concepts we use English words. Rather than borrow terms from film language Caligari uses consistend geometrical terminology. 4. EYEPOINT COORDINATE SYSTEM Our everyday actions are simple because we are the center of our world. We expect the mouse cursor to move up when our hand moves up even when at the moment our world is upside down. We interpret all action in relation to ourselves. Perceptually the sun rotates around the earth despite Copernicus. Caligari is always trying to interpret user actions in the eye coordinate system. 5. HIERARCHIAL OBJECT MANIPULATION Caligari can manipulate objects either in world (global) space or in object (local) space. Default is always local space (except for translation). Caligari allows for intuitive manipulation of complex hierarchial objects. For example a robot's arm if highlighted will rotate around the robot's shoulder (in local space) unless the user specifies the world space (to unglue and remove the arm). 2. MENU STRUCTURE AND MOUSE OPERATION The first thing to note about the menus is their location. Caligari's menus are located at the bottom of the screen resembling somewhat instrumental panel of a car or airplane. They are comprised of horizontal strips. Rather than hierarchical, they are stackable, i.e. they stack themselves on top of each other as the user activates them. Using stackable menus, the user can create a personalized working environment. Any selection from any visible menu strip can be made instantly without going up or down the hierarchy. When the user exits an environment such as the object module he will find it in the same state upon return. Selections from the menus are made by moving the mouse cursor on top of the desired item and clicking the left mouse button. This will highlight the menu item and activate the function the item performs. When the cursor crosses the top menu strip into the 3D workspace the cursor changed its shape. This is to indicate that now it relates to objects in the workspace rather than menu items. If a button is depressed while the cursor is in the work area, cursor disappears and currently selected function starts to operate (i.e. object rotates around z axis). When the button is released function stops operating and cursor appears again. While menu strips automatically stack themselves on top of the menu when activated, they can be selectively eliminated by selecting the close gadget at the lower left side of the menu strip. All of the menus can be made invisible by selecting the close gadget on the base (bottom) menu. The whole screen becomes a 3D workspace now, with the current function active. This way the user can position an object anywhere on the screen with a completely uncluttered view. The menus can be brought back by moving the cursor all the way to the top of the screen and depressing a mouse button. If the cursor is not visible, for example when viewing a solid view, a double click on right mouse button will bring the menus back. The default working configuration of the program is saved in a configuration file. When the user changes a parameter, such as number of segments for extrusion, he can save the current configuration, so that the next time the program is loaded it will reflect the saved changes. Caligari file menus are context sensitive i.e. LOAD menu will display only available objects when activated in object design and available polygons when called from the extruder. Additionally standard file requester enables the user to see a whole directory as well as change the current directory. This file requester is displayed whenever a SET PATH command is activated. It is also displayed when the user decided to change the current scene selecting LOAD WORKSPACE from main menu. 3. MAIN MENU Main menu is displayed at the bottom of the title page when the program loads. Its purpose is to allow the user to change the current environment (throught the "Load Workspace" gadget), enter the Object Design and Scene Composition and exit the program. There are also a few utilities accessible from this menu. The arrangement of gadgets in the Main menu is as follows: Object Design Scene Design Load Workspace Utilities Quit Object Design - Enter Object Design. Scene Design - Enter Scene Design Load Workspace - Change current scene. In Caligari a scene file contains a description of the scene plus all the objects created for the scene (not all of them have to be used). This means that if scene is changed, Object Design will display a new set of objects in Load Object menu. This way if scene is copied to a different disk it will include everything it needs to properly work on another CPU. Utilities - General purpose utilities. For now it only includes color bars. Quit - Exit the program. 4. OBJECT DESIGN The purpose of this module is to design complex geometrical objects such as "chair", "house" or "camshaft". The user can access a large collection of basic 3D solid objects in the object database. Included in the supplied basic database is a library of primitives such as "cube", "cylinder", "sphere", etc. With a click of a mouse button, these can be placed in the environment on the screen. Another click, and they can be squeezed, stretched, rotated or translated to any other point in space. Simple objects can be then combined together with the glue operator. The designer coula also draw a two dimentional shape and rotate or extrude it in 3D. Using orthogonal views (top, front, side), the designer can pan and zoom around the design and position parts with a very high degree of precision. All the operations can be performed in real time without a need for keyboard entry, unless it is specifically desired. Once a satisfactory object is designed, it can be named and saved to disk to be used later to build scenes and animate them. Objects created with the glue operation are fully hiearchial and any part of a complex object can be accessed simply by selecting the hierarchy level using up and down arrow and pointing to desired subobject. Once a subobject is selected it will automatically move in relation to its immediate higher node i.e. robot's arm will rotate around its shoulder joint. Caligari opens into the object design module with base menu and navigation menu present. The workspace is viewed in perspective with the encircle (encirc) function active and the X-Y coordinate axes selected. The selection of a function is indicated by an amber highlight of that function. 4a. BASE MENU The base menu is always present at the bottom of the screen both in Ojbect Design and Scene Composition. It can be made invisible (along with the other menus) by selecting its close gadget. It can be made visible again by clicking the mouse all the way at the top of the screen. The arrangement of gadgets in the base menu is as follows: NAV STATUS TOOLS LOAD SAVE PRIM RENDER SCENE MAIN These are major functional blocks in Caligari. When selected some of them activate additional menu strips, some replace the existing menu setup, and some open a completely new screen. NAV - Navigation is the central part of Caligari's interface. It enables the user to move in 3D environment and manipulate objects in it. STATUS - Displays numerical data about current scene. TOOLS - Contains GLUE, UNGLUE, EXTRUDE and COPY functions. LOAD - Displays menu for loading objects into the workspace. SAVE - Permits saving objects under user selected names. PRIM - Displays iconic menu of primitive (basic) objects for instant loading into the workspace. RENDER - Displays current object as a solid, in color. SCENE - Exits Ojbect Design and enters Scene Composition module. MAIN - Exits Object Design into the main menu. 4b. NAVIGATION The navigation menu is by far the most often used menu in Caligari. When the program starts, navigation menu is the default selection for the workspace. In navigation menu the user can move around in 3D design work space and manipulate objects in it. Because the user sees the perspectiv4e place in the workspace, there is never any ambiguity as to which action is currently performed. The height of navigation menu is equal to two text lines. On the left side of navigation menu are options for view selection. In the middle are operations for object and eye manipulations. On the right side are Undo and Erase gadget. Most user actions are performed directly in perspective view. For precise positioning the user can elect to display the workspace in three orthogonal views, "Front", "Left", and "Top". Regardless of the projection, most functions operate identically in either view. Navigation menu works identically in the Object Design and Scene Composition module. Many functions can be also performed from the keyboard using the ETC submenu. This submenu also enables 3D grids for translation, rotation and scaling of objects. 4ba. VIEWPOINT MANIPULATION Viewpoint motion is the movement of the user in the environment. Viewpoint motion always takes place in screen space i.e. it is relative to the user. There are three gadgets on the navigation menu allowing the user to change his or her position in the 3D world: "Move", which translates the viewpoint in X, Y, and Z; "Encirc", which orbits the viewpoint; and "P/T", which stands for "Pan/Tilt", which changes the angle of the viewing relative to the ground plane without moving the viewpoint. Also, the user can change focal length of the eye with the Zoom gadget. One of the strengths of Caligari is that the user is always exactly aware of his position in the world and also of the changes in this world. Movement of the viewpoint is clearly indicated by perspective change of the ground plane. While the viewpoint is moving, only the groundplane and the selected object (if any) are visible with the rest of the scene removed during the action. The scene will be rerendered in background color (green) once the user lifts the finger from the mouse button. The most important thing to remember is that when viewpoint changes its position the wold world (all the objects in it) changes its appearance. MOVE Purpose: To move the viewpoint linearly in the worldspace. Procedure: 1. If the move function does not appear on the menu, select the Nav function and it appears. 2. Select the "Move" function from the menu. 3. Select the desired axes for movement by clicking on X, Y and/or Z. 4. Move the mouse into the workspace, hold down the left mouse button and move the viewpoint location accordingly. Options: x - move left or right y - move up or down z - move in or out Note: Left mouse button controls x and y axes, right button controls z axis. ENCIR Purpose: To encircle point we are looking at. Eye moves on the surface of an imaginary sphere around the selected object Procedure: 1. Select the object about which the eye is to travel. 2. Select the "EnCir" option. 3. Move the mouse into the workspace, hold down the left mouse button and move the mouse to encircle the objects. Options: x - turn left or right y - turn up or down z - turn sideways Note: Left mouse button controls x and y axes, right button controls z axis (horizon). Unlike the move operation encircle enables to go around the object and look back to the point where the user was originally. P/T Purpose: Pan/tile changes the angle of the eye relative to the ground plane. The eye can loop up or down, left or right and roll clockwise and counterclockwise. Procedure: 1. If the function does not appear on the menu, select the Nav function and it will appear. 2. Select the P/T function from the menu. 3. Select any combination of X, Y and/or Z to specify the axes for panning. 4. Move the cursor into the workspace, hold down the left mouse button and move the mouse now to change the viewpoint angle accordingly. Options: x - turn left or right y - turn up or down z - turn sideways Note: Move left button simultaneously controls x and y, right button controls z. In this operation the position of the viewpoint does not change. Pan / Tilt is analogical to the same operations of a camera in film industry. ZOOM Purpose Zoom changes the focal length of the eye. It can be adjusted from "Tele-lens" to "Fish-eye". Procedure: 1. Select the "Zoom" function from the menu. 2. Move the mouse into the workspace, hold down the left mouse button to change the zoom accordingly. Alternative: 1. Select Zoom. 2. Drag the horizontal slider next to zoom gadget to change the focal length. Note: The horizontal slider also gives a visual indication of the zoom setting. Zoom is different from the Move command in that that actual eye position does not change. In top, left and front view the Zoom (together with Move) enables extremely precise positioning of objects. The user can move around the two-dimensional view of the world and magnify the area of interest to extremely high degree. Once the detail is magnified precise positioning of objects is easy. 4bb. OBJECT MANIPULATION Object manipulation consist of transition, rotation or scaling of a wireframe object. First an object has to be selected using the "Pick" function. It can then be manipulated in real time with the mouse. For each operation a set of axes must be specified. For example if X, Y, and Z are set for a scaling operation, the object will be scaled proportionally in all three dimensions. If X and Y axes are turned off, then scaling operation will affect only Z axes and the object will be stretched or squeezed along this axis, while the dimensions along X and Y will not change. There are two options for setting the coordinate system in which Object Manipulation commands operate: World coordinate system (global) and Object coordinate system (local). World coordinate system is associated with the global 3D space the user looks at. You can imagine it as three orthogonal vectors radiating from the center o the ground plane defining the workspace. X points down one axis of the ground plane, Y points down the other axis and Z points up through the ground plane. If the user selects, for example, translation along only the X axis then the object will move in parallel with one side of the grid and this will not change even if the user rotates the object in different direction. The Object coordinate system is local to the object itself. If the object is rotated, then its coordinate system will be rotated with it. In this way, for example, robot's local X axis always points in front of the robot regardless of the robot's position in the world. The Object coordinate system forms the basis for the hierarchical manipulation capability of Caligari. The user creates the hierarchy by gluing various parts of complex object together. For example the hand and forearm are glued together, then the new object is glued to upper arm. The whole arm is glued to the robot's shoulder. At any time any part of the robot's body can not only be accessed for manipulation, but manipulation will automatically be performed in local (object) space. Thus, fir the user selects the robot's arm and then Rot Z, the arm will rotate around the robot's shoulder. This can be overridden by selecting the world space (unselect ObjAx). Gadgets associated with object manipulation are: Pick, Trans, Rot, Scale, X, Y, Z, and ObjAx. PICK Purpose: To select an object for manipulation. Procedure: 1. Select the "Pick" function. The navigation menu will disappear, and next to the Pick gadget, up and down arrows (/\, \/) will appear. 2. Point the cursor at the object which you want to select. 2. Depress left button on the mouse. The new object appears highlighted and the navigation menu reappears. Comments: If no object is selected, object manipulation operations are inactive. If a new object is selected, the previously active object will be unhighlighted (drawn in the background color). The up and down arrows cause the next level of hierarchy to be highlighted. For example, if a hand is selected and up arrow is depressed, the whole arm will be selected. See also "Glue" and "Unglue". TRANS Purpose: To move the object in an arbitrary direction. Procedure: 1. Select the object using "Pick" if not already selected. 2. Select Trans. 3. Select the combination of X, Y, and Z axes desired. 4. Highlight ObjAx (object based coordinate system) or unhighlight ObjAx (world based coordinate system). 5. Move the cursor into the world space and hold down the left button to translate the object in X and Y. Hold down the right button to translate in Z. Options: x - move along x axis y - move along y axis z - move along z axis Note: The left mouse button controls the x and y axes, the right button controls the z axis. Motion on the screen is always in the direction of the movement of the mouse, even when the eye looks at the scene from opposite directions. This operation performs differently in object based coordinate system and in world based coordinate system. most of the time world coordinates will be preferred. ROT Purpose: To rotate the object around arbitrary axis. Procedure: 1. Select the object. 2. Select Rot. 2. Select the axis for rotation, X, Y, or Z. 3. Highlight ObjAx (object based coordinate system) or unhighlight ObjAx (world based coordinate system). 3. Move the cursor into the world space to rotate the object. Options: x - move along x axis y - move along y axis z - move along z axis Note: The object can rotate around only one axis at a time. The left button rotates at regular speed, the right button rotates slowly for fine adjustments. This operation performs differently in object based coordinate system and in world based coordinate system. most of the time object coordinate system will be preferred. SCALE Purpose: To change the size or shape of the object. Procedure: 1. Select the object. 2. Select Scale. 2. Select a combination of axes, X, Y, or Z. 3. Highlight ObjAx (object based coordinate system) or unhighlight ObjAx (world based coordinate system). 3. Move the cursor into the world space and press left mouse button to scale the object. Options: x - move along x axis y - move along y axis z - move along z axis Note: Scaling in the world space will shear the shape of an object (deform it) unless it is aligned with the world axes. Scaling in object space preserved the perpendicularity of local dimensional axes. 4bc. VIEWS Caligari supports both Perspective and Orthogonal projections. In both cases it provides real time response and the interface is identical. PERSPECTIVE VIEW is most natural for the user because it closely resembles the world as we see it in everyday life. A characteristic property of perspective projection is that objects appear smaller as they get further from the viewpoint. ORTHOGONAL VIEW does not perform perspective division, consequently objects doe not change size when they move further from the eyepoint. This view is good for very precise positioning of objects. There are three orthogonal views: Top, Left and Front. Caligari automatically disables operations which can not be perceived properly in a two dimensional orthogonal view. For example when looking from above at the scene (Top view) up and down motion of objects (z axis) is disabled. TOP Purpose: To display the world from above (in X-Y plane). Procedure: 1. Make sure you are not in top view. 2. Select the top gadget from the navigational menu. 3. Immediately, the world will be shown from above. Note: In top view EnCir and P/T are disabled. Also Trans Z is disabled. Top view (together with other orthogonal views) is well suited for highly precise positioning of design elements. This can be accomplished by zooming close to the current object and doing fine adjustments for rotation and translation of the object. LEFT Purpose: To display the world from the left side (in Z-Y plane) Procedure: 1. Make sure you are not if left side view. 2. Select the Left gadget from the navigational menu. 3. Immediately, the world will be shown from the left. Note: In Left view EnCir and P/T are disabled. Also Trans X is disabled. Left view (together with other orthogonal views) is well suited for highly precise positioning of design elements. This can be accomplished by zooming close to the current object and doing fine adjustments for roataion and translation of the object. FRONT Purpose: To display the world from front (in X-Z plane). Procedure: 1. Make sure you are not in front view. 2. Select the Front gadget from the navigational menu. 3. Immediately, the world will be shown from the front. Note: In front view EnCir and P/T are disabled. Also Trans Y is disabled. Front view (together with other orthogonal views) is well suited for highly precise positioning of design elements. This can be accomplished by zooming close to the current object and doing fine adjustments for rotation and translation of the object. 4bd. ERASE Purpose: To erase the currently selected (highlighted) object. Procedure: 1. Select the object to be erased. 2. Select the erase function. The object is erased. Note: Erase removes an object without prompting for confirmation and the erased object can not be retrieved. Erase only works on complete objects, i.e. a subobject can not be erased. Erase only removes objects from the workspace. Previously saved objects on the disk are still available. UNDO Purpose: To undo the previously executed function. Procedure: 1. After incorrectly editing or altering the dimensions of an object, select the Undo function. 2. Immediately the last change to the world will be undone. Note: The undoable operations are Pick, Trans, Rot, Scale, Move, EnCir, P/T and Zoom Only the last performed action can be undone. The last undo can also be undone. 4c. STATUS When Status is selected from the Base menu a new menu strip will place itself just above the existing menu bars and will display and dynamically update the following information: Current obj - The name of the currently selected object will be displayed in this field. If a subobject is selected, the name of the subobject will be properly displayed. RTime - Time necessary to render current object. Time is displayed in the sixtieths of a second. X, Y, Z - Coordinates of current object in the worldspace. When object is moved, the coordinates are dynamically updated. Mem - Amount of available memory. Eye X, Y, X - Coordinates of the current viewpoint position. Bank - Rotation of the eye in the screen space. (0 = horizontal) Status menu is particularly useful for animation purposes because it gives an exact numerical location of both objects and the viewpoint. 4d. TOOLS In the navigation menu the objects can be positioned and shaped using Trans, Rot and Scale. Tool menu on the other hand offers a selection of tools to create complex objects out of simpler ones. The Tool menu works in conjunction with the navigational menu. It simply stacks itself above any existing menus. Glue/Unglue is a basic tool for combining simpler objects together. For example several polyhedra can be combined together to form an arm. Two arms can then be consequently glued to the torso of the robot. Caligari remembers exactly how the structure of a complex object (such as a robot) was created. This provides the basis for hierarchical manipulation of complex objects. The Extruder is actually a collection of very powerful tools. With it, the user can draw any 2D shape by hand and sweep it through 3D space to create a 3D object. Copy replicates objects. Note that the new copy of the object is in the same location as the old copy of the object. The user must translate, scale or rotate the new copy of the object, before the new and old copies of the object will appear distinct. 4da. Glue Purpose: To glue one object to another object. Any number of objects may be glued together but they must be glued together one at a time. Procedure: 1. Use the pick function to select one of the objects to be glued together. The object appears highlighted. 2. If the glue option does not appear on the menu, select the Tools function and it appears. 3. Select Glue from the tools menu. The rest of the Tools menu disappears. 4. Select a second object to glue to the first object. Both objects now appear highlighted and now they are combined into one object. The Tools menu reappears. Note: The order in which the objects are glued together is remembered for hierarchical access. See also, "ObjAx". Unglue Purpose: To separate two objects previously glued together. Procedure: 1. If Unglue does not appear on the menu, select the Tools function and it appears. 2. Select an object which is composed of several glued objects. 4. Using Pick and Down arrow select the subobject to be separated from the main object. It is highlighted in bluish hue. The rest of the complex object is orange. 3. Select Unglue from the menu. The subobject is highlighted in white, while the rest of the complex object has background color. The highlighted subobject is a separate object now. Comments: The Unglue command is available only in the Object Design module. Its main use is reuse of previously designed parts in new constructs. This enables rapid creation of new designs out of the old ones. The top subobject in a complex object can not be unglued. Copy Purpose: To create a replica of an object. Procedure: 1. If Copy does not appear on the menu, select the Tools function and it appears. 2. Select an object. 3. Select Copy from Tools menu. 4. Newly created object occupies the same space as original. Note: Since a copy of the object occupies the same space as original, it is a good idea to move it a bit to see that there are actually two objects. 4dc. EXTRUDER The Extruder enables the user to draw any 2D shape by hand and sweep it through 3D space to create a 3D object. Upon entering the extruder the screen presents a 2D grid. The user can draw the shape immediately simply by rubberbanding a line segment and depressing left button to create a new point. If grid is selected, new points will be placed only on the intersections of the background grid. The size of this grid can be set in "Settings". The bottom of the menu continuously displays the xy coordinates of the cursor. A new point can also be entered numerically by selecting the X or Y gadget and typing the coordinates from the keyboard. This is useful for entering shapes from blueprints with precise, known coordinates. Undo will remove the last active line segment from the drawn curve, so an error can be easily corrected. When the shape is finished, the "Close Poly" gadget must be selected. This automatically closes the polygon by connecting the first and the last point. Caligari will not allow for creation of self itnersecting polygons and checks for these continuously as the polygon is drawn. After closing the polygon, several new options appear on the menu. User can save the created polygonal shape, draw a hole inside the polygon, set the polygons center, edit the polygon, or sweep it in a 3D surface of revolution. Fonts can be quickly generated in extruder and saved as polygonal shapes rather than 3D object.s There are three options for 3D sweep: Extrude, Cone and Spin. Each operation can be affected by user selectable settings such as Orientation, Depth, Auto Sub, Reference and Mouse Grid, # Segments and Angle. Extrude Purpose: To give a thickness to a designed shape. Procedure: 1. Select Extruder from the Tool menu. 2. Draw or load a 2D shape. 3. Depress "Close Poly" gadget. If desired draw any number of holes inside the shape. 4. Specify the thickness, orientation and center of the shape. 5. Select Extrude. The program will return to the navigation menu with newly created 3D object highlighted. Note: The relevant settings are Orientation and Depth. There are no restrictions on number of lines in the shape or the number of holes inside the shape. Selecting the "Close Poly" gadget will return a "Polygon Invalid" message if the first and last points can not be connected without intersecting some other polygon edge. Use the Undo to modify the polygon until it can be closed. Cone Purpose: To extrude a pyramidal polyhedron with a cross section matching the designed shape. Procedure: 1. Select Extruder from the Tool menu. 2. Draw or load a 2D shape. 3. Select the "Close Poly" gadget. If desired draw any number of holes inside the shape. 4. Specify thickness, orientation and center of the shape. 5. Select Cone. Program will return to the navigation menu with the newly created 3D object highlighted. Note: The relevant settings are Orientation, Depth and Poly Center. There are no restrictions on number of lines in the shape or number of holes inside the shape. Selecting the "Close Poly" gadget will return a "Polygon invalid" message if the first and last points can not be connected without intersecting some other polygon edge. Use Undo to modify the polygon until it can be closed. Spin Purpose: To rotate designed shape around any edge or specified axis. Procedure: 1. Select Extruder from the Tool menu. 2. Draw or load a 2D shape. 3. Select Spin from the Extruder menu. 4. Select an edge of the polygon or draw a line for the rotational axis. 5. Specify # segments and Angle for rotation or use the default values. 6. Select Go. The program will return to the navigation menu with the newly created 3D object highlighted. Note: The relevant settings are orientation and depth. There are no restrictions on the number of lines in the shape or number of holes inside the shape. If 360 degrees or more of rotational angle is specified, holes inside the polygon will be eliminated. If a line is drawn for rotational axis, it must not intersect the polygon. Selecting the "Close Poly" gadget will return a "Polygon invalid" message if the first and last points can not be connected without intersecting some other polygon edge. Use Undo to modify the polygon unit it can be closed. Load Poly Purpose: To load pre-saved shape into the extruder. Procedure: 1. Select Extruder from the Tool menu. 2. Select "Load Poly" from the Extruder menu. 3. From the menu of available shapes select one and press "Load". 4. The selected shape appears in the extruder for further manipulation. Note: Fonts should be saved as 2D polygons. A 3D word can be very quickly assembled by loading the letters into the extruder and specifying desired thickness. Saved Poly Purpose: To save a shape just drawn. Procedure: 1. Select Extruder from the Tool menu. 2. Draw or load a 2D shape. 3. Select "Save Poly". Type a name for the current shape and press "Save". Note: It would make sense to save a whole font as a series of 2D shapes for later use. Also maps should be saved in this form. Poly Center Purpose: To set the center of an object's coordinate system. Procedure: 1. Select Extruder from the Tool menu. 2. Draw or load a 2D shape. 3. Select "Poly Center". Position the large crosshair cursor and depress left button. Note: If you rotate an object, it will rotate around the center of its coordinate system. Config Settings Purpose: To adjust the extruder grids. Procedure: 1. Select Extruder from the Tools menu. 2. Select Settings from the Extruder menu. 3. Set Mouse or Reference grid size from the keyboard or grid X or Y Scales. 4. Select Use or Save. The program will return to the Extruder manu with the new configuration settings. Note: If "Grid X Scale" or "Grid Y Scale" are selected the extruder will display horizontal and vertical rules for drawing. While reference grid provides visual help it is the mouse grid which actually specifies where the polygon vertex can be placed. Mouse and reference grid do not have to have the same values. Extrude Settings Purpose: To adjust the extrude settings. Procedure: 1. Select Settings from the Extruder menu. 2. Select Extrude from the Settings menu. 3. Set Orientation, Depth or Auto Sub. 4. Select Use or Save. The program will return to the Extruder menu with the new Extrude settings. Note: "Auto Sub", if selected, will display the settings automatically each time when extrude operation is selected. orientation specifies how the object will appear in the world. Cone Settings Purpose: To adjust the cone settings. Procedure: 1. Select Settings from the Extruder menu. 2. Select Cone from the Settings menu. 3. Set Orientation, Depth or Auto Sub. 4. Select Use or Save. The program will return to the Extruder menu with the new Cone settings. Note: "Auto Sub", if selected, will dispaly the settings automatically each time when cone operation is selected. Spin Settings Purpose: To adjust Spin settings. Procedure: 1. Select Settings from the Extruder menu. 2. Selece Spin from the Settings menu. 3. Set Orientation, # Segments, Total Angle or Auto Sub. 4. Select Use or Save. The program will return to the Extruder menu with the new Spin settings. Note: "Auto Sub", if selected, will display the settings automatically each time when spin operation is selected. If # segments is high, object will appear to have smoother surface but the rendering time will be longer. This will particularly effect the first time the object is rendered as a solid due to the algorithm Caligari uses for solid view (BSP tree). 4e. LOAD The Load menu is accessible from the Base menu. When selected, it replaces the current menus but leaves the workspace untouched. The purpose of the Load menu is to display objects available in the current scene for loading into the workspace. The Load menu can display the names of up to 55 objects simultaneously in five columns of eleven rows each. If the current scene contains more objects, the user can scroll the menu horizontally using the arrows on the sides of the displayed object names. The selection of objects from the menu is simple. Place the cursor in the area where the name of the object you wish to select is displayed and depress the left mouse button. The object under the cursor will be highlighted. Now move the cursor around and as it moves the object names under the cursor are dynamically highlighted. Release the button and newly selected object appears in the bottom line next to Load gadget. Selecting Load will load the highlighted object under a different name. To do this select the "AS" field (next to "Load" fiedl) and type in the name under which the object will appear in the workspace. For example, you can load object "ROBOT" as "ROBBY" first time and as "ROBBIE" second time so you will be able to explicitly recognize one robots from the other. If an object is loaded into the workspace several times without using the "AS" option, Caligari automatically assigns a different name to each new instance of an object. This is done simply by placing an exclamation point after the name, followed by a number (for example ROBOT!2). If a new object is created (in the extruder module or from primitives), Caligari assigns it a default name, optionally followed by number. The default name is "NoName". The user can change this default name when the object is saved. Caligari provides an easy way to exchange objects between different scenes. Using the "Set Path" command you can load objects into the current scene from other scenes residing in the same directory, a different directory or even a different disk. Selecting "Set Path" will bring up standard file requester displaying the content of the current directory. A new Scene File or a directory (marked D) can be selected, enabling the user to brouse through the disks and open any Scene. After the scene has been selected, "Set Load Path" will display collection of objects to be loaded from it into the current scene. Note that current scene itself can only be changed from the main menu (Load Workspece option). If the AutoExit gadget has been selected, the Caligari automatically exits the Load menu, after the object is loaded into the workspace. 4f. SAVE The Save menu displays the names of all the objects currently in the workspace, including those just created. Any of the objects can be saved into the current scene. The Save menu is similar to the Load menu. Caligari only saves objects into the current scene, so the Save menu does not have an option for changing the name of the scene or the path. The "AS" option allows renaming of objects prior to actual saving. If the "AS" option is not specified the object will be saved under its current or default name. If an object with the specified name already exist in the database, Caligari displays a new menu allowing the user to change the name under which the object is saved, or overwrite the existing object in the database with the new one. 4g. PRIMITIVES Primitives are the basic 3D objects available for instant loading into the workspace. Because the primitives are used so often, they are represented by their visual icons rather than by names. The primitives menu is similar in many ways to the Load menu, but there are a few differences. In addition to the Load gadget which the user selects to confirm the choice, there is also an Autoload option which loads the selected primitive immediately after releasing the left mouse button. This option is a default to speed up loading of primitives. Primitives are displayed on the menu in three rows with nine elements each. When selected, a primitive appears in the workspace in its normalized position, i.e. (0,0,0) in the worldspace and with the objects local axes aligned with the world axes. Even though number of primitives is small, they are very powerful building blocks for designing a variety of complex shapes. For example a Cube can be stretched to represent a table top or squeezed to represent one leg of that table. Gluing primities together creates a variety of design options. 4h. RENDER At any time in Object Design, a solid rendering of the currently active object can be obtained by selecting Render from the Base menu. When an object is rendered for the first time, Caligari needs to do extra computations to create the data necessary for solid rendering. After that, however, the user can switch between solid rendering and wireframe representation quite quickly. In Render mode all menus are eliminated to provide unimpaired viewing of the object. You can exit this view by doubleclicking the right button on the mouse. This will bring up four gadgets on the bottom of the Render mode: Print Image, Save Image, Color and Exit Render. Using these functions, the user can now print the image on the printer, save it as an IFF file, change the color of the object or return to wireframe mode. Solid view in object design is primarily intended to give the user better understanding of the geometry of the object. As such it only has one fixed light source and provides for only diffuse shading. unlike in the scene module, the user can only shade one object (selected) at the time. Scene module of course provides for multiple lightsources and diffuse as well as specular shading of all objects. Print Image Purpose: To obtain hard copy of the current image. Procedure: 1. Select Render from the Navigation menu. 2. Double click the right mouse button after Image is rendered. 3. Select Print imagge and your image will be printed on the printer currently selected in Preferenced. Note: Make sure that you set correct printer driver from the Preference menu and that your printer is connected to the computer and turned on. Save Image Purpose: To save an image in IFF format. Procedure: 1. Selecte "Render" from the Navigation menu. 2. Double click the right mouse button after image is rendered. 3. Select "Save Image". 4. Select "Name" and "Drawer" for the image to be saved in. Select the "Save as IFF File" gadget. Note: Caligari can save images in high or low resolution including overscan options. An IFF image can be manipulated in variety of programs such as Deluxe Paint II, etc. 4ha. COLOR The Color menu enables the user to interactively assign a color attribute to an object, as well as to change its visual appearance on the screen. These are two distinct phenomena. Color attributes are represented by several horizontal color bands (palettes) just above the color menu (default number is three plus background and color of the light). A color attribute can be assigned to an object or subobject by selecting the "Set To" gadget from the color menu. The currently active color attribute (palette) is assigned to the selected object. Double clicking on the "Set To" gadget will also immediately rerender the selected object or subobject. Just as in wireframe, the user can select any subobject ty selecting up or down (/\, \/) with the Pick option. Once the subobject is selected, the rest of the object is shaded out, highlighting the subobject the user is coloring. The visual appearance of the object on the screen can be modified by namipulating the color palettes. The leftmoust represents the color of the background, second from the left is the color of the highlights (color attribute 0). Third band, fourth band and consecutive bands represent in shaded gradation the appearance of first, second, and consecutive color attributes. The color range of each palette can be changed with the three horizontal sliders on the left side of color menu. The top slider changes the color (hue), the middle slider color purity (saturation) and bottom slider changes the intensity (value) of the palette. The number of palettes (color attributes) can be changed using "+ col" and "- col" gadgets. The active palette can be selected by positioning the cursor on top of it and clicking the left mouse button. Clicking the right mouse button on top of palette and moving the mouse will change the number of shades in the palette. If the user increases number of shades on any paletter (for smoother appearing objects colored in this attribute) the number of shades in the other palettes is automatically reduced. Also, if too many palettes are added, each of them will have only a few shades. Thus, the user can trade number of color attributes (palettes) for smoothness of shading. The appearance of each attribute will be generally different in object and scene design (and in different scenes), color attribute number, however is permanently assigned. you can think of it as a "material" the object is made of. For example, if in object design the car wheels have assigned attribute one and car body attribute two, then these materials never change. However if we have two copies of the same car in the scene design, then one body can be rad and other green (material appearance). Since all the wheels are of the same material (one) then it can not happen that one wheel of a car would have a different color from another wheel on the same car. 4l. ETC ETC is a submenu of the navigation menu which enables the user to enter data numerically, and also contains 3D grids and other utility functions. When selected it replaces current menu configuration with its own menu display. From left to right the menu is structured into five distinct groups: Settings, EYE, OBJ, GRID and various utility functions. This menu is identical in Object Design and in Scene Composition. Caligari tries to deemphasize numerical entry of data. It is very important, particularly in conceptual stage of design to maintain real time feedback between the hand and the eye, which is impossible when using keyboard entry. However, there are a number of cases, where the ability to enter precise numerical date (perhaps from existing blueprint) will enhance the functionailty of the software. Settings Cube This is a treshold for switching between the full representation of the object and its bounding cube. It is set in sixtieths of a second, so default setting of 12 sixtieths is equivalent to five frames per second. If an object can not be updated five times per second then only its bounding cube will be shown. This forms the basis of the real time response of Calligari. The user can set this threshold to lower values (object will be replaced with bounding cube sooner - resulting in smoother interaction) or higher values (object will change into bounding cube later resulting in jerkier motion of full object). This can be particularly useful if the user has a faster processor in his computer. Rulers These are dynamic rulers which are displayed horizontally (X) or vertically (Y) on the screen. Reulers help the user to orient himself in the design space and position objects with higher degree of precision. As the user moves in design environment the rulers dynamically update. Both rulers are available in top view, X ruler is available in left or front view and no rulers are available in the perspective view. EYE Move Purpose: To numerically enter the X, Y, and Z coordinates to move the eye. Procedure: 1. Select the ETC gadget from the Navigation menu. 2. Select Move from the EYE group. 3. Enter X, Y, and Z values from the keyboard. 4. Select Loc and/or Abs (optional) and then select GO. Options: Abs - If selected, interpret the numerical entry in absolute coordinates. Loc - If selected, interpret the numerical entry in local coordinates. EYE EnCir Purpose: To numerically enter the X, Y, and Z angles with which to encircle the eye around the selected object. Procedure: 1. Select the ETC gadget from the Navigation menu. 2. Select Encir from the EYE group. 3. Enter X, Y, and Z angles from the keyboard. 4. Select Abs (options) and then select GO. Options: Abs - If selected, interpret the numerical entry in absolute coordinates. Loc - If selected, interpret the numerical entry in local coordinates. Note: Encircle can not be performed in World coordinates. EYE PTilt Purpose: To numerically enter the X, Y, and Z angles to pan or tilt the eye. Procedure: 1. Select the ETC gadget from the navigation menu. 2. Select PTilt from the EYE group. 3. Enter X, Y, and Z angles from the keyboard. 4. Select Abs (optional) and then select GO. Options: Abs - If selected, interpret the numerical entry in absolute coordinates. Loc - If selected, interpret the numerical entry in local coordinates. Note: Pan and tilt can not be performed in World coordinates. OBJ Trans Purpose: To position the object numerically using X, Y, and Z coordinates. Procedure: 1. Select the ETC gadget from the navigation menu. 2. Select Trans from the OBJ group. 3. Enter X, Y, and Z units from the keyboard. 4. Select Loc and/or Abs (options) and then select GO. Options: Abs - If selected, interpret the numerical entry in absolute coordinates. Loc - If selected, interpret the numerical entry in local coordinates. OBJ Rot Purpose: To rotate the object numerically using X, Y, and Z coordinates. Procedure: 1. Select the ETC gadget from the navigation menu. 2. Select Rot from the OBJ group. 3. Enter X, Y, and Z, rotational angles from the keyboard. 4. Select Loc and/or Abs (optional) and then select GO. Options: Abs - If selected, interpret the numerical entry in absolute coordinates. Loc - If selected, interpret the numerical entry in local coordinates. OBJ Scale Purpose: To scale the object numerically using X, Y, and Z coordinates. Procedure: 1. Select the ETC gadget from the navigation menu. 2. Select Scale from the OBJ group. 3. Enter X, Y, and Z scaling values from the keyboard. 4. Select Loc (optional) and then select GO. Options: Loc - If selected this will interpret the numerical entry in local coordinates. Otherwise the entry will be interpreted in world coordinates. Note: Object can not be scaled absolutely. GRID Trans Purpose: To define step increment for translation of an object. Procedure: 1. Select the ETC gadget from the Navigation menu. 2. Select Trans from the Grid group. 3. Enter X, Y, and Z increment values from the keyboard or use default values. 4. Select Save or Use and then select ON. Note: Grid can be turned on selectively with free motion in one or more axes and step motion in the other axes. Translation grid is a very powerful tool which permits creation of large regular structures in a matter of seconds. GRID Rot Purpose: To define step increment for rotation of an object. Procedure: 1. Select the ETC gadget from the Navigation menu. 2. Select Rot from the Grid group. 3. Enter X, Y, and Z angular increments from the keyboard or use default values. 4. Select Save or Use and then select ON. Note: Grid can be turned on selectively with free motion in one or more axes and step motion in the other axes. Rotational grid enables fast rotation of an object in regular increments (45-90 degrees). GRID Scale Purpose: To define step increment for object scaling. Procedure: 1. Select the ETC gadget from the Navigation menu. 2. Select Scale from the Grid group. 3. Enter X, Y, and Z increment values from the keyboard. 4. Select Save or Use and then select ON. Note: Grid can be turned on selectively with free motion in one or more axes and step motion in the other axes. GRID Rot Purpose: To define step increment for rotation of an object. Procedure: 1. Select the ETC gadget from the Navigation menu. 2. Select Rot from the Grid group. 3. Enter X, Y, and Z increment values from the keyboard or use default values. 4. Select Save or Use and then select ON. Note: Grid can be turned on selectively with free motion in one or more axes and step motion in the other axes. Rotational grid enables fast rotation of an object in regular increments (45-90 degrees). Utility Functions Purpose: This gadget will align the object's axes with world axes. Center: This gadget will position the object at (0, 0, 0) in world coordinates. Find: This gadget will position the eye so that the current object will appear in the center of the screen (handy for lost objects). Level: This gadget will align the eye horizontally. 5. SCENE COMPOSITION The Scene Composition module enables the user to build a complex scene out of the objects created (and saved) in Object Design module. It also provides for assigning the surface properties to the objects and lighting the scene with multiple light sources. Caligari enters the Scene Composition module with the Base menu and Navigation menu present. The workspace is viewed in perspective with the Encircle (EnCir) function active and the X-Y coordinate axes selected, much like Object Design, unless a different configuration of the scene had been explicitly set. The selection of a function is indicated by an amber highlight of that function. In the Scene Composition module the objects can not be modified but they may be moved, rotated and scaled. Hierarchical access is disabled in this module. If the user wants to edit an object, he must return to the object module to do so. In order to fully utilize the Scene module it is important to realize that when an object is loaded, unlike in object design it does not explicitly load its geometrical data, instead it only has a pointer to it. Also each object has data for appearance attributes and matrix for placement in the world, rotation and scale. Thus, if several copies of the same car are loaded into the scene, each can have its own color, placement (translation), rotation and scale, but they all share the same set of vertices and polyhedra hierarchy. This has two advantages: memory is preserved, so a very complex scene (using many instances of the same object with different scale and rotation factors) can be built, and secondly time is saved since the compilation process performed on geometrical data for first time solid view rendering is performed only once for all instances of the object. On the other hand if several instances of the same object are loaded in the scene and original object is modified, then upon entering the scene all the instances will be modified too. If the user wants two robots in the scene and one has arm pointing up while the other has arm pointing down, two copies of the robot must be created in the object design and named differently. What all of this means for a design process is following: If you can, use the same object many times in the scene (a building colored, scaled and rotated to appear as several different buildings). Also it makes sense to use smaller objects since the compilation time is much shorter for smaller objects. 5a. BASE MENU The Base menu is always present on the bottom of the screen both in Object Design and Scene Composition. It can be made invisible (along with other menus) by selecting its close gadget. It can be made visible again by clicking the mouse with the cursor positioned all the way at the top of the screen. The arrangement of gadgets in the base menu is slightly different from the Object Design: NAV STATUS TOOLS LOAD SAVE RENDER OBJDES MAIN These are the major functional blocks in Caligari. When selected, some of them activate additional menu strips, some replace existing menus, and some open completely new screend. NAV - Navigation is central part of Caligari's interface. it enables the user move in 3D environment and manipulate objects in it. STATUS - Displays numerical data about current scene. TOOLS - Contains SCRIPT, LIGHTS and COPY functions. LOAD - Displays a menu for loading objects into the current scene. SAVE - Permits saving the current scene under a user selected name. RENDER - Displays the current scene in solid view (in color). OBJDES - Exits the Scene Composition module and enters Objecet Design. MAIN - Exits Scene Composition into the Main menu. Both Navigation and Status menus are identical to Object Design. The Tools menu, however, is different. 5b. TOOLS The Tools menu works in conjunction with the Navigation menu. It simply stacks itself above existing menus. There are three tools available: Script, Lights and Copy. Script will be explained thoroughly in the next chapter. Let us look now at the other two. Copy Purpose: To create a replica of an object. Procedure: 1. Select an object. 2. Select Copy from tools menu. 3. The newly created object occupies the same space as original. Note: Since copy of the object occupies the same space as original it is good idea to move it a bit to see that there are actually two objects. Copy operation in Scene is actually slightly different from that in Object Design. It does not create separate data for each new object, rather it points to original object stored in the database and it creates only visual instance of new object (new translation, rotation, scale, color, etc.). This saves a lot of memory, particularly if you create a large scene with many objects. 5ba. Lights The purpose of this tool is to enable the user to place several light sources in the designated scene to create desired lighting for solid view of the scene. Caligari allows for unlimited number of light sources, however since it produces flat (faceted) shading, actual number of lights should not be too high since too many lights would simply cancel each other. Another thing to remember is that even the smallest and most ambient light will produce specular highlight on a specular object. Too many highlights will not look realistic on a flat shaded object. On the other hand, clever use of lights together with specular objects can produce very attractive looking scenes, particularly in motion. Procedure: 1. Select Lights from tools menu. 2. Set x, y, z intensity. SoftSize of the current light. 3. Press ">" to change settings for other lights. Use "Add Light" or "Delete" to change number of lights. 4. Select "Load Settings", "Exit Lights" and "Render" to see how the current light setting illuminates the scene. Note: Caligari provides for an unlimited number of lights in the scene. Each light can be assigned several attributes: Number - This simply numbers the lights for easy access. Position - This is a set of X, Y, and Z coordinates with full floating point precision. Intensity - This can be any number. Only relative intensities are meaningful since Caligari automatically compresses specified intensities into the available contrast of Amiga color space. Thus if there are two lights, relative intensities (1, 10) and (0.1,1) would produce the same lighting of the scene. SoftSize - 0 = point light source, all polygons not facing the light are completely dark. 1 = planar light source, only polygons facing exactly opposite direction from the light are completely dark. 1000 = ambient light, polygons in any direction are illuminated with the same intensity. 5c. Load Purpose: To load new objects into the current scene. Procedure: 1. Select Load from the Base menu. 2. Select an object, use "AS" option to rename it (optional), then select Load. 4. The newly loaded object appears in the scene. 5. Select Quit to get back to the Navigation menu. Note: The Load menu is similar to that of the one in Object Design. The user, however can not change the name of the scene or the path from this menu. To do this, the user must exit the scene and enter Main menu. From there a new scene can be loaded into the program. In Caligari each scene file contains all the objects saved in the scene environment. Save Purpose: To save the current scene. Procedure: 1. Select Save from the Base menu. 2. Set the path and the file in which the current scene should be saved. 3. Select Save. Caligari will save the scene and return to the Navigation menu. Note: Caligari prompts the user to save current scene every time the user wants to exit Scene Composition and the scene has been changed. In Caligari each scene file contains all the objects saved in the scene environment. 5d. RENDER At any time in Scene Composition a solid view of the scene can be obtained by selecting Render from the Base menu. Rendering capabilities in Scene Composition are more extensive than in the Object Design module. The key to impressive looking images is clever use of multiple lights, available palettes and diffuse and specular coefficients assigned to various objects. For example a sphere which has assigned red palette will look quite different rendered with low diffuse coefficient and specular highlight, then the same sphere rendered with high diffuse coefficient and without the specular highlight. When a scene is rendered first time, Caligari needs to do extra computations to create the data necessary for solid rendering of a scene. After that the user can switch between solid view and wireframe representation quite quickly. After the Render gadget is selected, the screen changes to solid view. All menus are eliminated to provide an unimpeded view of the object. You can exit this view by double clicking the right button on the mouse. This will bring up five gadgets on the bottom of the solid view: Print Image, Save Image, Color, Setup and Exit Render. The user can not print the image on the printer, save it as an IFF file, change the color of objects, change the resolution or exit back to wireframe view. Print Image Purpose: To obtain hard copy of the current image. Procedure: 1. Select Render from the Navigation menu. 2. Double click the right mouse button after the image is rendered. 3. Select Print image and your image will be printed on the printer currently selected in Preferences. Note: Works identically in the scene and object design. Save Image Purpose: To save an image in IFF format. Procedure: 1. Select Render from the Navigation menu. 2. Double click the right mouse button after the image is rendered. 3. Select Save Image. 4. Select Name and Drawer for the image to be saved in. Select "Save as IFF File" gadget. Note: Caligari can save images in low or high resolution including overscan options. An IFF image can be manipulated in variety of programs such as Deluxe Paint II etx. Works identically in the scene and object design. 5da. COLOR Color attributes are assigned to each object in Object Design module. In Scene Composition, the color attributes can not be changed. Their appearance however, is fully controllable from the scene. For example a car will have assigned color attribute one for the wheels and color attribute two for the body in the Object Design. In Scene module the user can load the same car under three different names. Then he can set the appearance of color attribute one to gray and color attribute two to light blue for car. After that he can set the color attribute two to dark red for car2 and shiny blue for car3. Thus, all the cars will have grey wheels but one will have light blue body, the second will have dark red body and the third car's body will be blue and shiny. There are three appearance attributes that can be assigned to each color attribute for selected object: hue (Color), intensity (Diffuseness) and shininess (Specularity). Hue can be assigned to the object simply by selecting one of the color bands (palettes). For selected hue, intensity and shininess can be specified with horizontal sliders for diffuseness and Specularity. Just like in Object Design the number of palettes as well as distribution of number of shades for each can be easily changed. In addition hue, saturation and value sliders allow the user to achieve harmonious color scheme for the scene. All of these settings are part of the scene and are saved together with it. Color Purpose: To set hue, intensity and shininess to a color attribute of an object. Procedure: 1. Select Color after double clicking in solid view. 2. Select an object from the scene. The rest of the scene is shaded out. 3. Select material # (color attribute) of current object to be changed by typing from the keyboard. 4. Set Diffuse and specular coefficients. Select active hue fromthe palettes above the menu. 5. Depress the "Set Material" gadget to assign new values to the attribute. If you double click on the gadget, the object will also be rerendered. Note: Alll the palette functions are also available. You can increase the number of colors, and change the hue, saturation, and value of any color (palette) interactively. It is important to remember how many color attributes were assigned to an object in Object Design. Only these attributes can be manipulated in the scene module. Setup Purpose: To change the resolution of the solid view display. Procedure: 1. Select Setup after double clicking in solid view. 2. Select Hires/Lores and/or UnderScan/OverScan options. 3. Select Render to see the scene rerendered with new resolution values. Options: Hires/Lores switches between high and low resolution. In the lower resolution more colors are available. UnderScan/OverScan switches between 736x482 (Overscan) and 600x400 (UnderScan) in high resolution and 362x482 (Overscan) and 320x400 (UnderScan) in low resolution. Rendering process is somewhat faster in Underscan. 6. SCRIPT After the user builds the scene and assigns lights and colors to it, he or she can write a script to animate the scene. While the script itself has to be written outside of Caligari in a word processor, it can be compiled, debugged, previewed in real time and finally output to videotape, all interactively, from inside Caligari. The script can be written on any Amiga text editor. each line of the script contains one animation command. Typically, the script will consist of a few "paragraphs" - blocks of commands, each starting with a GO command followed by set of commands to be executed in particular frame range (as defined by the previous GO). After the script is written, named and saved, it can be loaded into Caligari. Following simple script will create two seconds of animation. In this script car will be translated relatively from its current position 50 units along the Y axis (perhaps along the street) and base will be rotated 360 degrees. While this is happening camera closes up on the scene. GO 60 MOVE car 0 50 0 ROTATE base 0 0 360 MOVE EYE 0 0 100 Typically, the user will first write the sdript, then he will compile it and preview it. Visual feedback will enable the user to edit the script again, compile it and preview it again. After few Edit, Compile and Preview cycles the script will be ready for final full color rendering onto videotape. The Caligari script animation is case insensitive to commands and to the EYE, but it is case sensitive to the names of objects. The semi-color ";" may be used anywhere on a script line to indicate that the remainder of the line is a comment or is to be ignored. Blank lines are also ignored. Caligari executes a "GO 1" command automatically at the beginning of each script. At the end of each script a "PURGE" command is also automatically executed. Compile Purpose: To prepare the script for real time preview. Procedure: 1. Select Script from the Tools menu in the scene. 2. Enter the name of your script (using the keyboard) on the bottom line in script menu. 3. Enter a path (if script is not in the current directory). 4. Select Compile. 5. The script will be rendered in wireframe on a frame by frame basis. After the last frame is drawn, the script is ready for real time preview. Note: Acutal rendering of the script during the compilation process is substantially slower than in preview (non-real time). Preview Purpose: To see the script choreography in real time. Procedure: 1. Select Script from the Tools menu in the scene and compile it. 2. Select Preview. 3. Script will be rendered in wireframe in real time to enable the user see the actual motion of animated objects. Note: Real time in video means 30 frames/sec. Caligari's preview will typically be less than that, particularly on large scenes. It is advisable to use the "Rate" command in a script to render only every fifth (or tenth) frame of the script for preview. Also for preview very complex objects can be temporarily replaced with a simpler representation of the same object. Debug Purpose: To find syntactic errors in the script. Procedure: 1. Select Script from the Tools menu in the scene. 2. Enter the name of your script (using the keyboard) on the bottom line in script menu. 3. Enter a path (if script is not in the current directory). 4. Select Debug. 5. Caligari will display each command as it parses it. If an error is found, the user is notified with an error message. Render Purpose: To render the frames of the script in full color and save them onto videotape. Procedure: 1. Select Script from the Tools menu in the scene. 2. Enter the name of your script (using the keyboard) on the bottom line in script menu. 3. Enter a path (if script is not in the current directory). 4. Turn on and activate the VTR and the Single Frame Controller. Make sure all calbes are properly connected. 4. Select Render. 5. Script will be rendered in full color and recorded to the VTR using SMPTE or Microlock time code. Note: Cabling may differ for different VTR's and Single Frame Controllers. See instructions for your controller for details. 6a. SCRIPT SYNTAX Move Purpose: To move an object or eye relative to its current position. Syntax: MOVE {object | EYE } x y z [t] Options: Object - name of the object to be translated EYE - eye will be translated x, y, z - spatial increments to be added to current position. t - number of frames (optional) Example: MOVE car 0 100 0 20 MOVE EYE 20 30 10 Description: The Move command will translate the specified object or the eye relative to its current position over the number of frames specified in the "t" parameter. If the frame count is not specified, then the MOVE will e executed over number of frames specified in the preceding GO command. Amove Purpose: To move an object or the eye absolutely to a given point in space. Syntax: AMOVE {object | EYE } x y z [t] Options: Object - name of the object to be translated EYE - eye will be translated x, y, z - world coordinates where the object or eye will be moved. t - number of frames (optional) Example: AMOVE car 110 100 0 AMOVE EYE 0 0 200 10 Description: Absolute move will translate the specified object or eye from its current position over the number of frames specified in the "t" parameter to the world coordinates specified. If the frame count is not specified, then AMOVE will be executed over the number of frames specified in the precediang GO command. Scale Purpose: To change the size of an object. Syntax: SCALE object x y z [t] Options: Object - name of the object to be translated x, y, z - size increments. t - number of frames (optional) Example: SCALE car 1 1 10 20 Description: Scale command will scale an object over a number of frames. If the frame count is not specified, then SCALE will be executed over the number of frames specified in the preceding GO command. Rotate Purpose: To rotate an object or eye relatively. Syntax: ROTATE {object | EYE } x y z [t] Options: Object - name of the object to be translated EYE - eye will be rotated x, y, z - angular increments for rotation. t - number of frames (optional) Example: ROTATE car 0 90 0 20 ROTATE EYE 720 0 0 Description: If more than 360 degree increment is specified, object will rotate around the specified axis maore than one time. If the frame count is not specified, then ROTATE will be executed over number of frames specified in the preceding GO command. Arotate Purpose: To rotate an object or eye around a specified axis. Syntax: AROTATE {ojbect | EYE } angle x1 y1 z2 y2 z2 [t] Options: object - name of the object to be rotated EYE - eye will be rotated x1, y1, z1 - first point defining the rotational axis t - number of frames (optional) Example: AROTATE car 360 0 90 0 20 Description: This command enables objects to orbit on arc in 3D space. If the frame count is not specified, then AROTATE will be executed over number of frames specified in the preceding GO command. Lookat Purpose: To enable the eye to follow an object. Syntax: LOOTAT object [t] Options: object - name of the object for eye to follow t - number of frames (optional) Example: LOOKAT car 20 Note: This command enables to steer the eye to follow an object. It is particularly useful with invisible objects. Visible Purpose: To make an object appear again. Syntax: VISIBLE object Options: object - name of the object to be made visible Example: VISIBLE car Description: Objects are visible as a default. VISIBLE command is useful for special effects. (See INVISIBLE). Invisible Purpose: To make an object disappear for part of the animation. Syntax: INVISIBLE object Options: Object - name of the object to be made visible Example: INVISIBLE car Description: A small tetrahydron can be made invisible and then LOOKAT command can guide the motion of an eye. Alternating visibility of objects under the script control can create interesting animation effects. (See VISIBLE). Pause Purpose: To do nothing for a few frames. Syntax: PAUSE t Options: t - number of frames Example: PAUSE 20 Description: Scene will stay unchanged for a number of frames. Skip Purpose: To speed up editing process by not previewing already finished parts of script. Syntax: SKIP t Options: t - number of frames Example: SKIP 45 Note: Program will execute all commands specified in the script but will not render frames affected by Skip command. GO Purpose: To execute next few frames of a script. Syntax: GO t Options: t - number of frames Example: GO 60 Note: GO works in prefix notation, i.e. It effects commands after its occurrence. Also, GO specifies the default number of frames for all subsequent commands with optional "t" parameters. Rate Purpose: To change overall speed of script execution. Syntax: RATE F Options: F - a floating point factor by which to scale time Example: RATE 2 Will create half as many frames for coarser but faster motion. RATE .5 Will create twice as many frames for finer and slower motion. Purge Purpose: To clear all ongoing actions in the script. Syntax: PURGE Description: This command will prevent all unexpired commands from executing. ; Purpose: To insert comments into the script. Example: MOVE EYE 0 0 10 ;end of first section ; Car starts to accelerate MOVE car 0 20 0 10 Note: Comments can be placed anywhere after the ";" symbol. Installation and backup of your Caligari distribution disk: You should make a backup of your distribution disk before doing anything else. Write-protect your disk, if it is not already write-protected, by moving the plastic slider near the disk label so that the little square hole is open. Turn on your Amiga, and insert your Caligari disk into the Amiga when it prompts you for a Workbench disk. When the Workbench is loaded, click once on the Caligari disk icon with the left mouse button. Now hold down the right mouse button, slide up to the "Workbench" menu title at the top left corner of the screen, and pull the menu down, releasing the right mouse button over the "Duplicate" menu item. Have ready a blank 3.5" disk which is not write-protected, and follow the system requests to insert the "To" and "From" disks. Place the Caligari distribution disk in a safe place away from heat, light and magnetic fields. You will need this disk for making new Caligari working disks in case errors develop on your working disks. You will also need to return this disk when requesting upgrades to new versions of Caligari. You should also backup your working disks frequently to prevent data loss due to deteriorating media, system crash, operator error, or software malfunction. The importance of backups cannot be overstressed. Do them regularly, whenever you have done more work than you would care to redo. Running Caligari on an Amiga 1000: Caligari is ready to run on the Amiga 1000 as distributed. You must have at least 1Mb of memory to run Caligari. Note, that Caligari runs quite well on a one drive system. if you wish to have the date and time of your files recorded correctly, use the Set-Date project in the System drawer to set the date. Make sure you are working with a copy of your Caligari disk, not the original disk. Running Caligari on an Amiga 500 or an Amiga 2000: The Caligari disk can easily be customized for better performance on a 500 or 2000. Make sure you are working with a copy of your Caligari distribution disk. Simply open the System drawer and double-click on the Boot-2000/500 project. This will change the Startup-Sequence file in the S directory (not visible from the Workbench), so that the date is set correctly, and so that Caligari uses the fastest memory in the system whenever possible. Note that you can revert to a 1000 boot sequence by double-clicking the Boot-1000 project. Amiga 500 owners should note that they will need at least 1 Mb of memory to run Caligari, but that Caligari will run quite nicely on a one drive system. Installing Caligari on a hard drive: Because of the large number of possible configurations, and because installation is largely a matter of personal preference, we have not yet attempted to provide a hard disk installation program for Caligari. It should be sufficient to copy Caligari and the Caldata drawer onto your hard drive, and add a line to your Startup-Sequence which such as: Assign CalDate: dh0:CalData If you experience any problems, use a text editor to examine the various versions of Startup-Sequence in the Caligari:S directory, and compare them with your Startup-Sequence. Also make sure that all the library files Caligari needs are in the logical directory LIBS: Because Caligari is still in the pre-release stage in its development, it is recommended that you save your scenes to RAM:, to floppy, or to a scratch partition on your hard drive. While we are making every effort to make Caligari reliable and stable, we recognize that bugs inevitably exist in early versions of software. Should an error occur while Caligari is writing a file, you mave have to reformat the medium before AmigaDos will recognize it. For this reason we do not recommend saving to heavily used hard disk partitions. Optimum performance can be achieved by saving the scenes to RAM:, and then copying the files to hard disk or floppy for archiving and backup.