The Inventor Mentor introduces graphics programmers and application developers to Open Inventor, an object-oriented 3D toolkit. Open Inventor is a library of objects and methods used for interactive 3D graphics. Although it is written in C++, Open Inventor also includes C bindings. For the sake of brevity, the examples included in this book are in C++. All C++ examples, as well as equivalent examples written in C, are available on-line. If you are new to the C++ language, see Appendix A, "An Introduction to Object-Oriented Programming for C Programmers," to help you understand the references to classes, subclasses, and other object-oriented concepts used throughout this book. If you are using the C application programming interface, also see Appendix B, "An Introduction to the C API." This book describes how to write applications using the Open Inventor toolkit. The Inventor Toolmaker, a companion book for the advanced programmer, describes how to create new Inventor classes and how to customize existing classes. The Inventor Mentor contains the following chapters: * Chapter 1, "Overview," provides a general description of Open Inventor concepts and classes and how Inventor relates to OpenGL and the X Window System. * Chapter 2, "An Inventor Sampler," presents a short program that creates a simple object. This program is then modified to show the use of important Inventor objects: engines, manipulators, and components. * Chapter 3, "Nodes and Groups," introduces the concept of a scene graph and shows how to create nodes and combine them into different kinds of groups. * Chapter 4, "Cameras and Lights," describes the camera nodes used to view a scene and the light nodes that provide illumination. * Chapter 5, "Shapes, Properties, and Binding," describes how to create both simple and complex shapes and how to use property nodes, including material, draw style, and lighting model nodes. Binding materials and surface normals to shape nodes is also explained. * Chapter 6, "Text," shows the use of 2D and 3D text nodes. * Chapter 7, "Textures," describes how to apply textures to the surfaces of objects in a scene. * Chapter 8, "Curves and Surfaces," explains how to use NURBS curves and surfaces. * Chapter 9, "Applying Actions," describes how operations are applied to an Inventor scene graph. Actions include OpenGL rendering, picking, calculating a bounding box, calculating a transformation matrix, writing to a file, and searching the scene graph for certain types of nodes. * Chapter 10, "Handling Events and Selection," explains how Inventor receives events from the window system. It also describes how the selection node manages a selection list and performs highlighting. * Chapter 11, "File Format," describes Inventor's interchange file format, used for reading files into Inventor, writing files out from Inventor, and data exchanges such as copy and paste. * Chapter 12, "Sensors," describes how Inventor sensors watch for certain types of events and invoke user-supplied callback functions when these events occur. * Chapter 13, "Engines," describes how you can use Inventor engines to animate parts of a scene graph, or to create interdependencies among the nodes in the graph. * Chapter 14, "Node Kits," introduces node kits, a convenient mechanism for creating groups of related Inventor nodes. Each node kit contains a catalog of nodes from which you select the desired nodes. * Chapter 15, "Draggers and Manipulators," describes how to use draggers and manipulators, which are special objects in the scene graph that respond to user events. Manipulators are nodes with field values that can be edited directly by the user. * Chapter 16, "Inventor Component Library," shows how to use Inventor's Xt components, which are program modules with a built-in user interface for changing the scene graph interactively. It also Chapter 17, "Using Inventor with OpenGL," discusses how to use Inventor with the OpenGL Library.