NOTE: README. DUE TO THE FACT THAT THE IFF FILES THAT WAS WITH THE ORIGANAL RELEASE BY DUAL CREW SHINING CAME TO A TOTAL OF 3MEG+ CRUNCHED. SO IN ORDER TO DISPLAY ALL FILES I WOULD HAVE HAD TO RELEASE A 4 DISK LSD DOCS DISK. THEREFORE I HAVE OMITTED THE IFF GRAPHIC IN ORDER TO RELEASE THE REAL 3D V2.0 FULL DOCS ONTO ONE DISK..... HOWEVER, IF YOU ARE INTERESTED IN HAVING THE FULL 3MEGS+ OF IFF GRAPHICS, LEAVE MAIL FOR CYGNUS ON DIABOLICAL SABOTAGE. THANX TO DIRTYBRUSH FOR DOING A GREAT JOB ON THE REAL 3D V2.0 DOCS... CYGNUS REAL 3D V2 - FULL DOCS ---------------------- By: DIRTYBUSH (aka: SNUSKIS) of DUAL CREW SHINING (DCS) ------------------------------------------------------- PART 1 CONTENTS INTRODUCTION Chapter 1 FEATURES OF REAL 3D V.2 Chapter 2 INSTALLATION 2.1 HARDWARE REQUIREMENTS 2.2 INSTALLING THE SYSTEM Chapter 3 USING THE MANUAL 3.1 WELCOME TO THE WORLD OF REAL 3D V.2 3.2 SUGGESTED METHOD OF READING 3 2.1 All Users 3.2.2 As a New User 3.2.3 As a User with Previous 3D Graphics Experience 3 2.4 Real-1.X User 3.3 MAJOR DEVELOPMENTS SINCE v1.42 3 3.1 System Integration & Configurable Interface 3.3.2 Multi.Selection Support 3.3.2.1 Multi-selecting Objects 3.3.2.2 Multi-selecting Functions 3.3.3 Hierarchy 3 3.3.1 Animation System 3.3.3.2 Materials 3.3.3.3 Boolean Operations 3.3.3.4 Hierarchy References and Order 3.3.4 Freeform Curves and Surfaces 3.3.5 Built in Programming Language Chapter 4 GETTING STARTED 4.1 OPENING THE PROGRAM 4.2 FAMILIARIZE YOURSELF WITH THE MENUS & TOOLS 4.2 1 Menus 4 2.2 Tool Icons 4.2.3 Hot keys 4.2.4 Conclusion - CONTENTS 1.1 - 4.3 INTRODUCTION PROJECT 4.3.1 Loading the Project 4.3.2 Refreshing and Rendering 4.3.3 Animating 4.3.3.1 "Jump To/Play To" and the Time Slider 4.3.3.2 "Wireframe/Ray Trace" Gadget 4.3.4 Rendering Revisited 4.4 END OF THE BEGINNING TUTORIAL -------- Chapter 1 OBJECT CREATION & MODIFICATION 1.1 STARTING THE PROGRAM 1.2 THE WINDOWS 1.3 THE MOUSE 1.4 BASIC TERMINOLOGY 1.5 TUTORIAL EXAMPLE 1: SELECT WINDOWS AND HIERARCHY 1.5.1 The Current Level 1.5.2 Object Multiselection 1.6 TUTORIAL EXAMPLE 2: 3D MODELLING 1.7 MODIFYING 1.8 SAVING AND LOADING 1.9 VISIBLES 1.9.1 Polygon/Polyhedron/Polymids 1.9.2 Sector Visibles 1.10 COMPOUND TOOLS 1.10.1 Lathe 1.10.2 Tube tools 1.10.3 Rounded Polygons and Polyhedrons 1.10.4 Object-Pixel Tool - CONTENTS 1.2 - 1.11 LIGHTSOURCES 1.11.1 The Brightness of Light Sources 1.12 MACROS Chapter 2 THE ENVIRONMENT 2.1 ASYNCHRONOUS ACTION 2.2 SCREENS 2.3 VIEW WINDOWS 2.3.1 Projection Types 2.3.2 Input&Output Planes 2.3.3 View Coordinates & Cameras 2.3.4 booming and Positioning the View 2.4 WIREFRAME DRAWING SPEED 2.4.1 Bounding Boxes 2.4.2 Refresh Modes 2.4.3 The Visible Range of the Objects 2.4.4 Other Methods 2.5 THE MEASURING WINDOW 2.6 GRIDS 2.7 THE UNDO FUNCTION 2.7.1 Undo and Memory Management 2.8 VECTOR STACK Chapter 3 MATERIALS 3.1 USING MATERIALS 3.1.1 General Information 3.1.2 Tutorial Project 3.1.3 Optical Properties - CONTENTS 1.3 - 3.2 TEXTURE MAPPING 3.2.1 General Information 3.2.2 Textures 3.2.3 Texture Mapped Materials 3.2.4 Mappings 3.2.5 Sector Mappings 3.2.6 Spline Mapping 3.2.7 Index Format String 3.2.8 Animated Textures 3.3 ADVANCED MATERIAL FEATURES 3.3.1 Multiple Materials 3.3.2 Procedural Handlers 3.3.3 Nonhomogeneous Materials 3.3.4 Mappings and Hierarchy 3.3.5 Some Material Morphing Examples Chapter 4 MODELING 4.1 FREEFORM MODELLING AND POINT EDITING 4.1.1 Curves 4.1.1.1 Special Curve Shapes 4.1.1.2 Multiple Control Points 4.1.2 Selecting Points 4.1.3 Freeforms as Levels 4.1.4 Freeform Surfaces 4.1.4.1 Example: Creating a Simple Mesh 4.1.4.2 Coplanar Sweeping 4.1.4.3 Orthogonal Sweeping 4.1.4.4 Rotate - Creating a Wine Glass 4.1.4.5 Swinging 4.1.4.6 Cross-sectional Surface Construction 4.1.4.7 Mesh-Pixel Tool 4.1.5 Modifying Curves and Meshes 4.1.6 Bending Functions 4.1.7 Example: Creating a B-Spline Head 4.2 BOOLEAN OPERATIONS 4.2.1 Wireframes of Booleans 4.3 OBJECT ATTRIBUTES 4.3.1 Infinite Primitives - CONTENTS 1.4 - 4.4 SPECIAL FUNCTIONS 4.4.1 Use of Animation Methods for Creation 4.4.2 COG Modifications Chapter 5 RENDERING 5.1 LIGHTING SETTINGS 5.2 COLOR/IMAGE SETTINGS 5.3 RENDERING QUALITY SETTINGS 5.4 RAY TRACING QUALITY SETTINGS 5.5 RENDERING MODES 5.6 DITHERING 5.7 SPECIAL SETTINGS 5.8 HIERARCHY AND RENDERING 5.9 RENDERING A WIREFRAME PREVIEW OF AN ANIMATION 5.10 RENDERING AN ANIMATION 5.11 RENDERING TO A FILE 5.12 CONTINUING A CANCELLED RENDERING PROCESS 5.13 RENDERING TO AN EXTERNAL SCREEN 5.13.1 Rendering an Animation Using External Screen 5.13.2 External Screen Aspect Ratio 5.13.3 Other Information 5.14 BOXES 5.15 OBJECT ATTRIBUTES AND RENDERING 5.15.1 Scene gadget 5.15.2 Backdrop and Matte Objects - CONTENTS 1.5 - 5.16 OPTIMIZATIONS 5.16.1 Rendering Mode 5.16.2 Resolution 5.16.3 Recursion 5.16.4 Re-interpreting B-splines 5.16.5 Reflections & Not Reflected. 5.16.6 Shadows 5.16.7 Other Optimizations 5.17 USING ALPHA CHANNEL 5.18 RENDERING FIELDS 5.19 MOTION BLUR 5.20 TROUBLESHOOTING 5.20.1 Not Enough Memory 5.20.2 Disappearing objects Chapter 6 ANIMATION 6.1 PATH 6.1.1 Move Object along a Path 6.1.2 Move Objects along a Path Like a Snake 6.1.3 Bouncing Sphere 6.1.4 Hierarchical Animations and Bouncing Sphere 6.1.5 Move Elastic B-Spline Mesh along a Path 6.1.6 Talking Head 6.1.7 Moving Objects along a B-Spline Mesh 6.1.8 Customized Paths 6.2 ROTATION 6.2.1 Rotating Objects Around an Axis 6.2.2 Rotating with Different Speeds and Directions 6.2.3 Hierarchical Rotations 6.2.4 Tornado 6.3 SWEEP 6.3.1 Walking Legs 6.3.2 Tracking Guns - CONTENTS 1.6 - 6.4 SIZE 6.4.1 Beating Spheres 6.4.2 Bubbles 6.5 STRETCH 6.5.1 Elastic Cube 6.5.2 Bouncing Elastic Sphere 6.6 DIRECTION 6.6.1 Move a Logo Text along a Direction Path 6.6.2 Swimming Fish 6.7 MOVE&DIR 6.7.1 Rocking Logo Moving along a Straight Line 6.7.2 The Rally Driver 6.8 CONTROL CURVES 6.8.1 Beating and Moving Slime Ball 6.8.2 Elastic Flying Carpet 6.8.3 Flying Viewpoint 6.9 SIMPLE SKELETON 6.9.1 A SIMPLE SKELETON and a Logo Text 6.9.2 Rotate a Simple Skeleton around an Axis 6.9.3 Elastic Skeleton and Logo Text 6.9.4 Moving Objects along a Skeleton 6.9.5 Rocking Spheres 6.9.6 A Hydrogen Atom and its Electron Orbit 6.10 SKELETON 6.10.1 Another Logo Text Animation 6.10.2 Rotating Skin around Bones 6.11 INVERSE KINEMATICS 6.11.1 Curl a Finger 6.11.2 Push a Button with the Finger-tip 6.11.3 Interactively Controlled Hierarchical Skeletons 6.11.4 An Animated Robot Arm - CONTENTS 1.7 - 6.12 MORPHING 6.12.1 Second Talking Head 6.12.2 Singing Heads 6.12.3 Sing the Same Song Ten Times 6.12.4 Morphing Hierarchical Objects 6.12.5 Morphing Texture Maps and Materials 6.12.6 Camera Flight Animation 6.13 TRANSFORM 6.13.1 Piston 6.13.2 Hesitating Piston 6.13.3 Three Dimensional Time 6.14 RADIAL FORCE 6.14.1 Gravity 6.14.2 The Simplest Possible Particle Animation 6.14.3 Customized Radial Force 6.15 DIRECTED FORCE 6.15.1 Turbulence 6.15.2 Snow in the Wind 6.16 TANGENT FORCE 6.16.1 Centrifugal Force 6.17 INTERACTIVE COLLISION DETECTION 6.17.1 Colliding Spheres 6.17.2 Multiple Collisions 6.17.3 Bowling Alley 6.17.4 Drop a Ball to a Tube 6.17.5 A Rolling Ball 6.18 NON-INTERACTIVE COLLISION DETECTION 6.18.1 A Planet and Meteorites 6.19 FRICTION 6.19.1 Friction and Spheres with Different Sizes 6.19.2 Customized Friction - CONTENTS 1.8 - 6.20 CREATION 6.20.1 A Sphere Tube 6.20.2 Boiling Water 6.20.3 A Wriggling Snake 6.21 PROCESSOR 6.22 RPL 6.22.1 An Easy Way to Write a RPL Procedure 6.23 WAVE 6.23.1 Waving Sea 6.23.2 A Water Drop 6.23.3 Parallel Waves 6.23.4 Waves and Ripples 6.23.5 Waving Particles Chapter 7 RPL 7.1 INTRODUCTION 7.1.1 Basic Concepts 7.2 TUTORIAL 7.2.1 Getting Started 7.2.2 Stacks 7.2.3 Reverse Polish Notation 7.2.4 Parameter Stack 7.2.5 Data Types 7.2.5.1 Integers 7.2.5.2 Floating-points 7.2.5.3 Strings 7.2.6 Stack Manipulation Words 7.2.7 Compiling New Words 7.2.8 Constants and Variables 7.2.8.1 Constants 7.2.8.2 Variables - CONTENTS 1.9 - 7.2.9 Flow Control 7.2.10 Conditional Execution 7.2.10.1 Comparisons 7.2.10.2 IF.ENDIF Structure 7.2.10.3 IF.ELSE.ENDIF Structure 7.2.10.4 Inverting Flags 7.2.10.5 Nesting Conditionals 7.2.11 Loops 7.2.11.1 Definite Loops 7.2.11.2 Indefinite Loops 7.2.11.3 Nested Loops 7.2.12 Words and the Vocabulary 7.2.13 Loading a File 7.2.14 Using RPL Windows 7.3 USING RPL FOR CUSTOMIZING EDITOR 7.3.1 Communicating with RPL Programs 7.3.2 "Master" ENVIRONMENT 7.3.3 Binding Macros to Keys 7.3.4 Binding Macros to Icons 7.4 CREATING ANIMATIONS USING RPL 7.4.1 Modifying Objects Directly 7.4.2 Creating New Methods 7.4.2.1 Do Nothing Method 7.4.2.2 Move Absolutely Along a Path 7.4.2.3 Chain 7.5 USING EVAL 7.6 OBJECTS 7.6.1 Object Creation 7.6.2 Object Instances 7.6.3 Grouping Objects Together 7.6.4 SphereMan - CONTENTS 1.10 - REFERENCE Chapter 1 MENU FUNCTIONS 1.1 PROJECT 1.2 CREATE 1.3 MODIFY 1.4 VIEW 1.5 ANIMATE 1.6 EXTRAS 1.7 SETTINGS 1.8 TOOLS Chapter 2 ANIMATION METHOD SYNTAX 2.1 PRINCIPLES 2.1.1 General Information 2.1.2 Built-in Methods 2.1.3 User Defined Methods 2.1.4 Evaluating Parameters 2.1.5 Animation Oriented Tags 2.1.6 Particle System Principles 2.1.6.1 Converting Motion Properties into Real Motion 2.1.6.2 Forces in the Particle System 2.1.6.3 Real Time and Particle Motion 2.1.6.4 Side-effects of Particle Animations 2.1.7 Creating New Methods 2.2 ANIMATION METHODS 2.2.1 PATH 2.2.2 ROTATION 2.2.3 SWEEP 2.2.4 SIZE 2.2.5 STRETCH 2.2.6 DIRECTION 2.2.7 MOVE & DIR 2.2.8 CONTROL CURVES - CONTENTS 1.11 - 2.2.9 SIMPLE SKELETON 2.2.10 SKELETON 2.2.11 INV KINEMATIC 2.2.12 MORPHING OPEN & CLOSED 2.2.13 TRANSFORM 2.2.14 WAVE 2.2.15 RADIAL FORCE 2.2.16 DIRECTED FORCE 2.2.17 TANGENT FORCE 2.2.18 COLLISION 2.2.19 INT COLLISION 2.2.20 FRICTION 2.2.21 CREATION 2.2.22 PROCESSOR 2.2.23 RPL Chapter 3 RPL SYNTAX 3.1 KERNEL WORDS 3.2 OBJECT CREATION WORDS 3.2.1 Geometry 3.2.1.1 fStAngle & fEnAngle 3.2.1.2 wGeomFlags 3.2.1.3 wFreeType 3.2.2 iColor 3.2.3 Attributes 3.2.3.1 Name 3.2.3.2 Object Flags 3.2.4 Tags 3.2.5 Return Value 3.2.6 Word Definitions 3.3 MODIFICATION WORDS 3.3.1 Modify Flags 3.3.2 Locking Object Data 3.3.3 Word Definitions 3.4 OBJECT WORDS 3.4.1 Return Value 3.4.2 Locking Data Structure 3.4.3 Word Definitions - CONTENTS 1.12 - 3.5 ANIMATION WORDS 3.6 I/O WORDS 3.7 MATERIAL WORDS 3.8 MISCELLANEOUS WORDS 3.9 USER INTERFACE WORDS 3.10 AREXXWORDS 3.11 VECTOR OPERATIONS Chapter 4 GEOMETRIC OBJECT PROPERTIES 4.1 GEOMETRIC PROPERTIES 4.1.1 Surface Definition 4.1.2 COG 4.1.3 Direction 4.1.4 Size 4.2 DEFAULT GEOMETRIC PROPERTIES Chapter 5 TAGS 5.1 TAG IDENTIFIERS 5.2 RESERVED TAG IDENTIFIERS Chapter 6 AREXX INTERFACE OF REAL 3D 6.1 GENERAL 6.2 AREXX VS. RPL 6.3 SENDING AREXX COMMANDS TO THE PORT OF REAL 3D 6.4 RETURN VALUES - CONTENTS 1.13 - 6.5 RESULT STRING 6.6 CLIP LIST 6.7 SENDING AREXX COMMANDS FROM REAL 3D 6.8 RETURN VALUES FROM OTHER APPLICATIONS 6.9 RESULT STRINGS FROM OTHER APPLICATIONS APPENDICES Appendix A PREDEFINED ICONS Appendix B HOT KEYS AND MENUS Appendix C UTILITY SOFTWARE C.1 CONVERSION SOFTWARE C.1.1 RealConvert C.1.2 DxfToRPL C.2 IMAGE & ANIMATION DISPLAY C.2.1 Display C.2.2 DeltaConvert C.2.3 DeltaPlay GLOSSARY INDEX - CONTENTS 1.14 - INTRODUCTION ------------ Chapter 1 FEATURES OF REAL 3D V.2 --------------------------------- Program Description REAL 3D V.2 is a design and animation program for producing high quality realistic images of three-dimensional objects. 3D Desktop animators, creative computer artists, product designers, teachers and everyone interested in compiler generated imagery will find REAL 3D V.2 a very useful and unique tool. This new version introduces a large collection of state-of-art features, making REAL 3D V.2 one of the most powerful 3D packages available to desktop computer platforms. Integrated Environment The mode-less design principles of REAL 3D V.2 mean that the user can directly access most functions of the program simultaneously. F or example: it is possible to modify a material and immediately see how the modification affects the rendered image. Configurable Environment Expendability The REAL 3D user interface is fully configurable. You easily are able to design different working environments to meet requirements of different applications. For example: REAL 3D V.2 can be used as a single view editor, a tri-view editor or perhaps a 9-view editor. It is possible to expand the program by defining new functions and binding them to icons and keys. Zero Wait State Design The asynchronous software design, implemented using the latest techniques of object-oriented programming, takes extensive advantage of multi-tasking operating systems. In this way maximum convenience and productivity are achieved when modelling. The user never has to wait until some function has finished; instead, he can continue with new actions while old ones execute as background tasks. Hierarchical Object-Oriented Construction of Objects With REAL 3D V2, objects can be created with hierarchical structure. This means that the objects are made of sub-objects, and these sub-objects may have their own sub-structure and so on. This kind of tree structure is well known in the context of disk operating systems in which directories are created inside other directories. In REAL 3D the counterparts of these directories combine objects into logical groups. This approach makes, for example, object modifications extremely easy because it is possible to perform operations to each logical entity separately or collectively. When copying a DOS directory, it is not necessary to take care of the individual files and directories inside it. In the same manner , a complex object can be stretched in REAL 3D as easily as one part of it. Ray Tracing The ray tracing calculations of REAL 3D are strongly based on the optical properties of materials in the real world. REAL 3D produces images by simulating the laws of optics, and consequently they represent reality with astonishing accuracy. Speed Innovative methods and new ray tracing algorithms make REAL 3D extremely fast. Ray tracing in REAL 3D V.2 is so incredibly fast that it is usable as a primary re-drawing method instead of wire-frames during the interactive modelling process. - INTRODUCTION 1.1 - Rendering Techniques As well as the ultra fast wire-frame refreshing, REAL 3D V.2 includes six different rendering techniques: hidden-line wire-frames, high speed basic surface rendering, simple ray tracing with non-interactive environment-mapped reflections, single light-source ray tracing, rendering without shadows, and full featured ray tracing. Light-sources it is possible to use an unlimited number of light-sources with any desired color and intensity. Smooth edged shadows can be produced using diffuse light-sources. Anti-aliasing REAL 3D V.2 includes adjustable anti-aliasing. There are 9 different degrees of anti-aliasing, from which the user can select a suitable level. The most accurate level uses 256 * 256 adaptive over-sampling, which is enough for any application! Depth-of-Field Using a highly optimized algorithm, depth-of-field can be used even for very complex scenes. There is no significant impact on rendering time. Motion Blur The Rendering Engine also supports a sophisticated motion blur evaluation system that can be applied to whole scenes or individual objects selectively. The use of adaptive over-sampling makes this evaluation faster than other software on equivalent platforms. Draft rendering For drafting purposes it is possible to render with low resolutions to produce images faster. Rectangular areas of an image can be individually selected and rendered with any desired techniques: resolution, anti-aliasing level, etc. True Solid Modeling REAL 3D V.2 includes CSG (Constructive Solid Geometry) modelling. Solid modelling is the most sophisticated way to represent three dimensional objects. For example, solid modelling offers general boolean operations and makes it possible to simulate optical devices, like lenses, correctly. Mathematical Surfaces In addition to polygonal surfaces, REAL 3D V.2 includes several curved surfaces such as: ellipsoids, cylinders, cones and hyperboloids. The surface descriptions of these surfaces are defined mathematically. This means that no matter how much a sphere created by REAL 3D V.2 is enlarged, no edges, corners, or other artifacts become visible on its surface. This makes the program much faster, and most importantly, the resultant images are of very high quality. Boolean Operations Using boolean operations between objects, you can for example, split an object into two pieces and move the pieces apart so that the inner structure of the object is revealed. Operations can alter the properties of the material of the target object using the properties of the tool. By using a shiny cylinder, a shiny hole can be drilled into a matt object. These operations are a powerful way to create and modify objects. When modelling technical objects these boolean operations are especially indispensable. - INTRODUCTION 1.2 - Compound Tools Complex shapes constructed by automatically combining basic primitive objects. Polygonal Surfaces Conventional polygonal surfaces with optional Phong Shading are included. B-spline Surfaces Uniform cubic B-spline surfaces provide the user with a very powerful way of representing curved free-form surfaces and organic shapes. The quality of shaded B-spline surfaces is far superior to polygonal surfaces with Phong Shading. Free-form Construction A large collection of free-form surface construction functions are provided including: co-planar and orthogonal sweeps, rotation, cross- sectional building, etc. Linear Modifications All the necessary functions for modifying the basic shape and properties of objects are included. Non-linear Transformations Nearly one hundred non-linear transformations and bending functions are available for altering the shape of free-form surfaces. Fractal Generators Two fractal generators are included for constructing "landscapes" and "trees". Material Properties Using the hierarchical structure it is possible to construct objects from different materials having suitable physical properties. All material properties can be adjusted without any restrictions. Even the refractive index of light is freely adjustable so that it is possible to create optical devices from glass lenses. These devices act as their real-world counterparts: a magnifying glass in REAL 3D really magnifies! Texture Mapping The texture mapping properties of REAL 3D V.2 are not restricted to any fixed patterns. Any image file can be used to paint objects. Pictures created with any paint program, video digitizer, or scanner can all be used to color the surface of an object. For example, by digitizing a wood-grain pattern, it is easy to create wooden objects that look very realistic. In REAL 3D V.2 textures are treated as objects and are a part of the object hierarchy which means that textures can be modified and animated just as easily as any other object. B-spline Mapping Textures and images can be mapped over the surface of a B-spline mesh so that they exactly follow the curvature of the mesh object. The B-spline object can be modified or animated and its texture will move with it like a skin. Procedural Textures As well as using image files to define material properties, an unlimited number of mathematical handlers can be used. The user can write arbitrary formulas defining the color, bump-mapping, and other material properties. Many built in procedural handlers are included. - INTRODUCTION 1.3 - Multiple Textures Objects can have multiple textures and materials. Furthermore, the materials can be faded and mixed. Animation Support The new version introduces a revolutionary animation system which extends the object-orientation principles to the process of defining the animation methods for each object. In the new animation system, the motion description is a natural part of the object structure. The built-in animation methods include such features as: basic motion and shape modification, morphing and skeletonal control using inverse kinematics. Particle Animation There is also one of the most powerful particle animation systems available integrated into the animation system. Using these animation methods objects are treated as particles that can have various physical properties like: velocity , spin, mass, and surface-friction. They can then be made to collide and interact just like objects in the real world. Interactive Replay REAL 3D also includes software for showing rendered animations interactively. Macro Functions it is possible to combine REAL 3D functions to form macros either by recording the mouse and keyboard actions, or by creating the descriptive text using the built in programming language. With macros the user can easily create complex symmetrical forms or produce animation effects. Macros can be saved, loaded, and bound to keys and icons. RPL Language REAL 3D contains a fully featured programming language called RPL. The language offers the most powerful interface to the software and can even be used for accessing operating system functions. RPL is used for: - expanding the program features - macro recording - scene description and saving - particle and procedural animation methods - procedural material properties Two formats are available: a binary and an ASCII format. The binary format offers efficient and fast way of storing a scene description, whereas the ASCII format, based on RPL programming language, is machine independent. Tag Expansion Object and material data structures can be expanded using tags. Tags are also used in particle animations where the tag data attached to an object can determine the behavior of the object. AutoCAD Interface REAL 3D supports importing AutoCAD DXF format. Mattes and Background The 3D images rendered by REAL 3D are easily integrated with digital backgrounds. By using other objects to act as "mattes", rendered objects can be made to "pass behind" parts of the background. When used correctly with the animation system these techniques allow direct combination of 3D graphics and "live" action. - INTRODUCTION 1.4 - Alpha channel The REAL 3D Rendering Engine provides support for graphics hardware with an alpha-information channel. By using the alpha-channel as a video key, ray traced scenes can be combined with video without the need to digitize it in advance. image Output The protocol for output devices is well designed and flexible. This allows for graphics hardware manufacturers to easily write the software needed for using their hardware with REAL 3D. Field Rendering Rendering of separate fields is also supported by the software. Chapter 2 INSTALLATION ---------------------- 2.1 HARDWARE REQUIREMENTS REAL 3D V.2 has the following hardware requirements: - At least 3 megabytes of RAM memory - A hard disk with at least 5 megabytes of free-space for the software - MC68020 (or higher, e.g. 68030/68040) processor - A math coprocessor For professional users we recommend a configuration with at least 5 megabytes of RAM memory and at least 10 megabytes of hard disk space reserved for the REAL 3D environment. The special 68040 optimized program version has been tested to be up to 8 times faster in rendering than the 68030 version running equal clock frequency. 2.2 INSTALLING THE SYSTEM Before you use your REAL 3D disks, make working copies of the originals by using either Workbench-duplicate operation or some copying program. This guarantees that if a disk is corrupted accidentally, you will still have a good copy. To use the software, you need a hard disk. To install the software to your hard disk, just double click the InstallHD-icon on the first program disk and follow the instructions. For successful installation, there must be at least five megabytes of free hard disk space. After installation, remember to add "assign R3D2: Partition:R3D2" command to your startup-sequence (preferably to the s:user-startup file), where "Partition" refers to the hard disk partition you chose. For your convenience, REAL 3D maintains information of the DOS directories that contain the data structures created with the program, for example: project, material, and object structures. The default directories are the directories found in the software package. You can change them by using Settings/Paths function and then by using Project/Environment/Save function , save the working environment as "s:real-startup". The directory paths are included in the project file, and when you next run the program and try to load some data, the relevant directory is immediately displayed (if it still exists). The automatic installation procedure creates a directory under which it copies the contents of the program disks. Furthermore, it adds two files to the s: directory, real-startup and RPL-startup. Real-startup is a project file, containing the default user interface. RPL-startup contains the initial RPL definitions of which the most important are the default keyboard binding definitions or Hot-Keys. - INTRODUCTION 1.5 - Chapter 3 USING THE MANUAL -------------------------- 3.1 welcome to the world of REAL 3D V.2 REAL 3D V.2 is an extremely powerful tool for creating realistic computer graphics images and animations. Once you have grasped a few basic principles you will find it very interesting to use. This manual is designed to gently take you through the learning process. Very soon you will be creating some very cool images and animations that previously you didn't think possible on a desktop 3D platform. 3.2 Suggested Method of Reading 3.2.1 All Users The manual contains six different sections: INTRODUCTION - Introduces you to the program and gets you started. TUTORIAL - Takes you through all the functions in easy steps with lots of examples. There are also text and files in the "Examples" directory to help. REFERENCE - This contains concise descriptions for the menu functions and for each gadget on all the requesters. GLOSSARY - REAL 3D V.2 uses a number of special terms and phrases to describe the items you create and how certain functions operate. These are all defined in this section. APPENDICES - All the miscellaneous information: diagrams of icons, descriptions of hot-keys, and using the support software is contained in this section. INDEX - A full index. In Chapter 4, "Getting Started", there is a special project for you to load with instructions to follow so that you can experiment and get a quick taste of the power of REAL 3D V.2. 3.2.2 As a New User If this is the first time you have ever used a 3D graphics program then using REAL 3D will be a real experience! You should go straight to Chapter 4 and follow the instructions carefully. Take your time, be patient, the whole world of Virtual Reality and Computer Generated Images & Animations lies before you... You should now go to Chapter 4 "Getting Started". 3.2.3 As a User with Previous 3D Graphics Experience If you have used 3D graphics packages before, but never any of the previous versions of REAL 3D then you should pay special attention to the Tutorial. REAL 3D is on the cutting-edge of 3D graphics software, and contains many new ideas and principles which make it probably the most powerful computer graphics development tool available on ANY platform. It is quite different from other packages; but in this difference lies its power. REAL 3D V.2 gives you, the user, a highly flexible editor for creating the shapes and materials you desire using a working environment you can configure to your own personal requirements (or even the requirements of a particular project). This editor is smoothly integrated with a highly optimized rendering engine that will provide you with ray-traced images in the minimum of time. If draft rendering is used on a fast workstation then it is quite practical to edit using shaded surfaces. The next sub-chapter is directed at users who already have some experience with REAL 3D from the original version. To get immediately into learning the new program just go to Chapter 4; but if you are interested in the history of REAL 3D's development then read on... - INTRODUCTION 1.6 - 3.2.4 Real-1.X User About 4 man-years of programming effort has been put into developing version 2.0 from 1.42. Understandably the program has changed considerably, but the basic principles of creating objects using primitives, arranged in a hierarchy, remains. The way that hierarchy is used to control and construct objects has been expanded. Animation is no longer based upon "exposed' frames or objects but upon new structures created in the hierarchy to describe how objects should move and transform. The whole user-interface has changed radically and many new features have been added. Once you discover the power behind these new features they will rapidly become essential tools that you would not want to do without. Almost all of your old friends are still there, they are just living in different places! Some functions have been replaced by much more powerful and flexible tools to cope with the expanded features of the program. The next sub-chapter is for you. It describes briefly most of the new developments, but it is not supposed to be a substitute for learning the new version. By all means experiment with the new features using your experience of the earlier versions of REAL 3D, but if you don't get the results you expect then consult the TUTORIAL, it's there to help! 3.3 MAJOR DEVELOPMENTS SINCE v1.42 3.3.1 System integration & Configurable interface The most immediately obvious change is that there are no longer three separate parts to the program. In REAL 3D V.2 object creation, modification, animation, and rendering can all be carried out on ONE screen. It is possible and often necessary to use more than one screen but the way in which screens are used can be configured by the user. This is handled by allowing the user to open screens that suit a particular requirement and opening one or more windows on that screen.- These windows do have specific functions depending upon their type, but each can be configured to meet your needs. It is also possible to declare one of these screens the default public screen (OS 2.0 feature). This means that certain OS 2.0 compatible programs can be integrated into REAL 3D. Conversely it may also be possible to integrate into those packages that also use public screens. A particular configuration of screens and windows can be saved as an "environment" and then loaded at any time. This configurable environment allows the creation of user-defined tool gadgets and single-key macros to extend the user interface. 3.3.2 Multi-selection Support The OS principle of multi-selection has been included in v.2. It is now possible to select lists of objects or even menu selections or tool icons. 3.3.2.1 Multi-selecting Objects Multiple objects can be selected from a Select Window using or in the same way as selecting icons on WorkBench. These objects then form a list which can be used as a target for any of the modification functions or as operands for some creation functions. This is an essential technique for those functions which require two or more objects as operands. - INTRODUCTION 1.7 - 3.3.2.2 Multi-selecting Functions An Action List is maintained for keeping all functions selected by the user. As many functions as required can be placed on this list by clicking either on the Tool Icons or on a menu selection. These functions can then be used consecutively until the list is empty. The list operates on a First In First Out (FIFO) basis. 3.3.3 Hierarchy The use of the hierarchy has been substantially expanded by the addition of many new primitives and the functions to control them. Probably the most important changes to the hierarchy concern: the animation system, materials, and boolean operations. 3.3.3.1 Animation System The animation system is completely new. Animations are no longer based upon frames and exposed objects. Instead time is now a global value that controls how objects are animated and there is a special window (the animation window) for controlling time. Time is continuous and any moment in time can be selected and the position and state of all animated objects can be viewed for that time. Moments in time, or frames, only become animations when they are rendered. Animation effects (called methods) i.e. PATH, SWEEP, COLLISION, etc., are now attached to objects in the hierarchy. These "methods' can effect all those objects at the same hierarchical level, and some can even effect other methods. This means it is possible to build the animation of a complex object up in stages: - Make a thigh rotate about a hip. - Make a shin rotate about the knee of the thigh. - Make the whole leg run along a path. This whole object can then be positioned anywhere in space and it will carry out its actions when animated. All methods can be copied and modified by the modification functions just like any other object. If their animation effects are controlled by other objects which have some geometry then their effect will be modified with them. So the running leg can be duplicated to make a pair and, with a little bit of modification of size and position, can also become the arms for a running man. These animated objects can then be saved by the user. 3.3.3.2 Materials Materials are now associated with objects in the hierarchy in the same way as methods. These textures also effect objects in the same level. This means that several material properties can be applied to a visible (object) to produce extremely complex properties. For example: - A "shiny" material with no geometric texture can be used with a cylinder to make a metal tin can - A picture of a label can be used as an image and "wrapped" onto the tin with a cylindrical texture. - A third material can have mathematically defined circular "ridges" bump- mapped onto the ends of the can using a procedural handler. Since the textures can also have a geometrical representation, that is, a rectangular parallel projection would be represented by a dotted rectangle on the editor screen, they can be modified just like any other geometric. This means they can be re-positioned, sized, and stretched until they are in precisely the required place. Also a texture is just another object so of course it can be animated! - INTRODUCTION 1.8 - 3.3.3.3 Boolean Operations Boolean operations are now applied to all objects at the same level of hierarchy instead of between just two operand objects. This means that if a level is turned from boolean type OR (the default) to AND then the resultant visible will consist of the over-lapping volume of ALL the objects in that level, including any other booleans. The AND NOT operation is achieved by applying the "Inverted" attribute to one or more of the objects in the level. By setting an objects "Paints" attribute, the "WITH PAINT" effect from the earlier versions is produced. All these settings are available in the object attributes requester opened with MODIFY/properties/Attributes, or there are functions under the CREATE/Boolean menu which use operands selected from the hierarchy with multi-selection to create the final composite. 3.3.3.4 Hierarchy References and Order In addition to the old feature of "logical objects" (now called levels), which allowed new objects to be grouped at different levels of hierarchy, there are two new objects which alter the evaluation of the hierarchy. These are groups, which are references to a collections of points on a free-form, and links, which allow other parts of the hierarchy to be referenced at the current level. 3.3.4 Free-form Curves and Surfaces The major new feature is the addition of cubic B-spline curves and surfaces for the construction of free-form objects. B-splines can be controlled in a similar way to the original free-form objects in v1.42, but the quality when rendered is significantly higher even when the surface is constructed from very few data points. There are some restrictions about using B-splines and some basic tricks to learn. Also the calculations involved in rendering them are staggering, so although the rendering engine has been specially optimized to cope, they are not as fast as Phong Shaded surfaces. The quality is well worth the wait though. 3.3.5 Built-in Programming Language Finally, REAL 3D V.2 has its own programming language, RPL, which allows any function the user requires to be integrated easily into the software. Chapter 4 GETTING STARTED ------------------------- This chapter takes you through the first stages of using REAL 3D V.2. The main part of this chapter takes you step by step through a REAL 3D project which has been prepared specially to introduce you to most of the fundamental principles. It should also show you the potential of this incredibly powerful computer graphics design tool. 4.1 OPENING THE PROGRAM You should have already installed the program to your hard-drive, if not go through the steps in 2.2 above before proceeding. Now open the drawer where you installed the REAL 3D system and double- click the icon "Real" using the left mouse button. From now on this will just be described as double-clicking and the left mouse button will be abbreviated to . The program is quite large and will take a few moments to load. - INTRODUCTION 1.9 - When the program first loads you will be presented with your first REAL 3D working environment. This initial environment consists of just three windows. The large almost square window with a thin border is a view window. Through this window you look into the REAL 3D universe. The small window in the bottom right corner is a tool window or tool-box. This contains a number of tool icons. The third window on the right is a select window. This is used for selecting objects from the hierarchy which is the special way that REAL 3D stores all its objects. In some ways this is the most important of all the windows in the REAL 3D system. Understanding how hierarchy and object selection works it the key to unlocking the power behind REAL 3D. This may seem to be a very simple arrangement, but it provides you with all the basic windows and tools you will need to experiment with the introduction project. Later you will learn how to re-configure your environment to suit your own requirements. 4.2 FAMILIARIZE YOURSELF WITH THE MENUS & TOOLS 4.2.1 Menus Just use the right mouse button (this will be shown as from now on) to browse through the menu lists. Soon you will find that they are very logically laid out and it is easy to remember where each function lives. Example 1: Create a sphere with a menu function. 1. Select the menu function Create Visibles/Sphere. Note: This means hold the down and slide the pointer along the top menu strip until you come to the second heading "Create". Then move the pointer down to the first sub-menu called "Visibles" . Still holding the down move over the sub-menu until the pointer is over the function "Sphere". Finally release the . The name of the function you selected appears at the top of the view after the text "Next:". This tells you that the next function on the Action List will be to create a sphere. 2. Click the once somewhere near the middle of the view. Note: You must just quickly click the button, don't hold it down otherwise you will get a box which has a special use. If you do get a box don't worry, just let go of the and REAL 3D will automatically select the start point for your sphere. 3. Move the pointer. - INTRODUCTION 1.10 - As you move the pointer you will see the wire-frame representation of the sphere you are creating drawn with a dark broken line. A wire-frame is just a very fast way of representing the shape of a three-dimensional object on the two dimensional surface of your monitor. 4. When the sphere is the size you want just click the again to complete the creation process. The wire-frame is drawn with a solid white line, and the name "ellipsoid" appears in the select window. 4.2.2 tool icons You can also see a window containing a number of tool icons which provide single click access to many of the most frequently needed functions. There are more icons available, only the basic ones are currently in the tool window. You can find out how to add more icons to your tool box and even create your own in the TUTORIAL section. Example 2: Using the Create/"Sphere" tool icon to create a second sphere. 1. Click on the icon in the tool-box. The icon is second one of the fourth icon row. 2. Select the center for the sphere using the as you did in step 2 of Example 1 . Select a point away from your first sphere so that the new one will not overlap. 3. Follow steps 3 & 4 above. You should now have two wire-frames of spheres and the Select Window will have the names "ellipsoid" and "ellipsoid.1" on the list of objects. 4.2.3 Hot-keys You might want to see what your spheres look like when shaded so follow the following example. Example 3: Invoking the rendering engine using a hot-key. 1. Press and hold the right Amiga key ( from now on). 2. Press the "r" key. Pressing the shift key is unnecessary, the hot-keys are not case sensitive. Note: Make sure you have the view window active. Click on it or check to see if it is "highlighted". You have just used the hot-key r to start rendering. The rendering engine will produce a shaded image of your two spheres using its Draft setting. Your environment was set up with 8 levels of gray, but most other graphics modes are supported. The rendering engine is the part of the REAL 3D system that draws your objects as shaded surfaces instead of wire-frames. 4.2.4 Conclusion That is how easy it is to create and render objects using REAL 3D. Obviously it will take some practice to create complex scenes and animations, but follow the next sub-chapter through and you will begin to see the potential... - INTRODUCTION 1.11 - 4.3 INTRODUCTION PROJECT A special set of files have been prepared to accompany this manual, you will use the first of these now in order to get a brief taste of the power of REAL 3D V.2. If you are new to REAL 3D and especially if the whole process of using the Amiga is new to you, take your time and read the instructions carefully. Everything has been arranged in a concise and logical fashion to make it easy for you. Just follow the instructions and the manual will guide you through. 4.3.1 Loading the Project The first thing you need to do is load the introduction project. A REAL 3D project contains the information necessary to define a scene or animation in the REAL 3D universe. Example 4: Load a new project. 1. Select the menu function Project/Project/Replace using the same process for menu selection as described in Example 1 above. A standard file selector is opened. This is the basic style of requester for loading and saving files. It shows the files that are available in the current drawer as a selection list, and a number of other gadgets for controlling which types of files are shown and for moving to different drawers and partitions of your disk. Note: To select a file, move the pointer over the name of the file in the list and click . The file name will be high-lighted and at the same time it will appear in the "File" text-gadget box. 2. Select the "Intro.prj" file. Then move the pointer over the OK button- gadget and click . REAL 3D has loaded a new set of windows as part of the working environment for the "Intro" project. You can see a view, a select window, and an animation window. The animation window contains all the gadgets for controlling animation playback and recording (much like VCR controls). You will find out how to use some of these gadgets shortly, the rest are explained in the TUTORIAL. This window has been opened on its own private screen. For the moment slide the animation window down out of the way by following the method : 3. Move the pointer over the dark bar at the top of the Animation Screen, press and hold the and then move the pointer down to slide the screen out of the way. When you can see all the view then release the to let go of the screen bar. Now you can begin to investigate the features of the project. - INTRODUCTION 1.12 - 4.3.2 Refreshing and Rendering Example 5: Testing refreshing and view projection types. 1. Move the pointer onto the view window, click to make it the active window, then press the key. Pressing has refreshed all the windows. Now you can see the wire-frame representations of the objects in this REAL 3D universe. Note: An object is any item like a shape or surface that is stored in the special structure called the hierarchy. The principle of how objects are stored in hierarchy is very important to understanding REAL 3D, but for now just think of the hierarchy as like your hard-drive. It can contain different types of objects and can have different "drawers" for putting objects in. 2. To see the wire-frames in perspective select the View/Type menu, and click the once on the "Perspective" item. A check mark will appear on the left to show that this type is now selected. Note: Before you clicked on "Perspective" you may have noticed that the View Projection Type was "Parallel". This type of projection produces the kind of wire-frame views used by most CAD programs. 3. Now try pressing each of the different cursor keys several times. You will see that as you press the keys the wireframe image rotates. You can continue to rotate in any direction until you come right back to the starting position. - INTRODUCTION 1.13 - Note: If you find the direction of the rotation confusing then you should realize that it is rotating the View about the objects in the same way as you move a camera or turn your head. If you turn your head to the left (left cursor key or ) then what you are looking at moves to the right. 4. To re-display your starting position use View/Display/Reset or e. The view returns to its original viewing position and the wireframes are re-drawn. Example 6: Experimenting with rendering techniques. 1. For the simplest rendering select the function View/Render/Window. "Simple Shaded View of Introduction Project" The wire-frame image is quickly replaced by one showing the objects as gray shaded surfaces. As it was when you pressed r, the view has been refreshed using the simple shaded surface rendering mode called "Draft". This is a special very high-speed technique used by the rendering engine which just gives you the fastest possible truly three dimensional representation of your visible objects. It is possible, on a fast workstation, to use this mode as part of your interactive editing of objects. 2. Select the function View/Render/Settings. - INTRODUCTION 1.14 - This will open a Render Settings Requester Window with many gadgets that covers most of the screen. Note: These gadgets are easy to learn and will give you complete control of how the rendering engine converts your scene into an image. 3. Move the pointer up towards the top left hand corner of the render settings requester and find the gadget labelled "Mode". You will see that the actual button is showing that it is in "Draft" mode. Click once on this cycle-gadget and the rendering mode will change to "Environment. 4. Now move down to the bottom left corner and select "OK" to confirm the change. This will close the window. 5. You should now render the view again. Note: You have used the hot-key r before, so you can use it from now on whenever you want the rendering engine to refresh a view. - INTRODUCTION 1.15 - Remember: Using r ONLY affects view windows, so you must make sure that one is active by clicking it; otherwise nothing will happen. The scene is re-drawn, only this time the big sphere is striped and shows the realsoft Logo, and the base has a chequered pattern. Note: "Environment mode is the first rendering mode that uses materials when it creates the image. If you want to create realistic looking scenes you have to be able to describe how an object affects the light which falls on it. This is done by defining a material and applying it to the object. The TUTORIAL explains all the details of creating and using materials. 6. The image looks a bit "over-exposed" so you should make another small adjustment to the render settings. To open the render settings requester, you can use the menus, or the hot-key s. Now find the slider-gadget labelled "Brightness'. (It's on the left, near the bottom.) To the right of the slider is a number, currently it shows the value of "Brightness' as 100. Move the slider until this value is between 70 and 80; then confirm the change with "OK', and render the view again. Note: To move the slider, just position the pointer over the dark rectangle, hold the , and move the mouse from right to left. When the rendering engine produces the image this time, the over-all level of light is reduced so those bright parts of the scene that had become overexposed are now at a more natural level. This is just like adjusting the "Contrast' control of your monitor. 7. If you want to see what this scene looks like now in color, select View/Render/HAM. This will open render settings so you can make any last minute adjustments before rendering. You can look at one more feature of the rendering engine by clicking on the check-gadget labeled "Backgr. gradient". A check mark will appear on the button to show that this feature is enabled. Everything else should be just perfect so click "OK". REAL 3D automatically opens a HAM screen with a full-screen window with no border. This type of window is called a borderless view. The rendering engine is also started. You will see the scene rendered in color this time. The background will be shaded from a light to a darker gray. We will now have a look at some of the features of the animation system. 4.3.3 Animating Example 6: Playing an animation. 1. First you should close the HAM screen. Select the function Project/Environment/Close - Current. REAL 3D closes the borderless view and the HAM screen leaving you with your original environment. 2. Use the same method as you did in Example 4, step 3 to get hold of the title bar of the animation screen and drag it so you can see all the gadgets as far down as the one on the right showing "Wireframe'. 3. Click the "Play Forwards" gadget labelled with "->|". This will play a wire-frame pre-view of the animation. - INTRODUCTION 1.16 - 4. When the anImatIon play stops, click the play backwards gadget on the Animation Window. "l<-". 5. The wire-frame animation will now play backwards. You will notice that the small bouncing sphere has not ended up in its original position. The reasons for this is that its animation is influenced by "Particle Animation" and it requires some special handling that will be discussed later in the manual. For now, just remove this part of the animation: 6. Move the pointer onto the select window and click once on the object name "Particle_Sys". The name "Particle_Sys" is now high-lighted to show that it is a selected object. 7. Now select the function Modify/Structure/Delete. The object "Particle_Sys" has been deleted. Its name is removed from the select window and the wire-frame of the bouncing ball is missing from the view. This is because the Particle_Sys object was actually several objects, including the visible ones, contained in a single drawer-like object which is called a level in REAL 3D terminology. 8. Now you can try all the other "VCR-like" button-gadgets on the animation window, and the animation will behave exactly as you expect. Note: As you play with the gadgets notice what happens with the "knob" on the "Time" slider gadget and to the numbers in the box to the right of it. They show the animation time which is always between 0.0 and 1.0. 4.3.3. 1 "Jump To/Play To" and the "Time Slider" Example 7: Testing the "Time Slider" controls. 1. Use the to hold the "knob" of the slider as you did with the "Brightness" control of render settings. Now move it to a new time. Time goes immediately to the new value, and the view is refreshed showing the position of "Animation Obj" for that time. If you cannot clearly determine the position from the wireframes just click on the view and use r to render the image. Remember: If "Environment" mode is too slow for your workstation then change it to "Draft" using render settings. 2. Click on the cycle-gadget which is showing "Jump To". It will change to "Play To". Now when you change time with the slider the animation is played from the current time to the new value. 4.3.3.2 "Wireframe/Ray Trace" Gadget There is one last gadget that you should look at while "Getting Started". This controls how the animation system refreshes your view while it plays back the animation. Example 8: Testing Animation Refresh 1. Use one of the Time controls to set the animation at the start. Now click on the cycle-gadget showing "Wire frame". It changes to "Ray Trace". - INTRODUCTION 1.17 - 2. Now change time slightly. The animation system updates the position of the animated objects and invokes the rendering engine to update the view. The system continues shading new images until the time value you gave is reached. You can stop the process by clicking the CANCEL button. 4.3.4 Rendering Revisited Just before you leave the INTRODUCTION to begin the TUTORIAL you might like to look at the full power of the rendering engine. The following example does not describe any details of the functions you will use. It is just here to allow you to see how realistic the images are that REAL 3D can produce. Example 9: Producing an image with soft-shadows and depth-of-field. 1. Use Project/Project/Replace to load a new copy of "Intro.prj". 2. Click on the view and then change the View/Type to "Perspective". Then use - twice to zoom the display out. Note: You may have to press the key to get the "-" function. 3. Now change the "Jump To" control for the time slider to "Play To" and set the time to about half-way through the animation. Remember: If you want the bouncing ball to be correct, you can only move timeforward. 4. To start the rendering, click on the view and select View/Render/HAM or use h. 5. When render settings opens, change the "Mode" to "Normal", set "Brightness" to about 75, and enable "Background gradient" as you did before. 6. Now use the two slider gadgets above "Backgr. gradient" to set "Antialiasing" to 3 and "Lightsamples" to 1. 7. Finally click the pointer in the numeric-gadget box labelled "DOF scale" , then enter the value 1.0. Check the settings, then confirm them and start the rendering with "OK". This will take a few minutes to produce the finished image, as REAL 3D is having to carry out a phenomenal number of calculations to produce such a very realistic image. 4.4 END OF THE BEGINNING Hopefully this introduction has whetted your appetite and demonstrated a little of the power of REAL 3D V.2. In the TUTORIALS that follow, you will find that the program is logically arranged and with a little practice you will very soon be able to create fantastic images and animations. - INTRODUCTION 1.18 - TUTORIAL -------- Chapter 1 OBJECT CREATION & MODIFICATION ---------------------------------------- Before you start to read the tutorials, remember that most tutorial examples include an example of the finished result. You will be informed about the presence of this kind of support material in the following way: Support example: Examples/..... This means that you can verify the result of the tutorial example by replacing your current project (use menu Project/Project/Replace) with the given file, which you can find in the "Examples" directory of the REAL 3D drawer. If you worked through Chapter 4 GETTING STARTED of the INTRODUCTION, then you have already created some spheres, and you will have seen a few of the other objects which can be created when you looked at the Intro.prj. This first chapter of the tutorial is intended to give you an overview of the user interface of the software. It will familiarize you with the use of the hierarchy and basic creation and modify functions. 1.1 STARTING THE PROGRAM REAL 3D can be activated from the Workbench interface by double-clicking the icon of the program "Real", or from the command line interpreter (CLI/SHELL) by the command REAL. If you are going to modify a project that you have created earlier, then you can start the program by opening the icon for that object as described in Amiga user interface manuals. The same method is valid for all data structures created by the program. For example, you may choose to start the program from different environment files instead of the program icon itself, depending on what kind of modelling you are planning to do. If the purpose is to create animations, run the program directly to the animation environment; if you are going to do accurate CAD type modelling, pick a tri-view environment with plenty of grids. The user interface of REAL 3D is configurable and you may customize it to suit your needs. The "Environments" drawer of the software package contains some sample environments. Note: If you start the program from CLI, make sure that the stack size is large enough. We recommend the stack size be at least 40 000 bytes. You can use the CLI stack command to set a proper stack size. When studying this chapter, you should use the standard environment, and therefore start the program from its icon. 1.2 THE WINDOWS When the program is started from its program icon, it loads the environment definition stored in the s:real-startup file. The original environment contains a basic 3 window interface in which all the creation and modifying functions can be done. The largest window, a view window, shows the object under construction. By default, it displays the object from the front as parallel projection. The construction of objects is done in view windows using the mouse. You can see a symbol _+_ in the view window. This symbol is the "hot-point", which displays the latest given coordinate position in space. You can move the hot-point to a new location by clicking in a desired place. The third coordinate value for the points, which the user defines with the mouse, is read from the hot-point position, because a mouse button click defines only two coordinates at a time. The top border of the view displays some useful information. First, you can see a window name identifier. Second, the projection type of the view; parallel or perspective. Finally, the view border displays two selected functions, current one and the next one in the FIFO list of the view. The window in the top right corner of the display is called a selection window. - TUTORIAL 1.1 - This window displays the names of the objects you have constructed. You can select an object by clicking on its name in the select window. Multi-selection happens by pressing the key down and clicking the names, or by dragging with the in the select window. The names of selected objects are highlighted as an indication of the selection. The select window is very important part of the working environment. Extensive use of object hierarchy is one of the most important principles of REAL 3D. The third window, in the bottom right corner of the screen, is a tool window. It contains tool icons from which you can activate functions. It is possible to modify the contents of the tool window and add user- defined icons. 1.3 THE MOUSE When using REAL 3D, the mouse is the most important input device, and the actions the user can do with it can be divided in two categories in the following way: - The right button is used for menu selection. In addition to this, certain object creation procedures can be cancelled by clicking the right mouse button. - All the other actions are done using the left mouse button, such as drawing. Remember: Left mouse button is abbreviated as , and right one as . Most of the actions in REAL 3D can be performed by menu selection in a way which is defined by the Workbench user interface: to select a menu item, press the right mouse button, point to the menu bar, then point to the desired menu item and release the right button, The highlighted menu item is the one which is being selected. You can experiment by selecting Extras/Refresh/Wire-frame. The program replies by redrawing the display. Also, menu multi-selection is supported: to select several menu items at the same time, keep the right mouse button down and select the menus with the left mouse button. The multi-selected actions are executed in First In First Out order (FIFO). Note that each window type may have its own menu system which may be different from other windows menus, and some windows may have part of the menus inactive. For example, it is not possible to select the function View/Render/Window when a "select" window is active. You must have a "view" window active (selected). In this manual menus are represented in the following way: - Menu/Item. - Menu/Item/Sub-item. For example: Create/Visibles/Sphere. Instead of using menus, most functions can be activated using keyboard equivalents (Hot-Keys) or tool window icons. When using the left mouse button, use sharp clicks instead of keeping the button down and moving the mouse. Left mouse button dragging is reserved for certain point selection functions. For example, when shaping a rectangle, click on the top left corner, and then release the button. Then you may freely move the mouse, or even select some menus, or have a cup of coffee. When you are certain of the position of the bottom right corner of the rectangle, click a second time in the desired place. When modelling objects with exact coordinates, it may be difficult to obtain high enough accuracy using the mouse. In such a situation, you can replace left mouse button clicks using either the vector stack or a measuring window. These will be described in detail later. Left mouse button "dragging", moving the mouse while keeping the left button pressed, has some special functions in REAL 3D. If you try this in the view window, you see that a box is shaped according to the mouse pointer movements. - TUTORIAL 1.2 - By default, the average is projected to the input plane, which is the plane in 3D space along which the coordinates run when you move the mouse. If you want to consider only the points of the selected objects instead of the whole scene, keep the key pressed when dragging. The other important combinations are: - , which pushes the points inside the drag box onto the vector stack. This operation does not project the average into the input plane. - , which creates a point group for point editing of freeform objects. Although the averaging operation is simple, it is very useful. Using this feature, you can easily lock the mouse coordinates to any existing point when modifying or creating an object; just drag the box around the one single point. The following examples demonstrate how the dragging feature can be used. Try these examples if you are already familiar with the software. (come back to these later, once you've learned the basics) To lengthen a cylinder: 1 . Activate the cylinder and select the Extend function. 2. Drag a box around the points of one end of the cylinder. 3. Drag a box around the other end. 4. Extend the object. To create a circle precisely in the middle of another circle: 1. Select the circle creation function. 2. Drag a box around the points of the circle; this defines the middle point of the new circle. 3. Define the radius. To move a triangle so its top will be in the middle of an edge of a rectangle, assuming that the two objects do not lie originally in the same plane: 1. Activate the triangle and select the Move function. 2. To ensure the operation is done correctly in all three dimensions, press and drag a box around the top point of a triangle; this puts the top point to the vector stack. 3. Hit . (right-Amiga-period). This pulls the true 3D coordinates of the triangle top from the vector stack. 4. a box containing the two end points of the desired edge of the rectangle. 5. Hit. 1.4 BASIC TERMINOLOGY The term "object" in REAL 3D is used to describe all the items which are stored in the hierarchy. Objects take many different forms, depending upon their purpose. Not all objects have wire-frames, and some with wire-frames do not have a visible surface when they are rendered. Some objects cannot be seen at all, except as a name in a select window. There is one special class of object, which you need to know about, called a "primitive". A primitive is the most basic kind of object. In the REAL 3D universe, a primitive cannot be divided into smaller sub-objects. They are a bit like the fundamental particles of matter. Objects can be made from primitives and even other objects. One final point of terminology; a primitive is an object, but not all objects are primitives. - TUTORIAL 1.3 - If no special keys are pressed while dragging, the program calculates an average of all the points of the scene inside the dragged box, and moves the hot-point to the average point. There are six main classes of primitives, but you will only look at the first four in this chapter. Most of these types also have some sub-types. visibles - These primitives produce a visible surface when rendered unless you take some action to alter their basic nature. structures - These primitives have no wire-frame and do not render, but despite that, they are in many ways the most important kind of primitive in the hierarchy. Structures control how other primitives are arranged and accessed by all the different functions of REAL 3D. controls - Although these have wire-frames, they do not have any surface and so do not render. As their name implies, they are used for controlling the action of various REAL 3D functions. freeforms - A collection of points describing a free-form line or surface is called a freeform in REAL 3D terminology. This may seem a little confusing at first, but as you work through the tutorial, how, when, and where to use each of these objects will become clear. 1.5 TUTORIAL EXAMPLE 1: SELECT WINDOWS AND HIERARCHY All the objects created by REAL 3D consist of so called primitives. These are the basic components and tools from which you can construct more complex objects. To create a primitive "rectangle": 1. Choose the menu Create/Visibles/Rectangle. 2. Move the mouse pointer to a desired location and click the left button. 3. Now you can shape the rectangle by moving the pointer. 4. Click the left button, and REAL 3D creates a primitive "rectangle". Now the view displays a rectangular wireframe. You can look at the rectangle from different directions using cursor keys, or X for (front view), y for (side view), or z for (top view). The rectangle is a plane, and therefore it appears as a line when you look at it from the side. You can also see a peak perpendicular to the rectangle. The purpose of this peak is explained in the context of Boolean operations. Remember: x means that you first press the right Amiga key down, then you hit "x" key, and then you release right Amiga key. You can see the logical structure of your object in the select window. Your scene "Root" consists of one single primitive, "rectangle". If you now move the pointer on the name "Root" and click the left button, you can see the name being highlighted on the instruction window as an indication of the selection. Figure T1-1: Select Window (PICTURE: T1.1) The names "Root" and "rectangle" are printed in different text types in the select window: "Root" is written with bold typeface, and "rectangle" is in normal type. The bold or normal gives an indication that the objects are of different "types" i.e. "Root" is a hierarchical object having a substructure, whereas rectangle does not have any sub-hierarchy. - TUTORIAL 1.4 - The object type, which "Root" represents, is called a level in REAL 3D. REAL 3D uses levels to collect the parts of an object into groups. It is possible to select and modify very complex levels without having to deal with their substructures. For example, if you have grouped all the parts of a robot arm under one single level "robot arm", then you can rotate the whole arm, and there is no need to pay any attention to each finger etc. A well known example of this kind of a hierarchical data management are disk operating systems: the level "Root" corresponds to a directory in DOS, and the counterpart of the object "rectangle" is an actual DOS file. 1.5.1 The Current Level Next we will study some basic functions of the select window. For this, we need an object hierarchy which is a bit more complex: 1. Select menu Create/Structure/Level. A new level appears in the select window: Root rectangle level The new level was inserted after the rectangle, to the same hierarchy level as the rectangle. This happens because "Root" is the so called current level. Each select window stores the information of its own current level, and the program inserts new objects under the current level of the select window which was used last. This global object insertion level is called the current level. It is quite simple once you experiment a little. To change the current level: 2. Move the mouse pointer on the name "level" on the select window and Double-click . The contents of the select window should change to display "level" only. Now "level" is the current level, which can be seen in the following way: 3. Select menu Create/Visibles/Sphere, click once in the middle of the view, shape a circle and click again. This adds a new primitive to your hierarchy. The select window displays: level ellipsoid This means the sphere was inserted under "level", not immediately under "Root". The whole hierarchy is: +------+ | Root | +------+ / \ +-----------+ +-------+ | rectangle | | level | +-----------+ +-------+ | +----------+ |ellipsoid | +----------+ The same structure can be described using indentation: Root rectangle level ellipsoid or graphical presentation: +-------+ | level |--- /+-------+ \ +-----------+ / \| ellipsoid | +------+/ +-----------+ +-----------+ | Root |--| Rectangle | +------+ +-----------+ Figure T2-1: Simple Object Hierarchy - TUTORIAL 1.5 - All three methods are used throughout the manual, depending on which one is the most convenient. If you double-click name "rectangle", the result of the action is highlighting the name of the object in the select window. This is because the object "rectangle" represents the lowest level of the hierarchy, and there is no substructure to be displayed on the select window. To change the current level back to "Root": 4. double-click the topmost item, "level", on select window. Now the contents of "Root" level are displayed again. You are now on the top of the object structure hierarchy, and if you double-click "Root", nothing happens. If "Root" had been a part of a larger object, then you could have moved one step upwards in the hierarchy, and REAL 3D would have revealed all the objects in the same hierarchy level as "Root". 1.5.2 Object Multi-selection Next we will experiment with modifying an object. But first, since we are going to consider multi-selection, continue with the previous example by creating one more primitive (make sure that "Root" is the current level): 1. Select Create/Visibles/Cube and shape a cube just as you created the rectangle. The size and position of the cube doesn't matter for this example. So, now you have the following hierarchy: Root rectangle level ellipsoid cube To move the cube to another position in space: 1. Select the cube by clicking its name on select window. Note: After creating the cube, it should be automatically selected, unless Settings/Creation/Auto _selected feature is switched off. Clicking the name again to re-select it does no harm. 2. Choose the menu Modify/Linear/Move. 3. Move the mouse pointer, for example, to the middle of the cube and click the left mouse button. 4. Move the cube to a new location and click. Note: Right mouse button cancels the modification. Now experiment with multi-selection: 5. Move the mouse pointer over "rectangle" on the select window, press and keep down, move the mouse down until all the three names under "Root" are highlighted, and release the . 6. Repeat the Move function and verify that all the three objects you selected are moving. Multi-selection can also be accessed in the following manner: 7. Click on select window below all the names in order to deselect all objects. Highlighted names now become normal. 8. Press key down and keep it there. 9. Click the name "Rectangle". 10. Click the name "level". 11. Click the name "cube". 12. Release key. - TUTORIAL 1.6 - Again, you multi-selected the same three items, this time one by one. The next test explains another useful trick: 13. Press key down and keep it there. 14. Click the name "level". 15. Release key. This deselects "level". This way it is possible to deselect individual objects which you have selected by mistake without starting the whole selection process from the beginning. To finish this example, do the following: 16. Multi-select the three objects in "Root" level as you did before. 17. Select Modify/Structure/Delete. You have deleted the scene of a rectangle, sphere and cube. Note: You cannot delete the root object. Summary: REAL 3D uses a hierarchy tree for describing and managing the structure of the scene. There are two important concepts related to the hierarchy tree: - The Current Level, under which new objects are inserted - List of Selected Objects, which defines the target of object modifications. 1.6 TUTORIAL EXAMPLE 2: 3D MODELLING In this example, we create a simple table. The example demonstrates how to use object hierarchy, and especially the principles of 3D modelling. The table consists of a cover and a base, and the base consists of two stands and a brace. We will create the table only using cubes. The following picture illustrates the structure of the table: Figure T1-3: Table (PICTURE: T1-3) You can continue modelling this example from the situation of where the last example ended, or start from new. You have the standard 3 window configuration and no objects built yet. You may also select Project/Project/New or restart the program before commencing. We start building the table by creating the hierarchy level, which contains all the parts of the table: 1. Choose Create/Structure/Level. 2. Choose the menu Modify/Properties/Name. A requester is opened. 3. Write the name "table" and hit or select OK. Figure T1-4: The Name Input Device (PICTURE: T1-4) - TUTORIAL 1.7 - To create the cover of the table: 4. Open a palette window: use Project/Windows/Palette or hit p. 5. Choose a nice color for the cover by pressing down on the color bar of the palette window. When a good color is found, release and click the OK gadget. Then close the window using the standard window close gadget. 6. To ensure accurate positioning, select View/Grid/Snap to Grid. From now on, mouse coordinates are rounded to suitable intervals, and it becomes easy to line up objects. 7. Activate the view window by clicking it and hit e. Now you've got the standard front view. 8. Hit z. Now you've got top view; now click in the middle of the view. This moves the hot-point to the middle and guarantees that the third coordinate (z-coordinate) will be correct when you do front view modelling. (you have defined the z input coordinate). 9. Go back to front view by hitting x. 10. Choose Create/Visibles/Cube, and shape a low but wide cube to represent the cover as it is seen from the front. ---------------- Figure T1-5: Front View of the Cover of the Table. 11. "Cube" is not a good name for the cover of the table, so change it: choose the menu Modify/Properties/Name. Enter the name "cover" and hit . Now you have created a table which consists of a cover only. Now lets create an object "base": 12. Choose Create/Structure/Level. 13. Choose the menu Modify/Properties/Name, enter the name "base" and hit RETURN. Your table now consists of a cover and a base. Next we will start to build the base, but remember that we have to instruct the program to insert the new objects under the "base" level: 14. double-click the name "base" on the select window. This changes the current level to "base", and the contents of "base" are displayed. As it was shown in the previous chapter, as long as the current level is "base", every new object or primitive you create will become a part of the base. Now the hierarchy is: +------+ | Root | +------+ / \ +-------+ +------+ | cover | | base | +-------+ +------+ The base is a hierarchy level, which so far has nothing in it. To create a stand for the table: 15. Choose Create/Primitives/Cube and shape a narrow, high cube to represent a stand, as shown below. ---------------- | | | | | | Figure T1-6: Front View After Step 15. 16. Rename the new cube as "stand1" by choosing Modify/Properties/Name. The stands of the table are identical, therefore you can create the second stand by using the duplicate function: - TUTORIAL 1.8 - 17. Choose the menu Modify/Structure/Duplicate, having the stand as the selected object. 18. Move the copy to the right place by choosing Modify/Linear/Move. ---------------- | | | | | | | | | | | | Figure T1-7: Front View After Step 18. As you have seen, REAL 3D automatically gives names to primitives according to their types. This is handy when you are making a relatively small object, and therefore it is easy to identify the different parts of the object. Anyway, it is usually wise to give a name to each part of the object which describes its purpose. Therefore: 19. Choose Settings/Creation/Qry Prim. Name. 20. It is best to create the brace of the table using side the view, so hit y. 21. Shape a narrow, high cube in the middle of the stands (see figure below). When REAL 3D asks the name of the primitive, type "brace". ----------------- | | ----------------- | | | | | | |brace | | | | | | |_| | | | |_______________| Figure T1-8: Side View After Step 21. 22. Also, the cover of the table should be modified so it becomes wider than the stands. The side view you have now is suitable for this: change the current level back to root and select the cover. Then select menu Modify/Linear/Move and move the cover slightly (e.g. 2 grid units) to the left. 23. The cover is too narrow, so select menu Modify/Linear/Extend. Then click on the top left corner of the cover and then on the top right corner - when you move the mouse, you see that the cover width is changing accordingly. Move the mouse e.g. 4 grid units to the right from the original top right corner, so that the right edge reaches out over the edge of the stands as much as the left edge does. ----------------- | | ----------------- | | | | | | | | | | | | | |_| | | | |_______________| <------- move ----------------- | | ------------------ | | | | | | | | | | | | | |_| | | | |_______________| extend -------> --------------------- | | --------------------- | | | | | | | | | | | | | |_| | | | |_______________| Figure T1-9: Modifying the Cover. Now the side view shows the correct shape. But there are still some things to do: 24. Hit x to get front view again. - TUTORIAL 1.9 - The brace cube probably doesn't fit between the stands properly. So: 25. Select the brace object again using the select window. 26. Move the brace so its left edge matches the inner side of the left stand. 27. Extend the brace just as you extended the cover earlier, until it matches the stands (See the figure T1-3). 28. Use the cursor keys to find a good viewing angle and select View/Render/Window or hitr. Now the table is ready. The final hierarchical structure of the table is the following: +------+ | Root | +------+ | +-------+ | table | +-------+ / \ +-------+ +------+ | cover | | base | +-------+ +------+ / | \________ / | \ +--------+ +--------+ +--------+ | stand1 | | stand2 | | stand3 | +--------+ +--------+ +--------+ Support example: Examples/Objects/Table. In the example, we named the objects so that the name of an object described the purpose of it, to make the identification easier. If your model includes several objects of the same name, you can identify them according to the order you created them; the first object you created is the topmost in the select window. If you don't remember which one you created first, there is one further way to select primitives: a box containing the points of desired primitives. This operation pushes the points included in the drag box onto the vector stack of REAL 3D. If dragging was successful, you should see the points marked with a cross symbol. Then press , and selection happens. You can check which object is the active one by hitting key. The wireframe of the selected object will flash. In the next paragraph, we will modify the table in different ways so you can get some idea of REAL 3D's powerful hierarchical object oriented construction method. 1.7 MODIFYING Now you already know how to use some modification functions. You also know that modifications are done to the selected objects. You can select any part of the table and modify it, regardless of the complexity of the modification. We can continue to modify the table of the previous example (You can load the file Project/Project/Replace Examples/Objects/Table). To move the brace of the table: 1. Select "brace". 2. Choose the menu Modify/Linear/Move and move the brace. To move the whole base: 3. Select "base". 4. Hit the key "m" (move) which is the default keyboard short-cut for Move function and move the base. If the table seems to be too high: 5. Select the whole "table". 6. Select Modify/Linear/Stretch, click on the top left corner of the table, then click on the bottom right corner of the table. Then move the mouse until the shape is desired. - TUTORIAL 1.10 - You can also rotate the table with the Modify/Linear/Rotate function, or change the size of it using Modify/Linear/Size function. The Mirror function inverts the object with respect to an axis defined by you. If the result of a modification was unexpected: - Select Extras/Undo or hit u key. - The Undo-function restores the situation to the situation before the latest action. Actually, the depth of undo buffer is 3 by default, so you can undo three steps backwards. It is possible to change the undo depth to other values using the Settings/Undo/Set depth function, but remember that the greater the value, the more memory is required. You can also relocate the table by choosing Modify/Linear/Move COG. This function moves the target to a given point using the so called COG point of the object (COG = Center of Gravity). Every primitive you create has some default value for COG. For example, the COG of a ball is its middle point. You can redefine the COG point by the function Modify/Properties/ COG. To move a stand of the table to the bottom left corner of the window: 1. Select a stand. 2. Choose Modify/Linear/Move COG. 3. Click the view near the desired place. 4. Move the pointer to the desired place and click the left button. To modify the color of the table cover: 1. Select the cover. 2. Open the palette window (p). 3. Select the palette window menu Project/Fetch. The color of the cover is read and displayed in the color square above the OK gadget. Also the RGB sliders are adjusted accordingly. 4. Modify the red component to 100 by moving the R-slider. 5. Click OK. This changes the current color. 6. Activate the view window and select Modify/Properties/Color. This writes the modified color back to the cover. Move, Rotate, Color and Stretch are functions which affect only the physical structure of the table. Next we turn to functions which change the hierarchical structure. In fact, you already know some, namely the Delete and Duplicate functions. The hierarchical structure of the table created in the previous example seems to be quite a logical one. The stands are a part of the base, but the cover is not. Anyway, you can move the parts of the table in the hierarchy tree, just as you can move files and directories in DOS to new directories. If you want to move the cover to be a part of the base: 1. Select "cover". 2. Choose Modify/Structure/Cut. 3. Double-click the level "base" on select window, so it becomes the current level. 4. Choose Modify/Structure/Paste. You have modified the hierarchy of your table to be as follows: Root table base stand1 stand2 brace cover - TUTORIAL 1.11 - If you don't want any part of the table to belong to the base: 1. Multi-select stand1, stand2, brace and cover. 2. Choose Modify/Structure/Cut. 3. Double-click the name "base" on top of the select window; the window changes the current level to be the parent level, "table". 4. Choose Modify/Structure/Paste. If you want to move the base now, you won't move any of the parts of the table. The base is now empty, and the structure of the table is quite peculiar. Root table stand1 stand2 brace cover base As a final example of modifying object hierarchy, we consider the use of two select windows. As it has been mentioned, each select window has its private current level, which becomes the global current level when you activate it. You can use this feature in the following way: 1. Open a second select window. 2. Set the current level of the original select window to "base". 3. Set the current level of the new select window to "table". 4. Activate the new select window. 5. Use Create/Visibles/Sphere to create a new primitive. It appears under "table" level in hierarchy. 6. Activate original select window and create another sphere. It appears under "base" in hierarchy. 7. Drag multi-select the objects under "table" using the new select window, which still displays those objects. 8. Select Modify/Hierarchy/Cut. 9. Activate the old select window. 10. Select Modify/Hierarchy/Paste. The objects are pasted under "base". As you see, you can use multiple select windows to quickly access different parts of the hierarchy. 1.8 SAVING AND LOADING An object you have created, or any part of it, can be saved on disk and later be recalled to be used again. For example, to save the table you created before to the directory "Objects" of drawer R3D2: 1. Select "table". 2. Choose Project/Objects/Save. A device will then appear on the screen. With the file requester, you can define all the names and paths that REAL 3D needs to load and save data. In the device, you can see a DOS directory. Using the mouse, you can select any of the names moving in the directory tree until you have reached the directory you want. Then you can type the name to save the object with to the "File" field in the lower part of the device. Naturally, you can also select an existing file. In this case, the old contents of the file will be overwritten. Similarly , you can type any name in the file field with its directory path regardless of which directory is shown in the device. Continue saving with the following actions: - TUTORIAL 1.12 - 3. Click the drawer name "Objects" on the file selector, unless "Objects" is already displayed (check the drawer field). 4. REAL 3D already proposes the name "table" in the File field, so choose OK. In the same manner, you may want to insert the name and object "table" in a scene from the "Objects" directory of r3d2: 1. Make the object in which you want to insert the table (for example a garden furniture set) the current level. 2. Choose Project/Objects/Insert. 3. Select the drawer "objects" and the file "table" from the file requester and choose OK. If the object is found, it will become a part of the garden furniture set. The table is now the active object, so you can modify it in various ways, for example, move it to an appropriate location. Note: If you save on object to an existing file name, REAL 3D gives a warning to guard against mistaken overwriting, unless the Settings/General/ Confirm_save gadget is deactivated. The third entry in the Project/Objects menu: Replace, replaces the whole object hierarchy starting from root with the new one loaded from the disk. Where as Insert, inserts the loaded object to the old object structure. Most other IO menus include a similar group of three functions: Insert, Replace and Save. They work in a similar way: Save is for saving to disk, Insert adds new data to the current project, and Replace replaces the current data with the one loaded from disk. Note: REAL 3D binary format is an IFF type collection of different data sections. This means that a file can contain both objects and materials, but you can only load the objects from it using Objects/Replace or Insert. When replacing Projects, you can define the sections which you want replaced from the file. For example, if you Project/Project/Replace from a file which does not contain an environment section, you do not lose your current user interface definition. Also, you can specify which sections you want replaced by using Project/Project/Replace Sections. When you create objects, it is advisable to compose them of reasonable sub-objects, which can be saved to appropriate sub-directories. Although this means more work in the beginning, it does allow you to create libraries of reusable objects. 1.9 VISIBLES The examples presented earlier already have explained how to create some basic visibles. The main classes of visibles are: - Flat planar visibles - Polygonal visibles - Cylinders - Cones - Ellipsoids - Hyperbolic visibles REAL 3D includes a variety of tools for creating these visibles. Also, tools for creating sector versions of most visibles are included. Thirdly, the so called compound tools combine visibles to obtain more complicated shapes. This chapter introduces some new visibles. The rest are described in the reference section. - TUTORIAL 1.13 - 1.9.1 Polygon/ Polyhedron/ Polymids With the polygon tool, you can create plane polygons. Use it in the following way: 1. Select Create/Visibles/Polygon. 2. Use the left mouse button to add new edge points when drawing a polygon. 3. You may undo the points one by one using key. 4. Right mouse button ends the function. 5. key cancels the function. Note that the edge curve of the polygon is closed automatically. Creating a polyhedron (extruded polygon) happens exactly in a similar way. Polymids are slightly different. A Polymid is a pyramid type of shape with a sharp top peak.A Cut polymid is the same shape with a cut top. Use the latter in the following way: 1. Select the menu Create/Visibles/Cut polymid. 2. First define the intersection shape of the object, in other words, the shape of the bottom plane of the object. You can do this in the same way as with the polygon tool. Use the right mouse button to end the shape definition. 3. Click the left mouse button in the position to which you want to place the first point of the polygon which forms the top cover of the object. 4. Now you can size the top cover by moving the mouse, and when the size is suitable, click the left button. 1.9.2 Sector Visibles As an example of sector visibles, we will create a cylinder sector, which is an useful shape for say 3D pie charts. 1. Select Create/Sectors/Cylinder. 2. Click in the center point of the cylinder. 3. Move the mouse until the distance from the center point is correct. Also, the line which the function draws defines one side of the sector, so direct it accordingly. Then click again. 4. Now rotate the mouse counter clockwise until the sector angle is desired. Then click. 1.10 COMPOUND TOOLS REAL 3D includes a set of special tools to ease creation of certain types of objects, such as objects turned in a lathe. Objects which consist of several primitives can be created fast and easily with these special tools. Compound tools have some advantages over freeform based creation methods: - They perform certain shape constructions very easily and quickly - They produce memory efficient models - Compound tool objects are fast to render - True volume representation is produced - Excellent rendering quality The disadvantage is the inherent geometric restrictions, although this is partly compensated for by the large number of different compound tools available. - TUTORIAL 1.14 - In the following, some compound tools are introduced. The rest work in quite a similar manner. Exact details can be found in the reference section of the manual. 1.10.1 Lathe To use the lathe tool: 1. Choose Create/Compound Tools/Lathe. 2. Define the direction of the axis of the lathe by selecting two spatial points with the mouse. 3. Then click the starting point and define the direction of the surface at that point by drawing a line segment. Click when the direction is suitable. 4. Now you can shape a curve. When the shape is suitable, click the left mouse button and shape the next curve. 5. If you want to make a sharp edge, use right mouse button to cancel the current curve shaping and then define the new direction. 6. Sometimes the smooth profile curve breaks because of precision problems in calculations. This can be avoided by defining the shape in shorter segments. 7. When the required shape has been defined, turning can be terminated by pressing the right mouse button twice. Figure T1-10: Candlesticks turned in a lathe. (PICTURE: T1-10) 1.10.2 Tube tools With the tube tools, you can create a continuous tube. The tools can be used, for example, for creating 3D fonts. The tube tools are divided into sub-classes according to the following properties: - Rounded edges/sharp edges ("rounded" option) - Constant radius/varying radius ("Conical" option) - Circular/rectangular intersection shape ("Circular/"Rectangular") - Automatic subdivision/no subdivision ("Subdivided" option) The tube tools use various primitives like cylinders, polyhedrons, and spheres to create the tube you define. For example, to use the rounded circular tube tool: 1. Choose Create/Compound Tools/Rounded Circular. 2. Define the diameter of the tube by shaping a circle. 3. Draw the tube in space as long as you want and then cut it with the button. As a second example of tube tools, we consider the Conical tube. With this tool it is possible to create spheres connected with cones. The result is a tube with a changing radius and rounded joints. For example, this tool is suitable for creating a robot finger. 1. Select Create/Compound Tools/Conical 2. Shape as many circles as needed. These circles define the joints of a finger. 3. End the joint definition by clicking the button. - TUTORIAL 1.15 - If you try the same with Conical Subdivided tube tool, you get more joints and smoother result. Try the previous example with the subdivision factor 5, just to see the difference. Figure T1-11: The Tube Tools. (PICTURE: T1-11) Top row: (IN PICTURE) Circular Subdivided, Rounded Circular Subdivided, Sharp Circular, Rounded Circular. Second row: (IN PICTURE) Conical, Conical Subdivided. Bottom row: (IN PICTURE) Rectangular, Rectangular Subdivided, Rectangular Conical, Rectangular Conical Subdivided. 1.10.3 Rounded Polygons and Polyhedrons Compound tools include functions for creating polygons and polyhedrons with rounded corners. They are handy for example for logotype creation. You can use all the four tools in a similar way as when you created the polygon, but the tool automatically rounds the corners. "Rounded" tools use fixed maximal rounding radius, whereas "Ellipsed" tools round the corners all the way to the middle of each edge. The following figure shows example shapes created with the tools. Figure T1-12: Rounded Polyhedron (left) and Ellipsed Polyhedron (right). (PICTURE: T1-12) 1.10.4 Object-Pixel Tool The object-pixel tool is a very powerful link between two and three dimensional computer graphics. The idea is to easily and quickly obtain complex 3D solid objects by replacing the two dimensional pixels of a picture with some three dimensional objects, such as spheres. When using the pixel tool, the user can define which object replaces the pixels. Only the pixels which have some other color than the background color (color 0) are replaced, and the colors of objects created are the same as the colors of the pixels. With 24 bit and HAM images, all the pixels are replaced. For example, you can create 3D text using the usual 2D fonts. There is a wide variety of different fonts available, and furthermore, there are an infinite number of ways to define the object with which the pixels are replaced. For the creative user, pixel tool offers an excellent method to produce 3D pictures and animations. It is especially handy for producing particle groups for particle animations (text which is exploding etc.). - TUTORIAL 1.16 - To create text with the pixel tool: 1. Start a paint program, choose a suitable font, write the word "Real", define a brush containing the word and then save the brush for example, to the RAM disk. 2. Create, for example, a small sphere in REAL 3D. Make sure that it is selected. 3. Choose Create/Compound Tools/Object-Pixel Tool. Now the file selector is displayed, and you can select the brush you saved to ram disk. 4. Next, you can define the size and location of the object which will be created by shaping a rectangle in a view window. 5. When the object is created, you probably don't need the original sphere any longer, so delete it. Figure T1-13: Text Created with Object-Pixel Tool. (PICTURE: T1-13) Note: Pixel tool tends to create a "heavy" object. For example, in a paint program a brush of 30 times 30 pixels looks very small, but it includes 900 pixels. A slightly larger brush, say 80 times 80 pixels, includes 6400 pixels already. This may lead to memory problems. 1.11 LIGHT SOURCES A light source is a primitive which radiates light of its own color. If the primitive is black, it does not radiate light at all. A white object radiates all the main components (R,G,B) of light in the same amounts. In real life, it is usually very difficult to observe objects in lighting which has only one wavelength. Also, there is not any material which would reflect only one wavelength . In REAL 3D, all this is possible, so you should be careful when selecting the colors of light sources. For example, a totally red object is not visible at all under blue lighting, because a red object does not reflect any blue light. A violet object looks red under yellow lighting. Usually, it is advisable to create white light sources, so all objects will be rendered in their "true" colors. Although the number of light sources is unlimited, they should not be used indiscriminately. The time taken by rendering is greatly dependent on the number of light sources. In the next example, we will test different light sources. The example includes a cylinder floating above a rectangle (floor), and two light sources casting shadows onto the floor. 1. Reset the view window by activating it and then pressing e. 2. Take a top view by hitting z. 3. Create a rectangle (Create/Visibles/Rectangle), almost filling the whole view. 4. Create a cylinder (Create/Visibles/Cylinder) to the middle of the rectangle. 5. Select a suitable current color for the light sources using palette window. Pure white (255,255,255) is a good choice. - TUTORIAL 1.17 - 6. Choose Create/Light-sources/Point and click on the left side of the cylinder. 7. Choose Create/Light-sources/Wall and shape a small square to the right side of the cylinder. 8. Go back to front view by hitting x. 9. All the objects lie at the same level. Select the rectangle and move it to the bottom, select cylinder and move it above the rectangle. Select the light sources and move them well above the cylinder. 10. Hit s to get the Render settings requester. When it opens, set Mode to Normal and click OK. 11. Adjust the viewing angle with the cursor keys and hit r to render. Now you should see the shadows of the cylinder on the floor. The edges of the shadows from both lights appear both to be sharp. Do this to see a soft shadow: 12. Open render setting requester again (you can do it while the program is still rendering!) and adjust the Lightsamples slider at the right side of the requester to the value one. Then hit OK. 13. Hit r to re-render the view. Support example: Examples/Objects/lightsources This time, one of the shadows has a smooth edge. Rendering is much slower (about 4 times), but probably the extra realism is worth the time penalty. You can adjust the size of the smooth area on the shadow edge by increasing the size of the wall light source. Nevertheless, you may then have to increase Lightsamples level respectively, which again slows down the rendering. So, the smoother the shadows, the more calculations and rendering time is required. Figure T1-14: Light Source Test Scene (PICTURE: T1-14) 1.11.1 The Brightness of Light Sources When you create light sources, you don't have to worry about their brightness; the program will scale their intensities to a suitable level, and fine tuning can be done by settings of the solid model. You can set the relative brightness of various light sources by giving them suitable colors. A lamp having lower values for RGB components has a lower light intensity than a lamp which has higher RGB values. These differences will be preserved in automatic scaling. The automatic scaling of light intensities can be thought of as being analogous to the automatic exposure functions of a camera, where the exposure level is based on the overall brightness of the picture. Notice that if you position a light source near an object, there will be a great difference in light level (in other words contrast is high). If you illuminate the object from a distance, the light falling on the object will be much more evenly distributed. A good example of this phenomenon is the comparison of sunlight and lamp light. If you place a lamp near an object to act as a spot light, and another further away to give ambient light, the latter should have much higher intensity than the former to produce any visible effect. - TUTORIAL 1.18 - Light sources don't show directly in shaded pictures. So, if you want to see lamps or reflections of the light source on reflecting surfaces, you must put a cover made of, say, matt glass around the light source. This is just like in the real world! You may find it useful to save some suitable light sources as objects to disk so light sources can be brought to use as the need arises. Nevertheless, if you want to produce a ray traced picture of an object, you don't always have to create light sources. The rendering unit of REAL 3D includes some fast ray tracing modes in which one light source is created automatically. For more information, see the chapter on Rendering. 1.12 MACROS The macro facility, an important feature of REAL 3D, is very useful when you must execute the same modifying operations to a large number of objects. A macro is a series of modification operations which the user can define to best suit his/her needs. Macros can be stored to hard disk, bound to keyboard short-cuts, and made into tool window icons. They can later be executed on any object. Macro definition is started by the operation Record. The current macro, usually automatically stored as t:macro.rpl, is deleted. After this, all these new operations are stored in the t:macro.rpl file. These operations include all functions of Modify/Linear, Modify/Structure, and Modify/Bend functions. When the macro has been fully defined, the recording is stopped by selecting Record again. An example of macro definition: 1. Create an object. 2. Choose Project/Macros/Record. A checkmark will appear in the menu showing that macro recording is active. 3. Flatten the object with the Stretch function. 4. Rotate the object with the Rotate function. 5. Move the object with the Move function. 6. Choose Projects/Macro/Record again. Now you have defined a macro which consists of three modifying operations. To execute the macro: 1. Select the object to modify. 2. Choose Project/Macros/Execute Current. If you want to execute the macro 20 times: 1. Select the object to modify. 2. Choose Project/Macros/Repeat Current. 3. Type 20 into the requester, then click OK. This is a very powerful method for creating symmetrical objects. As an example, let us create a set of ball bearings: 1. Create a sphere with a suitable size and place it near the top of the view window. 2. Select menu Project/Macro/Record. 3. Modify/Structure/Duplicate the sphere. 4. Modify/Linear/Rotate the sphere around the center point of the view. 5. Select menu Project/Macros/Record. 6. Select menu Project/Macros/Repeat Current. 7. Estimate the number of spheres needed to form the entire ball bearing and enter this value. - TUTORIAL 1.19 - Figure T1-15: Ball Bearing Macro (PICTURE: T1-15) Spread macro is another useful macro feature. It spreads the macro over the selected objects, incrementing the number of macro repetitions by one after processing each selected object. Try the following with the spheres you created in the example above: 1. Multi-select all the spheres. 2. Select Modify/Linear/Move COG, and click twice in the middle of the view. The result is that all the spheres are collected to the same position. 3. Select Project/Macro/Record. 4. Still having all the spheres multi-selected, move the spheres to the right, half the diameter of a sphere. 5. Select Project/Macro/Record to end the macro. 6. Select Project/Macro/Spread Current. If you repeated the steps correctly, you got a horizontal row of spheres. You can save the macro by using Project/Macros/Current to Named function (or by copying/renaming t:macro.rpl with a suitable name). Current macro is just an ascii file stored in system t: directory. It is a small RPL program, and you can edit it with any text editor. You can also pick any RPL program/macro and execute it using the menu Project/Macro/Execute Named. There is also Named_to_Current function, which makes a given macro the current one, so you can use it with the repeat and spread functions. - TUTORIAL 1.20 - Chapter 2 THE ENVIRONMENT ------------------------- 2.1 ASYNCHRONOUS ACTION REAL 3D makes extensive use of the Amiga multitasking operating system. This helps make using the software more comfortable, faster, and consequently more productive. The user interface is designed using the "zero wait state" principle: even if the user starts a time consuming process, the program continues to monitor the users actions and gives immediate responses. In REAL 3D, this happens by the asynchronous execution of multiple tasks. The following test demonstrates this: 1. Use Create/Compound tools/Circular subdivided to create a tube; use at least 10 clicks to define the tube shape and use 10 subdivisions. This should create a rather complex object. 2. Activate a view and select View/Render/Window. The program starts shading the window. 3. Now immediately select another creation function; create a sphere, and start shaping it in the view which is still rendering. It is possible to initiate new tasks even though the program is redrawing the window. Another useful test can be opening more views and then selecting Extras/Refresh All/Ray Trace: Views are rendered independently of each other. If you try Modify/Linear/Move to move the tube, you will see another zero wait state feature: even though the wireframe is complex, REAL 3D responds to your mouse moves easily. Note that certain functions can momentarily block your actions. For example, IO functions (saving and loading). Secondly, modal requesters, such as render and drawing settings block the view where they are opened, but other windows are still fully available. For example, if you are defining the render settings for a View window and you need to open the Palette window, activate a Select window and open the Palette window from it. One very useful technique which utilizes asynchronous action is material editing. When testing materials, you can open a material window, edit a material, and then activate the rendering of a view without closing the material editor. While the rendering proceeds, you can edit the material library and restart the rendering as soon as the changes are made. Especially useful is the technique using "Box" rendering (see the chapter "Rendering") where you can very quickly and interactively test critical materials in their correct environments. 2.2 SCREENS REAL 3D supports all Amiga display modes for the user interface display. If you select the menu Project/Environment/Open screen, a requester is displayed which will include the, display modes which are supported by your workstation. You can adjust your display with the folloWing options: The Color gadget slider allows you to select the number of colors to be used for the screen display. The minimum value 1 allows two colors, and the current maximum value of 8 allows 256 (or more in HAM) colors. - TUTORIAL 2.1 - The greater the depth, the more chip memory the display requires. Also the display updating slows as the screen depth increases, but on the other hand, shading quality is improved. Width and Height gadgets define the size of the screen in pixels. When you select a screen mode, the dimensions are updated automatically to the system default values, but you can modify them freely. If you specify larger than default dimensions, a virtual screen is automatically opened. You can also give a name to the screen you open. The name can be used for example in the Animation window when rendering animations; you can specify which screen should be saved using the name. Furthermore, the HAM gadget and overscan selectors are included. Note that not all the mode combinations are possible at the same time. You will get an error message if a mode is incompatible. REAL 3D can operate on multiple screens simultaneously. The user can freely create a multiple screen configuration. For example, you can have a HAM screen open for color shading and a fast four color HIRES screen for editing, with the ability to easily jump between them. You can edit the screen palette using the Environment/Screen Palette function. The palette requester includes two built-in palette options: grey scale and color scale palettes. They are both optimized for ray trace rendering, but you can adjust them slightly without loosing shading quality. Also, you can re-arrange the order of the colors freely. Ray trace shading with color scale palette on non-HAM screens works properly only if the screen depth is at least 6 (AGA machines). If you use the color palette, you have to activate the Render settings/Color shading menu function in order to get proper results. You can change certain screen properties using the screen window of REAL 3D; for further details, see the reference manual. 2.3 VIEW WINDOWS The main purpose of the View window is visualization (seeing) the properties and the shapes of the models created by the user. Secondly, Views input coordinate data from the mouse in an intuitive way, making it easy to construct and modify objects. The whole modelling process can also be entered using written instructions in a RPL window, but the approach is much less intuitive. Using RPL written input can provide you with exact modelling precision if need be. REAL 3D supports a variety of different Amiga window types including borderless and superbitmap windows. Their usage is not restricted; the environment can be freely configured according to your personal preferences. Some suggestions: - The borderless window, because it fill the whole screen, is often used for the final rendering of animations. - The superbitmap window can be used for rendering selected parts from the scene, only the visible part of the window is shaded at once. - The window borders of normal Views can be removed using Project/Windows/ No Gadgets function. This gives more work space. - TUTORIAL 2.2 - 2.3.1 Projection Types For each View window, you can define the so called projection type. This type defines how the shape of the model is rendered to the window. If the type is Parallel, the scene is drawn as if it was seen from an infinite distance. When using this projection, you cannot see any perspectivity in objects, and visualizing the depth direction (the direction from your "eyes" toward the objects) can be more difficult than when using the perspective projection. Nevertheless, accurate modelling is easier. For example, a front view of a cube in parallel projection is a rectangle, and it is easy to align other objects with the sides of the cube regardless of their positions in the depth direction. If the type is Perspective, the objects can be seen in a natural perspective way which corresponds to normal cameras. In this projection, the View window area corresponds to the film in the camera; the film is perpendicular to the line from the camera to the point of focus of the camera. The perspective projection may be more appropriate in intuitive, less accurate modelling such as creating compositions from the camera view. It is normally used when the final images are rendered. Note that the rendering engine supports the rendering of both types of projections; the parallel projection the faster of the two to render. 2.3.2 Input &Output Planes The term "output plane" means the image plane to which the rendering algorithms project the shape of the model. You can consider the rectangular surface of the View window to be this plane; it is always perpendicular to the direction you are looking at through the View window in question. Each View window has its own private output plane definition, which can be also described as the "internal camera" definition of the View. This is presented in more detail in the next chapter 2.3.3. The term "input plane" means the plane in which the mouse coordinates run. For example, the input plane can be the XZ plane passing through the origin (the normal horizontal "ground" surface). When you move the mouse, the Y coordinate remains zero, and only X and Z vary. An intuitive way to describe this is: if an object is lying on the ground and the ground is the input plane (please forget the fact that the earth is actually spherical), you cannot lift an object above the ground by applying the Move function. You can just slide the object along the ground. The input and output planes can be the same or separate planes. In the previous "ground surface" example, the input and output planes coincide when you look at the ground directly from above or from below. But you can also use a perspective arbitrary view (perhaps the final camera view) while moving the object along the ground surface. Normally, both planes are automatically connected to each other so that when you adjust one (e.g. using cursor keys), the other follows. The following example shows how to disconnect them. - TUTORIAL 2.3 - 1. Activate the View, hit e and click in the middle of the View to move the hot-point (set by mouse click) near the origin. The hot- point will define the third "depth direction" coordinate of the input plane. 2. Select View/Drawing_Set, activate the "Abs Grid" gadget and select OK. This shows a grid pattern on the horizontal XZ plane, which is helpful when doing perspective modelling. 3. Hit z to get the top view. x, y, and z hot keys always set both planes to the same position. 4. Select Create/Visibles/Cube and create a cube. 5. Select View/Type/Perspective. Then select the View/Type/Separate IO menu. 6. Now use the cursor keys to adjust the View angle so that it is no longer directly from above. The output plane is rotated but the input plane remains unaltered. 7. Select Modify/Linear/Move, grab the cube and move it. The cube moves in the XZ plane and you see it growing when it comes nearer to the camera position. Figure T2-1: Separate IO (PICTURE: T2-1) The x, y, and z keyboard shortcuts set the input and output planes parallel to the absolute space axes, regardless if the Separate IO is selected or not. Cursor keys rotate and move the output plane only when the Separate IO is used. As it was already mentioned, the hot-point "+" which you can set by mouse clicks, also plays a role in the View IO system: the input plane always goes through that point. The input plane can be defined using the local coordinate systems of the objects. This enables you to edit the objects in their natural orientation. For example, if you want to stretch a cube which has been rotated several times and you stretch it in the absolute space orientation, the shape of the cube becomes distorted. To get a controlled modification, you have to set the input plane parallel to one side of the cube. The input plane can be set to the object coordinate system by using the function View/Input Crd./Obj. Space to View. To get the full advantage of this feature, it is recommended that you add a reference coordinate system to objects when originally creating them. Using the default orientation of the compound or freeform objects may not be accurate enough. The following example demonstrates this: 1. Create a level called "house" and add a cube (walls) and a triangular polyhedron (roof) under the house level to represent a simplified shape of a house. 2. Select Create/Controls/Coordsys, click in the middle of the house and shape a coordinate system primitive: set the three directions of the coordsys primitive parallel to the walls of the cube and press . If the coordinate system directions do not match the wall directions perfectly, adjust the coordsys using Modify/Linear/Rotate. - TUTORIAL 2.4 - 3. Now rotate the whole house to an arbitrary angle using Modify/Linear/ Rotate. Change the View angle using the cursor keys and rotate it again to make its orientation irregular. 4. Go back to the front view using x. Now the problem is how to make the house higher or wider? The solution is: 5. Select the coordsys primitive and select View/Input Crd./ Obj. Space to View. The view orientation is changed so that editing the house becomes easy using the e.g. Modify/Linear/Stretch function. 2.3.3 View Coordinates & Cameras Every View window includes a description of its internal camera system. This camera information includes the following items: - The position of the camera (viewpoint) - The point at which the camera is aimed (aimpoint) - The camera tilt angle - The scale factor (the angle of the lens) - Two depth of field factors. The View displays the objects according to this information. The depth of field information becomes relevant only when the scene is rendered using ray tracing. The camera information can be stored to the object hierarchy tree by creating a camera object. This makes it possible to animate the camera as any other object, for example: morph between key positions and attributes of the camera. The camera object can be created using the menu View/Camera/Create Camera. This function creates a new level, and puts two primitives, an aimpoint and a viewpoint, under it. They together include all the camera information, and the currently displayed situation on the view is stored to them. The camera object consists of two primitives in order to allow easy tracking of animated objects. For example, if the viewpoint primitive is placed in a moving car and the aimpoint primitive is in an airplane, the camera automatically follows the airplane regardless of the complexity of the motions involved. The purpose of the aimpoint is to define where the camera aims. It is very easy to move the aimpoint to any desired point in the scene and redirect the camera that way. Secondly, the distance from the viewpoint to the aimpoint defines the focal length of the camera in the depth of field rendering effect: objects near the aimpoint (and at a similar distance in general) are sharper in the image. The viewpoint primitive contains the rest of the camera information. For example, by rotating the viewpoint, you can adjust the tilt angle. As it was mentioned, every View window contains a full camera description internally. You can use the camera object consisting of the aimpoint and the viewpoint to store a suitable viewing angle more permanently. The following example demonstrates this: 1. Hit x to get a front view, and use Create/Visibles/Cube to create a cube (just something to look at). 2. Use the cursor keys to find a suitable viewing angle. - TUTORIAL 2.5 - 3. Select View/Camera/Create Camera. The carefully selected camera position becomes safely stored. 4. Hit z to get the top view, and create another cube. 5. Select View/Camera/Camera->View. You see the camera view again. 6. Adjust the view angle slightly using the cursor keys and "record" the adjustments to the camera object using View/Camera/View->Camera. This way, you can take the camera information from a camera object, modify it in the View and put it back. You can adjust the camera settings visually and interactively through the View. It is also possible to create multiple cameras. This feature can be used in the following ways: - You can store several "important" camera positions to multiple cameras making it possible to quickly check the scene from those critical positions during the model creation. - Multiple cameras are needed when animating the camera using the morphing method. - When designing your animation, it is possible to "take" from one camera position to the next similar to directing an actual movie set. When you want to take a particular camera view and you have multiple cameras, you can specify which one to use by selecting it and then selecting the menu View/Camera/Camera->View. When playing and rendering animations, it is sometimes necessary to specify, whether a View should follow motions of an animated camera or not. If you are using a camera object, it is useful to play the animation from such a point of view that the motions of the camera itself can be seen. Therefore, automatically taking the camera view during the animation play is not always appropriate. You can select the automatic usage of the camera view during animation play by selecting the toggle menu View/Camera/Camera View function. This selection is private for each View window: one View can follow the camera, while another one shows the animation from a fixed position. If you are using multiple cameras, you can specify which one to use in each window during an animation play from the camera view by adding the tag "SWND windowname" to viewpoints and aimpoints. Each window checks the hierarchy tree and chooses the first view-point and aimpoint it finds. The SWND tag makes the view or aimpoint window specific. NOTE: The Camera View function is used only during the animation play. It does NOT connect a camera object to the View so that the camera object follows cursor key adjustments. Instead, use the View->Camera function to store the adjustments to the camera. 2.3.4 Zooming and Positioning the View The visible contents of a View window, in addition to the camera position and orientation, also depend on the scale factor of the View. The scale defines the "lens angle" of the camera; it is a certain kind of a magnification factor. The bigger the scale, the bigger the objects appear on the display and the smaller part you can see of the total scene. Defining a small scale factor corresponds to using a fish-eye lens: the camera angle is wide, and a big part of the scene fits into the View even if the camera is close to the objects under observation. - TUTORIAL 2.6 - Note that in perspective View windows, the size in which the objects appear on the display, depends on two factors: - The scale - The distance from the camera to the objects There are no other factors involved. So, if you try to find a good camera angle in an interior room scene and the objects do not fit well into the picture, resizing the room does not help. The problem could be best solved by moving the camera and/or changing the scale. This is the same as real world situations. The camera distance does not matter at all on parallel projection Views. The scale alone defines the object magnification. To change the scale: 1. If you intend to enlarge an object on a View, choose the operation View/Display/Pos&Zoom In. 2. Then move the mouse pointer to that part of the View you want to enlarge. When you press the left mouse button, you can draw a rectangle on the screen. The region inside the rectangle will be enlarged so that it takes up the whole window. You can reduce the scale by choosing the operation View/Display/Pos&Zoom Out. Then you can define a rectangle that will, after reduction, contain that part of the space that is visible on the View when the operation was started. A quick way to change the scale is to use the - and + keys which correspond to the Zoom In and Zoom Out functions. Using the Position operation you can change the position of the windows in space. You can, for example, observe in detail an object that is on the edge of the space. To move a View window in space: 1. Choose menu View/Display/Position. 2. Grab an object and move it to any place you want. Instead of moving the object, REAL 3D moves the window so that the object will show in a different part of the window. The auto focus function offers a fast way to position and scale the View around the selected objects: 1. Select the desired objects. 2. Select View/Display/Auto Focus. The active View window will be centered around the objects, and the scale is modified so that the objects fill the window. If you want to reset the scale and the position of the View to the default values: 1. Choose View/Display/Reset or hit e keys. - TUTORIAL 2.7 - 2.4 WIREFRAME DRAWING SPEED The asynchronous design of REAL 3D normally means that the user does not have to pay much attention to wireframe refreshing of the View windows. In some extreme cases with very complicated wireframes, it may be necessary to control screen updates in order to obtain more speed. 2.4.1 Bounding Boxes When modifying objects, it is possible to use the Bounding Box representation instead of accurate wireframe drawing. You can select this method using the Modify/Draw mode menu. When the bounding box representation is selected and you select an object modification function, as soon as you click on a View, REAL 3D constructs a box shape around each selected object and uses the boxes to show the effect of the modification. The bounding box representation may be suitable e.g. when resizing a complex object; the new size can be seen immediately from the box shape, without the possible redrawing delays. 2.4.2 Refresh Modes You can speed up screen updates by choosing menu Settings/Refresh/Current. Then the program updates only the active View window. If the previous technique is not fast enough, select Settings/Refresh/ None. Then the program does not update at all. Settings/Refresh/All turns the normal automatic updating on. 2.4.3 The Visible Range of the Objects Often it is unnecessary to have objects drawn on the screen other than the object you are creating. For example, if you are creating a rocking chair inside a house, it is of no use to draw the house all the time. The house should be drawn only when the rocking chair is ready and can be positioned in the living room. In REAL 3D, you are able to allow only a portion of the object to be drawn which can be useful when creating complex scenes. The visible range of an object can be defined in relation to the current level. You can define the number of the parent levels of the current level to be drawn using the Settings/Oper. Level/Depth function, and by selecting Settings/Oper. Level/Active menu. If the Active toggle is unset, the whole project is drawn to the screen regardless of which level is the current one. If the Active toggle is set and the Depth is 0, only objects under the current level are drawn. 2.4.4 Other Methods - Using lower screen depth, for example 2 instead of 4, may speed up screen refreshing considerably. - Drawing speed of B-Spline objects can be adjusted using the View/ Drawing_Set function. The lower the Surface and Curve subdivision, the faster the updating. Control Polygon representation without Knots and Curves is the fastest method. - TUTORIAL 2.8 - - You can make individual objects invisible using the WF-invisible gadget of the Modify/Properties/Attributes function. If it is important to see some wireframe, add a visible cube with a suitable size to the same level and make it RT-invisible. Then it shows the size and the location of the invisible object quickly, but the "cube" is not visible when test rendering. 2.5 THE MEASURING WINDOW The measuring window can be used to substitute for the mouse or for numerical input when accurate control is required. The window displays the mouse coordinates of the active View. The measuring windows input fields can modify the coordinates. The coordinates can be expressed using the following alternatives: - Hot-point or absolute space origin related coordinates. - Input-plane oriented or absolute space oriented coordinate directions. - Polar or normal 3D coordinates. Furthermore, the measuring unit can be specified to be meters, millimetres, inches etc. The following examples demonstrate how to use the measuring window. Open a View window and a measuring window: To create a square rectangle: 1. Activate the View and hit e to reset it. 2. Select Create/Visibles/Rectangle. 3. Activate the X gadget of the measuring window, enter 0 and hit . Then activate the Y gadget, enter 0 and hit . Leave Z as it is. 4. Press the ACCEPT gadget. 5. Activate the X gadget again, enter 0.8 and hit . Then activate the Y gadget, enter 0.8 and hit . You should see the rectangle on the display. 6. If the size of the rectangle is not suitable, re-enter the X and Y values. 7. Press ACCEPT to create the rectangle. To move the rectangle 0.2 units to the X direction and 0.3 units to the Z direction: 1. Select the rectangle and select Modify/Linear/Move. 2. Activate the "Hot-P" gadget of the measuring window. 3. Press the ACCEPT gadget to "grab" the rectangle. 4. Enter X = 0.2, Y = 0, Z = 0.3. Every time you enter a new value, you see the rectangle moving. - TUTORIAL 2.9 - 5. Press ACCEPT To create a cylinder sector of 45 degrees: 1. Activate the "Origin" and "Polar" gadgets. 2. Select Create/Sectors/Cylinder. 3. Enter X = 0, Y = 0 , Z = 0, and press ACCEPT. 4. Enter X = 0,Y = 0,Z = 2 and press ACCEPT. 5. Enter X = 45, Y = 0 , Z = 2. By modifying Z and N values, you can adjust the size and the depth of the sector. X defines the angle. 6. When the sector is suitable, press ACCEPT. To rotate the cylinder 1 5 degrees around its center: 1. Activate the "Origin", "I-Plane" and "Polar" gadgets. 2. Select the sector and select Modify/Linear/Rotate. 3. click in the center of the cylinder. 4. Press down and click directly to the right of the sector center. Keeping the down when pressing defines a new coordinate but leaves the hot-point unaltered. This is necessary to measure the rotation around the sector center 5. Now use the measuring window: enter the angle to the X gadget. When the angle is suitable, hit ACCEPT. As you see, it is possible to swap from the normal mouse input to the measuring system input. If you want to start using the mouse again while executing a function, activate the View by clicking its title bar. 2.6 GRIDS The grid function of REAL 3D rounds the mouse coordinates to a desired grid. The grid system is based on a set of grids, of which one is the so called current grid. The current grid can be "activated" so that the coordinates snap to it, and it can be made visible. The number of grids is not limited, and the current grid collection can be edited and expanded freely. If you do not know the grid function yet, experiment with it in the following way: 1. Activate a View window and hit e to reset it. 2. Select Create/Visibles/Rectangle and shape a rectangle. Observe that you can freely control the size of the rectangle. 3. Select the View/Grid/Snap to Grid toggle menu. 4. Create another rectangle. This time the shape of the rectangle can be defined only in grid units. 5. Create a third rectangle beside the second one. Observe how easy it is to match one edge of the new rectangle with an edge of the second rectangle. - TUTORIAL 2.10 - 6. Select View/Grid/Visible. When you create new rectangles, it is easy to align them with the previous ones because you can follow the visible grid lines. In the previous example, the internal default grid of 0.1 units was used. You can specify another grid by using the View/Grid/Select function: it allows you to pick a grid from the current grid collection. This grid collection can be loaded, saved, or replaced using the Project/Project/ Load Sections, Save Sections or Replace sections functions and by selecting the "Grids" gadget in the sections requester. You can also save a suitable grid collection as a part of your working environment by using Project/Project/Save Sections (e.g. to s:real-startup) and by including "Grids" to the selected sections. You can create a new grid using the menu View/Grid/Create. The most important definitions are the "Name" and the three "Grid" gadgets, which Specify the lengths of the grid units. It is good idea to name the grids according to the grid unit sizes, so that selecting them using the name is easy. You can also specify the grid origin. The visible grid plane position, size, color and line pattern can be controlled. The default pattern 65535 corresponds to a solid line, 21845 gives a dense dotted line and 4369 gives a less dense dotted line. Grids can be modified using the View/Grid/Modify function and individual grids can be deleted using the View/Grid/Delete function. 2.7 THE UNDO FUNCTION The undo function can be used to restore the situation before the latest action affecting the object structure. The undo depth can be specified using Settings/Undo depth function; if the depth is greater than one, you can restore the state of the scene several steps earlier. After restoring the earliest state included in the undo buffer, the undo function jumps back to the current situation. This means that you can safely step through the undo buffer, because it works as a closed loop. To use the undo feature, select Extras/Undo or hit the U keys. Note that Project/New function clears the undo buffer, thus deleting its contents permanently. Undo stores only the object data structure. You cannot undo e.g. window closing or material modifications. You can use undo to restore an animation to its original state after the playback. This is handy when creating particle animations, which cannot be "rewound". 2.7.1 Undo and Memory Management There are some tricks which can be helpful when meeting memory problems. If the program does not execute a selected function, but gives a message "NOT ENOUGH MEMORY", it is recommended that the scene is saved before further actions. Deactivating the undo feature using the Settings/Undo/Active menu usually helps with low memory problems. You may also define a lower undo depth, for example 1 instead of the default 3 steps. Note: If your scene causes memory problems while editing, it is almost certain that you cannot render shaded images of it. - TUTORIAL 2.11 - 2.8 VECTOR STACK The Vector stack of REAL 3D is a general purpose storage for 3D vectors. Many built-in functions use it in their operation, and you can use the vectors stack for storing and manipulating coordinate data for all kinds of modelling purposes. REAL 3D includes a menu based "3D-calculator", which can do vector subtraction, addition and other useful operations. It uses the vector stack to store the parameters and results of such operations. You can store 3D coordinates to the vector stack by entering the coordinates from the keyboard or by using mouse operations. The coordinates can be modified and combined using the vector operations and later when creating or modifying objects, you can pick vectors from the stack, instead of using clicks. The following example demonstrate using the vector stack. An example: creating a polygon using information from existing objects 1. Create two objects, a sphere and a rectangle. The purpose is to create a triangle from the middle of the sphere to the middle of one side of the rectangle and to a given 3D point (1,1,0.5). 2. Press down and drag a box (keep down and move the mouse, so that REAL 3D displays a dotted-line rectangle) around the sphere. A set of crosses should appear on the View. These crosses show the current contents of the vector stack. 3. Select Extras/Vectors/Average All. This operation calculates an average of all the vectors in the stack. The vectors are removed from the stack and the result (the average) is pushed to the stack. So, only one cross is left in the middle of the sphere. 4. another box around the two points of an edge of the rectangle. Two more vectors are pushed to the stack. 5. Select Extras/Vectors/Average. This operation replaces the two topmost vectors in the stack with their average. So, the result is that the middle point of the rectangle edge is put into the stack. 6. Now the stack contains two vectors, and we enter the third one from the keyboard: select Extras/Vectors/Enter and type the coordinates 1, 1 and 0.5 to the three fields of the numeric requester. 7. Select Create/Visible/Polygon. Instead of using , select three times Extras/Vectors/Pull (or hit.), and then use to finish the polygon. If the View window was not active when you selected the Polygon function, activate it with a click on the title bar, so that the creation is started. If it is a borderless View, you can activate it with a click and then undo the first point with the key. In some cases, you just have to activate the View first and then select the creation function. - TUTORIAL 2.12 - Chapter 3 MATERIALS ------------------- 3.1 USING MATERIALS 3.1.1 General Information When creating photorealistic images and animations, it is necessary not only to create complex shapes, but to simulate different real world material properties. REAL 3D includes excellent tools for this purpose. REAL 3D represents objects as solids whose physical properties can be defined using materials. Materials contain information about molecular surface structure, colouring, and optical properties. Basic material properties can be adjusted easily using slider gadgets. More accurate control over properties can be achieved using so called texture maps, which are bitmap images whose colors can be used to define object surface colouring and other material properties. Mathematical textures, which are mathematical formulas that define desired properties, are also used. Since mathematical textures can be expressed as RPL programs or user-defined formulas, there are again unlimited possibilities to enhance and expand the built-in material features of REAL 3D. Many advanced material features of REAL 3D utilize the solid modelling principle of the program. Correct light refraction evaluation and non- homogenous materials, such as gas clouds with a desired spatial density distribution, are good examples. When working with REAL 3D, you store the materials you may need in a material library, which is a memory resident collection of individual materials. A material is a collection of information which defines the characteristics of a real world material such as wood, glass, steel, marble, water, etc. You can manipulate the material library in many different ways: you can delete materials from it, empty it, load an old library from disk and join it to the current one, save the library , and last but not least, create brand new materials using the material editor , and add them to the library. When you want to use a material for an object in your scene, you create a new object in the hierarchy. This new "material" object acts as a reference to one of the materials in the library, and at the same time, defines certain geometric properties which are used in the precise placement of the texture (material object) on the object (target solid object) when texture mapping. This new material reference object is called the mapping object. All the objects in the same hierarchy level with the mapping object are affected by the material to which the mapping refers. So, the principle is to have a library of materials and to use the hierarchy tree to combine shapes with materials. For example, to model a wooden candlestick, you first add the material wood to the material library, then create a level "Wooden-Stick", and under that level you place the stick shape object and the wood mapping object. You can interpret this so that the wooden stick consists of stick and wood, shape and the material. Natural, isn't it! WoodenStick Stick Wood Note: That the hierarchy tree contains references to the materials, not the materials themselves. This approach has several advantages. First of all, often you have to adjust the material properties afterwards; it is sufficient to modify only one material to get the desired change in all objects which are made of that material. Secondly, a material is very large collection of information and therefore this method saves a lot of memory. - TUTORIAL 3.1 - A real example of using materials will clarify this rather abstract description. We will experiment with materials in the following tutorial project. 3.1.2 Tutorial Project Creating a shiny sphere standing on a marble cube is a suitable exercise to demonstrate various aspects of using materials. First create a simple object containing two primitives: 1. Start the program with the standard environment. 2. Create two shapes using Create/Visibles/Cube and Sphere functions. The hierarchy tree should look like the following: Root cube ellipsoid 3. Open the material editor using the menu Project/Windows/Material This opens a new window with many gadgets. Don't worry, most gadgets contain good default values, and you will only have to define a couple of things in order to create a material. 4. Type the name of the first material "shiny" to the name field. The properties of "shiny" can be adjusted using a couple of sliders: 5. Move the Specularity slider to the middle, so that the percentage displayed at the right end of the slider becomes approximately 50%. 6. Adjust Brilliance to 80%. Specularity creates high-lights, which make the object look shiny. The higher the specularity, the sharper the high-lights. The second specularity adjustment, specular brightness, defines the brightness of the high-lights. The default value 25% is suitable, so you do not have to change it. Brilliance is the "mirror-like" property: the higher the value, the clearer the reflections you see on the surface of the material. Brilliancy level 0 produces a matt surface with no reflections, like unpolished paper. Now that the properties are defined: 7. Hit APPLY button. This creates the material "shiny", that is, adds the material to the material library. The second material can be created in a similar way. 8. Hit RESET button to remove old material properties. 9. Define the name of the second material, "marble". 10. Select material editor menu Texture/Define. 11. Select the file "r3D2:textures/marble1", using file selector. 12. Activate both Tile gadgets, X and Y 13. Press APPLY. End Of Part 1