The Inventor Mentor: Programming Object-Oriented 3D Graphics with Open Inventor™, Release 2

Front Matter

| List of Figures | List of Examples | List of Tables |

Table of Contents

About This Book
What This Book Contains
How to Use This Book
What You Should Know Before Reading This Book
Conventions Used in This Book
Key to Scene Graph Diagrams
Suggestions for Further Reading

Color Plates

1. Overview
What Is Open Inventor?
Objects, not Drawings
How Does Open Inventor Relate to OpenGL?
The Inventor Toolkit
Inventor Component Library
Inventor Class Tree
Extending the Toolkit

2. An Inventor Sampler
“Hello, Cone”
Naming Conventions
Scene Basic Types
Coordinate Systems in Inventor
Include Files

3. Nodes and Groups
The Scene Database
Scene Graphs
Types of Nodes
Creating Groups
Shared Instancing of Nodes
Fields within a Node
Override Flag (Advanced)
References and Deletion
Node Types
Naming Nodes

4. Cameras and Lights
Using Lights and Cameras

5. Shapes, Properties, and Binding
Simple Shapes
Complex Shapes
Property Nodes
Binding Nodes

6. Text
Two-Dimensional Text
Three-Dimensional Text

7. Textures
Creating Textured Objects
Key Concepts
SoTexture2 Node
Mapping the Texture onto the Object

8. Curves and Surfaces
Key Concepts
Examples of NURBS Curves
NURBS Surfaces
Suggestions for Further Reading

9. Applying Actions
Inventor Actions
General Model
Applying an Action
Calculating a Bounding Box
Accumulating a Transformation Matrix
Writing to a File
Searching for a Node
Calling Back to the Application

10. Handling Events and Selection
General Programming Model for Event Handling
Inventor Event Handling
How Nodes Handle Events: SoHandleEventAction
Using Event Callback Nodes (Advanced)
Sending Events Directly to the Application (Advanced)

11. File Format
Writing a Scene Graph
Reading a File into the Database
File Format Syntax
Reading in Extender Nodes and Engines
Reading from a String

12. Sensors
Introduction to Sensors
Data Sensors
Other Delay-Queue Sensors
Timer-Queue Sensors

13. Engines
Introduction to Engines
General Uses of Engines
Types of Engines
Making Field Connections
Reference Counting
Disabling a Connection
Updating Values
Global Fields
Animation Engines
Gate Engine
Arithmetic Engines
Nodes Used for Animation

14. Node Kits
Why Node Kits?
Hidden Children and SoNodeKitPath
Node-Kit Classes
Node-Kit Catalog
Parts Created by Default
Selecting Parts and Setting Values
Other Methods: getPart() and setPart()
Macros for Getting Parts
Specifying Part Names
Creating Paths to Parts
Using List Parts
Using Separator Kits to Create Motion Hierarchies

15. Draggers and Manipulators
What Is a Dragger?
Types of Draggers
Manipulators versus Draggers
Simple Draggers
Customizing a Dragger (Advanced)

16. Inventor Component Library
Introduction to Components
Xt Utility Functions
Render Area
Xt Components
General Model
Using the 3D Clipboard

17. Using Inventor with OpenGL
OpenGL State Variables and Inventor
Color-Index Mode
Using an SoCallback Node
Applying a Render Action Inside a GLX Window

A. An Introduction to Object-Oriented Programming for C Programmers
What Is Object-Oriented Programming?
An Example of a Class: Sphere
Suggested Reading

B. An Introduction to the C API
Naming C Functions
Abbreviating C Function Names
Creating and Deleting Objects from C
Overloaded C++ Methods
Calling Functions
C Classes and Manual Pages
A Sample Open Inventor Program in C

C. Error Handling
Runtime Type-Checking
Posting an Error
Handling an Error