封面
OpenSceneGraph 3.0
Credits
Foreword
About the Authors
Acknowledgement
About the Reviewers
www.PacktPub.com
Support files eBooks discount offers and more
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Time for action—heading
Reader feedback
Customer support
Chapter 1. The Journey into OpenSceneGraph
A quick overview of rendering middleware
Scene graphs
The Birth and development of OSG
Components
Why OSG?
Who uses OSG?
Have a quick taste
Time for action—say "Hello World" OSG style
Live in community
Summary
Chapter 2. Compilation and Installation of OpenSceneGraph
System requirements
Using the installer
Time for action—installing OSG
Running utilities
Time for action—playing with osgviewer
Using the project wizard
Time for action—creating your solution with one click
Prebuilts making trouble?
Cross-platform building
Starting CMake
Time for action—running CMake in GUI mode
Setting up options
Generating packages using Visual Studio
Time for action—building with a Visual Studio solution
Generating packages using gcc
Time for action—building with a UNIX makefile
Configuring environment variables
Summary
Chapter 3. Creating Your First OSG Program
Constructing your own projects
Time for action—building applications with CMake
Using a root node
Time for action—improving the "Hello World" example
Understanding memory management
ref_ptr<> and Referenced classes
Collecting garbage: why and how
Tracing the managed entities
Time for action—monitoring counted objects
Parsing command-line arguments
Time for action—reading the model filename from the command line
Tracing with the notifier
Redirecting the notifier
Time for action—saving the log file
Summary
Chapter 4. Building Geometry Models
How OpenGL draws objects
Geode and Drawable classes
Rendering basic shapes
Time for action—quickly creating simple objects
Storing array data
Vertices and vertex attributes
Specifying drawing types
Time for action—drawing a colored quad
Indexing primitives
Time for action—drawing an octahedron
Using polygonal techniques
Time for action—tessellating a polygon
Rereading geometry attributes
Customizing a primitive functor
Time for action—collecting triangle faces
Implementing your own drawables
Using OpenGL drawing calls
Time for action—creating the famous OpenGL teapot
Summary
Chapter 5. Managing Scene Graph
The Group interface
Managing parent nodes
Time for action—adding models to the scene graph
Traversing the scene graph
Transformation nodes
Understanding the matrix
The MatrixTransform class
Time for action—performing translations of child nodes
Switch nodes
Time for action—switching between the normal and damaged Cessna
Level-of-detail nodes
Time for action—constructing a LOD Cessna
Proxy and paging nodes
Time for action—loading a model at runtime
Customizing your own NodeKits
Time for action—animating the switch node
The visitor design pattern
Visiting scene graph structures
Time for action—analyzing the Cessna structure
Summary
Chapter 6. Creating Realistic Rendering Effects
Encapsulating the OpenGL state machine
Attributes and modes
Time for action—setting polygon modes of different nodes
Inheriting render states
Time for action—lighting the glider or not
Playing with fixed-function effects
Time for action—applying simple fog to models
Lights and light sources
Time for action—creating light sources in the scene
The Image class
The basis of texture mapping
Time for action—loading and applying 2D textures
Handling rendering order
Time for action—achieving the translucent effect
Understanding graphics shaders
Using uniforms
Time for action—implementing a cartoon cow
Working with the geometry shader
Time for action—generating a Bezier curve
Summary
Chapter 7. Viewing the World
From world to screen
The Camera class
Rendering order of cameras
Time for action—creating an HUD camera
Using a single viewer
Digging into the simulation loop
Time for action—customizing the simulation loop
Using a composite viewer
Time for action—rendering more scenes at one time
Changing global display settings
Time for action—enabling global multisampling
Stereo visualization
Time for action—rendering anaglyph stereo scenes
Rendering to textures
Frame buffer pixel buffer and FBO
Time for action—drawing aircrafts on a loaded terrain
Summary
Chapter 8. Animating Scene Objects
Taking references to functions
List of callbacks
Time for action—switching nodes in the update traversal
Avoiding conflicting modifications
Time for action—drawing a geometry dynamically
Understanding ease motions
Animating the transformation nodes
Time for action—making use of the animation path
Changing rendering states
Time for action—fading in
Playing movies on textures
Time for action—rendering a flashing spotlight
Creating complex key-frame animations
Channels and animation managers
Time for action—managing animation channels
Loading and rendering characters
Time for action—creating and driving a character system
Summary
Chapter 9. Interacting with Outside Elements
Various events
Handling mouse and keyboard inputs
Time for action—driving the Cessna
Adding customized events
Time for action—creating a user timer
Picking objects
Intersection
Time for action—clicking and selecting geometries
Windows graphics contexts and cameras
The Traits class
Time for action—configuring the traits of a rendering window
Integrating OSG into a window
Time for action—attaching OSG with a window handle in Win32
Summary
Chapter 10. Saving and Loading Files
Understanding file I/O plugins
Discovery of specified extension
Supported file formats
The pseudo-loader
Time for action—reading files from the Internet
Configuring third-party dependencies
Time for action—adding libcurl support for OSG
Writing your own plugins
Handling the data stream
Time for action—designing and parsing a new file format
Serializing OSG native scenes
Creating serializers
Time for action—creating serializers for user-defined classes
Summary
Chapter 11. Developing Visual Components
Creating billboards in a scene
Time for action—creating banners facing you
Creating texts
Time for action—writing descriptions for the Cessna
Creating 3D texts
Time for action—creating texts in the world space
Creating particle animations
Time for action—building a fountain in the scene
Creating shadows on the ground
Time for action—receiving and casting shadows
Implementing special effects
Time for action—drawing the outline of models
Playing with more NodeKits
Summary
Chapter 12. Improving Rendering Efficiency
OpenThreads basics
Time for action—using a separate data receiver thread
Understanding multithreaded rendering
Time for action—switching between different threading models
Dynamic scene culling
Occluders and occludees
Time for action—adding occluders to a complex scene
Improving your application
Time for action—sharing textures with a customized callback
Paging huge scene data
Making use of the quad-tree
Time for action—building a quad-tree for massive rendering
Summary
Appendix A. Pop quiz—Answers
Chapter 2
Chapter 3
Chapter 4
Chapter 5
Chapter 6
Chapter 7
Chapter 8
Chapter 9
Chapter 10
Chapter 11
Chapter 12
Index
更新时间:2021-03-27 00:36:28