| 1 | <!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> |
|---|
| 2 | <html> |
|---|
| 3 | <head> |
|---|
| 4 | <meta http-equiv="Content-Type" |
|---|
| 5 | content="text/html; charset=iso-8859-1"> |
|---|
| 6 | <meta name="GENERATOR" |
|---|
| 7 | content="Mozilla/4.77 [en] (X11; U; Linux 2.4.3-20mdk i686) [Netscape]"> |
|---|
| 8 | <title>Introduction to the OpenSceneGraph</title> |
|---|
| 9 | </head> |
|---|
| 10 | <body bgcolor="#ffffff"> |
|---|
| 11 | <img src="images/OpenSceneGraphBanner_Distribution.jpg" border="0"> |
|---|
| 12 | <table> |
|---|
| 13 | <tbody> |
|---|
| 14 | <tr> |
|---|
| 15 | <td><a href="index.html">Index</a></td> |
|---|
| 16 | <td><a href="introduction.html">Introduction</a></td> |
|---|
| 17 | <td><a href="contents.html">Contents</a></td> |
|---|
| 18 | <td><a href="install.html">Install</a></td> |
|---|
| 19 | <td><a href="dependencies.html">Dependencies</a></td> |
|---|
| 20 | <td><a href="examples.html">examples</a></td> |
|---|
| 21 | <td><a href="data.html">Data</a></td> |
|---|
| 22 | <td><a href="osgviewer.html">Viewer</a></td> |
|---|
| 23 | <td><a href="stereo.html">Stereo</a></td> |
|---|
| 24 | <td><a href="osgdem.html">osgdem</a></td> |
|---|
| 25 | <td><a href="plan.html">Plan</a></td> |
|---|
| 26 | <td><a href="documentation.html">Reference Guides</a></td> |
|---|
| 27 | </tr> |
|---|
| 28 | </tbody> |
|---|
| 29 | </table> |
|---|
| 30 | <h2> |
|---|
| 31 | <u>Introduction to the OpenSceneGraph</u></h2> |
|---|
| 32 | <p>The OpenSceneGraph is an portable, high level graphics toolkit for |
|---|
| 33 | the development of high peformance |
|---|
| 34 | graphics applications such as flight simulators, games, virtual reality |
|---|
| 35 | or scientific visualization. Providing an object orientated framework |
|---|
| 36 | on top of OpenGL, it frees the developer |
|---|
| 37 | from implementing and optimizing low level graphics calls, and provide |
|---|
| 38 | many additional utilities for rapid development of graphics |
|---|
| 39 | applications. </p> |
|---|
| 40 | <p> |
|---|
| 41 | The project was started as a hobby by Don Burns in 1998, as means of |
|---|
| 42 | porting a hang gliding simulator written on top of the Performer scene |
|---|
| 43 | graph running on IRIX to what was then a humble Linux PC. In 1999, |
|---|
| 44 | Robert Osfield began helping out with the simulator development and |
|---|
| 45 | ported the scene graph element to Windows. In september 1999 the source |
|---|
| 46 | code was open sourced, and the openscenegraph.org website was born, |
|---|
| 47 | with Robert taking over as project lead and Don remaining focused on |
|---|
| 48 | the hang gliding simulator. |
|---|
| 49 | </p> |
|---|
| 50 | <p> In April 2001, in response to growing interest in the project |
|---|
| 51 | around the world, Robert went fulltime on the project, setting up <a |
|---|
| 52 | href="http://www.openscenegraph.com">OpenSceneGraph Professional |
|---|
| 53 | Services</a> providing commericial support, consultancy services and |
|---|
| 54 | training. At the end of 2001 Don also formed his own company <a |
|---|
| 55 | href="http://www.andesengineering.com">Andes Computer Engineering</a> |
|---|
| 56 | and participates in the development and support of OpenSceneGraph as |
|---|
| 57 | well as complimentary projects like <a |
|---|
| 58 | href="http://www.andesengineering.com/Producer">OpenProducer</a> and <a |
|---|
| 59 | href="http://www.andesengineering.com/BlueMarbleViewer">BlueMarbleViewer</a>. |
|---|
| 60 | </p> |
|---|
| 61 | <h3><u>What is a Scene Graph?</u></h3> |
|---|
| 62 | Its a tree! Quite simply one the best and most reusable data structures |
|---|
| 63 | invented. Typically drawn schematically with the root at the top, |
|---|
| 64 | leaves at the |
|---|
| 65 | bottom. It all starts with a top-most root node which encompasses your |
|---|
| 66 | whole |
|---|
| 67 | virtual world, be it 2D or 3D. The world is then broken down into a |
|---|
| 68 | hierarchy |
|---|
| 69 | of nodes representing either spatial groupings of objects, settings of |
|---|
| 70 | the |
|---|
| 71 | position of objects, animations of objects, or definitions of logical |
|---|
| 72 | relationships |
|---|
| 73 | between objects such as those to manage the various states of a traffic |
|---|
| 74 | light. |
|---|
| 75 | The leaves of the graph represent the physical objects themselves, the |
|---|
| 76 | drawable geometry and their material properties. |
|---|
| 77 | <p></p> |
|---|
| 78 | <p>A scene graph isn't a complete game or simulation engine, although |
|---|
| 79 | it may |
|---|
| 80 | be one of the main components of such an engine; it's primary focus is |
|---|
| 81 | representation of your 3d worlds, and efficient rendering thereof. |
|---|
| 82 | Physics models, |
|---|
| 83 | collision detection and audio are left to other development libraries |
|---|
| 84 | that |
|---|
| 85 | a user will integrate with. The fact that scene graphs don't typically |
|---|
| 86 | integrate all these features is actually a really good thing: it aids |
|---|
| 87 | interoprability |
|---|
| 88 | with clients' own applications and tools and allows it to serve many |
|---|
| 89 | varied |
|---|
| 90 | markets from games, visual simulation, virtual reality, |
|---|
| 91 | scientific and commercial visualization, training through to modeling |
|---|
| 92 | programs. |
|---|
| 93 | </p> |
|---|
| 94 | <h3> |
|---|
| 95 | <u>Benefits that Scene Graphs provide</u></h3> |
|---|
| 96 | The key reasons that many graphics developers uses scene graphs are <i>Performance, |
|---|
| 97 | Productivity, Portability and Scalability:</i> |
|---|
| 98 | <ul> |
|---|
| 99 | <li><b><i>Performance</i></b></li> |
|---|
| 100 | Scene graphs provide an excellent framework for |
|---|
| 101 | maximizing graphics performance. A good scene graph employs two key |
|---|
| 102 | techniques |
|---|
| 103 | - culling of the objects that won't be seen on screen, and state |
|---|
| 104 | sorting |
|---|
| 105 | of properties such as textures and materials, so that all similar |
|---|
| 106 | objects |
|---|
| 107 | are drawn together. Without culling the CPU, buses and GPU will all |
|---|
| 108 | become |
|---|
| 109 | swamped by many times the amount of data than they actually require to |
|---|
| 110 | represent your scenes accurately. The hierarchical structure of the |
|---|
| 111 | scene |
|---|
| 112 | graph makes this culling process very efficient, for instance a whole |
|---|
| 113 | city can be culled |
|---|
| 114 | with just a few operations! Without state sorting, the the buses and |
|---|
| 115 | GPU |
|---|
| 116 | will thrash between states, stalling the graphics pipeline and |
|---|
| 117 | destroying graphics |
|---|
| 118 | throughput. As GPU's get faster and faster, the cost of stalling the |
|---|
| 119 | graphics pipeline |
|---|
| 120 | is also going up, so scene graphs are becoming ever more important. |
|---|
| 121 | <p></p> |
|---|
| 122 | <li><b><i>Productivity</i></b></li> |
|---|
| 123 | Scene graphs take away much of the hard work required |
|---|
| 124 | to develop high performance graphics applications. The scene graph |
|---|
| 125 | manages |
|---|
| 126 | all the graphics for you, reducing what would be thousands of lines of |
|---|
| 127 | OpenGL down to a few simple calls. Furthermore, one of most powerful |
|---|
| 128 | concepts |
|---|
| 129 | in Object Oriented programming is that of object composition, enshrined |
|---|
| 130 | in the <i>Composite Design Pattern</i>, which fits the scene graph |
|---|
| 131 | tree structure |
|---|
| 132 | perfectly and makes it a highly flexible and reusable design - in real |
|---|
| 133 | terms this means that it can be easily adapted to solve your problems. |
|---|
| 134 | Scene graphs also often come additional utility libraries which range |
|---|
| 135 | from |
|---|
| 136 | helping users set up and manage graphics windows to importing of 3d |
|---|
| 137 | models |
|---|
| 138 | and images. All this together allows the user to achieve a great deal |
|---|
| 139 | with |
|---|
| 140 | very little coding. A dozen lines of code can be enough to load your |
|---|
| 141 | data |
|---|
| 142 | and create an interactive viewer! |
|---|
| 143 | <p></p> |
|---|
| 144 | <li><b><i>Portability</i></b></li> |
|---|
| 145 | Scene graphs encapsulate much of the lower level |
|---|
| 146 | tasks of rendering graphics and reading and writing data, reducing or |
|---|
| 147 | even |
|---|
| 148 | eradicating the platform specific coding that you require in your own |
|---|
| 149 | application. |
|---|
| 150 | If the underlying scene graph is portable then moving from platform to |
|---|
| 151 | platform can be as simple as recompiling your source code. |
|---|
| 152 | <p></p> |
|---|
| 153 | <li><b><i>Scalability</i></b></li> |
|---|
| 154 | Along with being able to dynamic manage the complexity |
|---|
| 155 | of scenes automatically to account for differences in graphics |
|---|
| 156 | performance |
|---|
| 157 | across a range of machines, scene graphs also make it much easier to |
|---|
| 158 | manage |
|---|
| 159 | complex hardware configurations, such as clusters of graphics machines, |
|---|
| 160 | or multiprocessor/multipipe systems such as SGI's Onyx. A good scene |
|---|
| 161 | graph |
|---|
| 162 | will allow the developer to concentrate on developing their own |
|---|
| 163 | application |
|---|
| 164 | while the rendering framework of the scene graph handles the different |
|---|
| 165 | underlying hardware configurations. |
|---|
| 166 | </ul> |
|---|
| 167 | <h3> |
|---|
| 168 | <u>The OpenSceneGraph - <i> a robust, high peformance Open Source |
|---|
| 169 | scene graph</i></u></h3> |
|---|
| 170 | With the OpenSceneGraph our goal is make the benefits of scene graph |
|---|
| 171 | technology freely available to all, for both commericial and non |
|---|
| 172 | commericial users. Whilst our scene graph |
|---|
| 173 | is still in development, it has already gained a respect |
|---|
| 174 | amongst the development community for its high performance, cleanness |
|---|
| 175 | of |
|---|
| 176 | design and portability. Written entirely in Standard C++ and OpenGL, it |
|---|
| 177 | makes full use of the STL and Design Patterns, and leverages the open |
|---|
| 178 | source |
|---|
| 179 | development model to provide a development library that is legacy free |
|---|
| 180 | and focused on the needs of end users. The OpenSceneGraph delivers on |
|---|
| 181 | the four key benefits of scene graph technology outlined above with the |
|---|
| 182 | following features: |
|---|
| 183 | <ul> |
|---|
| 184 | <li><b><i>Performance</i></b></li> |
|---|
| 185 | Supports view frustum culling, occlusion culling, small feature |
|---|
| 186 | culling, |
|---|
| 187 | Level Of Detail (LOD) nodes, state sorting, vertex arrays and display |
|---|
| 188 | lists as part of the core scene graph. These together make the |
|---|
| 189 | OpenSceneGraph |
|---|
| 190 | one of the highest performance scene graph available. User feedback is |
|---|
| 191 | that |
|---|
| 192 | performance matches or surpasses that of much more established scene |
|---|
| 193 | graphs such as Performer, VTree, Vega Scene Graph and Java3D! The |
|---|
| 194 | OpenSceneGraph also supports easy customization |
|---|
| 195 | of the drawing process, which has allowed implementation of Continuous |
|---|
| 196 | Level |
|---|
| 197 | of Detail (CLOD) meshes on top the scene graph. These allow the |
|---|
| 198 | visualization |
|---|
| 199 | of massive terrain databases interactively, examples of this approach |
|---|
| 200 | can |
|---|
| 201 | be found at Vterrain.org and TerrainEngine.com, both of which integrate |
|---|
| 202 | with the OpenSceneGraph. |
|---|
| 203 | <p></p> |
|---|
| 204 | <li><b><i>Productivity</i></b> </li> |
|---|
| 205 | <p>The core scene graph provides encapsulate the majority of OpenGL |
|---|
| 206 | functionality including latest extensions, provides rending |
|---|
| 207 | optimizations |
|---|
| 208 | such as culling and sorting, and a whole set of add on libraries which |
|---|
| 209 | make |
|---|
| 210 | it possible to develop high peformance graphics applications very |
|---|
| 211 | rapidly. The application developer is freed to concentrate on content |
|---|
| 212 | and how that content is controlled rather than low level coding. </p> |
|---|
| 213 | <p>Combining lessons learned from established scene graphs like |
|---|
| 214 | Performer |
|---|
| 215 | and Open Inventor, with modern software engineering methods like Design |
|---|
| 216 | Patterns, along with a great deal of feedback early on in the |
|---|
| 217 | development cycle, it has been possible to design a library that is |
|---|
| 218 | clean and extensible. This has made it easy for users to adopt to the |
|---|
| 219 | OpenSceneGraph and to integrate it with their own applications. </p> |
|---|
| 220 | <p>For reading and writing databases an the database library (osgDB) |
|---|
| 221 | adds |
|---|
| 222 | support for a wide |
|---|
| 223 | variety of database formats via a extensible dynamic plugin mechansim - |
|---|
| 224 | the distribution now includes 33 |
|---|
| 225 | seperate plugins for loading various 3D and Image data formats. 3D |
|---|
| 226 | Database loaders include OpenFlight (.flt), TerraPage (.txp) including |
|---|
| 227 | multi-threading support, LightWave (.lwo), Alias Wavefront (.obj), |
|---|
| 228 | Carbon Graphics GEO (.geo), 3D Studio MAX (.3ds), Peformer (.pfb), |
|---|
| 229 | Quake Character Models (.md2). Direct X (.x), and Inventor Ascii 2.0 |
|---|
| 230 | (.iv)/ VRML 1.0 (.wrl), Designer Workshop (.dw) and AC3D (.ac) and the |
|---|
| 231 | native .osg ASCII format. |
|---|
| 232 | Image loaders include .rgb, .gif, .jpg, .png, .tiff, .pic, .bmp, .dds |
|---|
| 233 | (include compressed mip mapped imagery), .tga and qucktime (under OSX). |
|---|
| 234 | A whole set of high quality, anti-aliased fonts can also be loaded via |
|---|
| 235 | the freetype plugin. </p> |
|---|
| 236 | <p>The scene graph also has a set of <i>Node Kits</i> which are |
|---|
| 237 | seperate |
|---|
| 238 | libraries, |
|---|
| 239 | that can be compiled in with your applications or loaded in at runtime, |
|---|
| 240 | which add support for particle systems (osgParticle), |
|---|
| 241 | high quality anti-aliased text (osgText) and navigational light points |
|---|
| 242 | (osgSim). </p> |
|---|
| 243 | <p>The community has also developed a number of additional <i>Node |
|---|
| 244 | Kits</i> |
|---|
| 245 | such as <a href="http://osgnv.sourceforge.net/">osgNV</a> (which |
|---|
| 246 | includes support for NVidia's vertex, fragment, combiner etc extension |
|---|
| 247 | and NVidia's Cg shader language.), <a |
|---|
| 248 | href="http://www.terrainengine.com">Demeter</a> (CLOD terrain + |
|---|
| 249 | integration with OSG). <a href="http://osgcal.sourceforge.net">osgCal</a> |
|---|
| 250 | (which integrates <a href="http://cal3d.sourceforge.net//">Cal3D</a> |
|---|
| 251 | and the OSG), <a href="http://www.vrlab.umu.se/research/osgvortex">osgVortex</a> |
|---|
| 252 | (which integrates the <a href="http://www.cm-labs.com/">CM-Labs Vortex</a> |
|---|
| 253 | physics enginer with OSG) |
|---|
| 254 | and a whole set libraries that integrating the leading Windowing API's |
|---|
| 255 | Links can be found in the bazaar sections on the <a |
|---|
| 256 | href="http://www.openscenegraph.org/download/">download</a> page of |
|---|
| 257 | OpenSceneGraph webiste. </p> |
|---|
| 258 | <p>The project has also been integrated with <a |
|---|
| 259 | href="http://www.vrjuggler.org/">VR Juggler</a> and <a |
|---|
| 260 | href="http://http://vess.ist.ucf.edu/">Vess</a> virtual realilty the |
|---|
| 261 | frameworks, with others in developments. </p> |
|---|
| 262 | <li><b><i>Portability</i></b></li> |
|---|
| 263 | The core scene graph has also been designed to |
|---|
| 264 | have minimal dependency on any specific platform, requiring little more |
|---|
| 265 | than |
|---|
| 266 | Standard C++ and OpenGL. This has allowed the scene graph to be rapidly |
|---|
| 267 | ported to a wide range of platforms - originally developed on IRIX, |
|---|
| 268 | then |
|---|
| 269 | ported to Linux, then to Windows, then FreeBSD, Mac OSX, Solaris, HP-UX |
|---|
| 270 | and we even a report of successful porting to PlayStation2! <br> |
|---|
| 271 | The core scene graph library being completely windowing system |
|---|
| 272 | independent makes it easy for users to add their own window-specific |
|---|
| 273 | libraries and applications on top. |
|---|
| 274 | In the distribution there is already the osgProducer library which |
|---|
| 275 | integrates with <a href="http://www.andesengineering.com/Producer/">OpenProducer</a>, |
|---|
| 276 | and in the Bazaar |
|---|
| 277 | found at openscenegrph.org/download/ one can find examples of |
|---|
| 278 | applications |
|---|
| 279 | written on top of GLUT, Qt, MFC, WxWindows and SDL. Users have also |
|---|
| 280 | integrated it |
|---|
| 281 | with Motif, and X. |
|---|
| 282 | <p></p> |
|---|
| 283 | <li><b><i>Scalability</i></b></li> |
|---|
| 284 | The scene graph will not only run on portables all |
|---|
| 285 | the way up to Onyx Infinite Reality Monsters, but also supports the |
|---|
| 286 | multiple |
|---|
| 287 | graphics subsystems found on machines like a mulitpipe Onyx. This is |
|---|
| 288 | possible because the core scene graph supports multiple graphics |
|---|
| 289 | contexts |
|---|
| 290 | for both OpenGL Display Lists and texture objects, and the cull and |
|---|
| 291 | draw |
|---|
| 292 | traversals have been designed to cache rendering data locally and use |
|---|
| 293 | the |
|---|
| 294 | scene graph almost entirely as a read-only operation. This allows |
|---|
| 295 | multiple |
|---|
| 296 | cull-draw pairs to run on multiple CPU's which are bound to multiple |
|---|
| 297 | graphics |
|---|
| 298 | subsystems. Support for multiple graphic context and multi-threading is |
|---|
| 299 | all |
|---|
| 300 | available out of the box via osgProducer - all the examples in the |
|---|
| 301 | distribution |
|---|
| 302 | can run multi-pipe just by use a simple configuation file. |
|---|
| 303 | </ul> |
|---|
| 304 | All the source to the OSG is published under the Open Scene Graph |
|---|
| 305 | Public License |
|---|
| 306 | (a relaxed version on the LGPL) which allows both open source and |
|---|
| 307 | closed source projects to use, |
|---|
| 308 | modify and distribute it freely as long its usage complies with the |
|---|
| 309 | OSGPL. |
|---|
| 310 | The project has been developed over the last four years, initiated by |
|---|
| 311 | Don |
|---|
| 312 | Burns, and then taken over by Robert Osfield who continues to lead the |
|---|
| 313 | project |
|---|
| 314 | today. There are many other contributors to the library, for a full |
|---|
| 315 | list |
|---|
| 316 | check out the AUTHORS file. Both Robert and Don now work on the |
|---|
| 317 | OpenSceneGraph |
|---|
| 318 | in a professional capacity providing consultancy and bespoke |
|---|
| 319 | development |
|---|
| 320 | on top the library, and are also collaborating on the book. Work on the |
|---|
| 321 | core scene graph and support of public mailing list remains unpaid as |
|---|
| 322 | are |
|---|
| 323 | the contributions of the rest of the community, but this hasn't |
|---|
| 324 | impacted |
|---|
| 325 | the quality of the source or support which once you get stuck in you |
|---|
| 326 | grow |
|---|
| 327 | to appreciate. |
|---|
| 328 | <p>The project is currently in beta, which means the main core features |
|---|
| 329 | are now in |
|---|
| 330 | place, with a 1.0 release in second half of 2004. Despite the beta |
|---|
| 331 | development status, |
|---|
| 332 | the project has already earned the reputation as the leading open |
|---|
| 333 | source scene |
|---|
| 334 | graph, and is establishing itself as a viable alternative to the |
|---|
| 335 | commercial |
|---|
| 336 | scene graphs. Numerous companies, university researchers and graphics |
|---|
| 337 | enthusiasts |
|---|
| 338 | have already adopted the OpenSceneGraph for their projects, all over |
|---|
| 339 | the world. Examples of the wide variety of applications already |
|---|
| 340 | developed ontop of the OpenSceneGraph include <a |
|---|
| 341 | href="http://http://www.andesengineering.com/BlueMarbleViewer/">Blue |
|---|
| 342 | Marble Viewer</a>, <a href="http://www.vterrain.org"> Virtual Terrain |
|---|
| 343 | Project</a>, <a href="http://http://csp.sourceforge.net/">Combat |
|---|
| 344 | Simulator Project</a>, <a href="http://osgedit.sourceforge.net/">OSG-Edit</a>. |
|---|
| 345 | This is just a snippet of the projects that use the project, more |
|---|
| 346 | examples can be found on the screenshot pages and bazaar on the |
|---|
| 347 | website. |
|---|
| 348 | </p> |
|---|
| 349 | <h3> |
|---|
| 350 | <u>Getting started</u></h3> |
|---|
| 351 | The first thing is to select the distribution which suits you, there |
|---|
| 352 | are |
|---|
| 353 | binary, development and source code distributions, these can be loaded |
|---|
| 354 | from the |
|---|
| 355 | <a href="http://openscenegraph.sf.net/downloads">http://openscenegraph.sf.net/downloads</a> |
|---|
| 356 | page. The latest developments area available as via a nightly tarball |
|---|
| 357 | or |
|---|
| 358 | via cvs. |
|---|
| 359 | <p>The binary distribution contains just the libraries (.dll's /.so's) |
|---|
| 360 | and example executables. This is suitable for using the OpenSceneGraph |
|---|
| 361 | with |
|---|
| 362 | an application that has already been compiled but depends at runtime on |
|---|
| 363 | the OpenSceneGraph. |
|---|
| 364 | </p> |
|---|
| 365 | <p>The development distribution contains the libraries (.dll's /.so's), |
|---|
| 366 | example executables, include files, and source to the examples. This is |
|---|
| 367 | suitable |
|---|
| 368 | for developers using the OpenSceneGraph. |
|---|
| 369 | </p> |
|---|
| 370 | <p>The source distribution contains all the source and include files |
|---|
| 371 | required to build the OpenSceneGraph from scratch, and is ideal if you |
|---|
| 372 | want to learn more about how the scene graph works, how to extend it, |
|---|
| 373 | and |
|---|
| 374 | to track down and fix any problems that you come across. |
|---|
| 375 | </p> |
|---|
| 376 | <p>If you are using a source distribution then read the <a |
|---|
| 377 | href="install.html">installation</a> |
|---|
| 378 | instructions for how to get the OpenSceneGraph compiling and installed |
|---|
| 379 | on your system. You may also need to download libraries that parts of |
|---|
| 380 | the |
|---|
| 381 | OpenSceneGraph depend upon, such as Producer. Check the <a |
|---|
| 382 | href="dependencies.html">dependencies</a> |
|---|
| 383 | list for further details. |
|---|
| 384 | </p> |
|---|
| 385 | <p>For full instructions of how to run the examples read the <a |
|---|
| 386 | href="examples.html">examples</a> |
|---|
| 387 | page. |
|---|
| 388 | </p> |
|---|
| 389 | <h3> |
|---|
| 390 | <u>Learning how to use the OpenSceneGraph</u></h3> |
|---|
| 391 | <p>The main collections of resources for learning how to use the |
|---|
| 392 | OpenSceneGraph can be found on openscenegraph.org documentaiton page, |
|---|
| 393 | please check this out regular for new entries.<br> |
|---|
| 394 | </p> |
|---|
| 395 | <p>The OpenSceneGraph distribution comes with a reference guide for |
|---|
| 396 | each of |
|---|
| 397 | the component libraries - osg, osgDB, osgUtil, osgText, osgSim, |
|---|
| 398 | osgParticle and osgProducer, a set |
|---|
| 399 | of 42 examples - the source of which can be found in examples/ |
|---|
| 400 | directory in the distribution. For questions |
|---|
| 401 | or help which can't be easily be answered by the reference guide and |
|---|
| 402 | examples |
|---|
| 403 | source, one should join the mailing list (details below). There are |
|---|
| 404 | also |
|---|
| 405 | the beginnings of a <a |
|---|
| 406 | href="http://www.c2.com/cgi/wiki?OpenSceneGraphFaq">Wiki |
|---|
| 407 | based FAQ</a> which may help answer a few of the common queries. |
|---|
| 408 | </p> |
|---|
| 409 | <p>Two sets of online tutorial been written by members of the |
|---|
| 410 | OpenSceneGraph community:<br> |
|---|
| 411 | Jason McVeigh's <a |
|---|
| 412 | href="http://www.tersesolutions.net/osgt/">OpenSceneGraph Tutorials</a><br> |
|---|
| 413 | Joseph Sullivan's <a |
|---|
| 414 | href="http://www.nps.navy.mil/cs/sullivan/osgTutorials/index.html">OpenSceneGraph |
|---|
| 415 | Tutorials</a><br> |
|---|
| 416 | <br> |
|---|
| 417 | A programming guide will be available in form of a OpenSceneGraph |
|---|
| 418 | book |
|---|
| 419 | which is being written by Don Burns and Robert Osfield, parts of it |
|---|
| 420 | will |
|---|
| 421 | be available online. |
|---|
| 422 | </p> |
|---|
| 423 | <p>Although not directly related to the OpenSceneGraph, once can learn |
|---|
| 424 | about scene graph technology from such sources as the <a |
|---|
| 425 | href="http://www.sgi.com/software/inventor/manuals.html">Open |
|---|
| 426 | Inventor Mentor</a>, and <a |
|---|
| 427 | href="http://www.cineca.it/manuali/Performer/ProgGuide24/html">Performer |
|---|
| 428 | Programming Guides</a>. The latter is the closer in design to |
|---|
| 429 | the OpenSceneGraph, although the Performer manuals are in C, alas. Also |
|---|
| 430 | of use |
|---|
| 431 | as a background to some of the techniques used is a SIGGRAPH <a |
|---|
| 432 | href="http://www.opengl.org/developers/code/sig99/advanced99/course_slides/vissim/index.htm">Vis-Sim |
|---|
| 433 | course</a>. |
|---|
| 434 | </p> |
|---|
| 435 | <p>The OpenSceneGraph uses OpenGL and does so with a deliberately thin |
|---|
| 436 | layer, |
|---|
| 437 | making it easy to control the underlying OpenGL and to extend it with |
|---|
| 438 | OpenGL |
|---|
| 439 | extensions. The close tie with OpenGL is also reflected in the naming |
|---|
| 440 | of |
|---|
| 441 | many of the OpenGL state related classes, and the parameters that they |
|---|
| 442 | encapsulate, which means that knowledge of OpenGL itself will go a long |
|---|
| 443 | way |
|---|
| 444 | to understanding how to get the best out of the OpenSceneGraph. To this |
|---|
| 445 | end it is worth obtaining a copy of the OpenGL programming guide - <a |
|---|
| 446 | href="http://fly.cc.fer.hr/%7Eunreal/theredbook/">`Red |
|---|
| 447 | Book`</a> and OpenGL reference guide 'Blue Book'. The main <a |
|---|
| 448 | href="http://www.opengl.org">OpenGL |
|---|
| 449 | website</a> is also a good source of links and further information. |
|---|
| 450 | </p> |
|---|
| 451 | <h3> |
|---|
| 452 | <u>Support and discussion - the <i>osg-user</i> mailing list</u></h3> |
|---|
| 453 | For scene graph related questions, bug reports, bug fixes, and general |
|---|
| 454 | design and development discussion one should join the <a |
|---|
| 455 | href="http://dburns.dhs.org/mailman/listinfo/osg-user"><span |
|---|
| 456 | style="text-decoration: underline;">osg-user</span></a> |
|---|
| 457 | mailing list, and check the the mailing list <a |
|---|
| 458 | href="http://osgcvs.no-ip.com/osgarchiver/">archives</a>. |
|---|
| 459 | <p>Professional support is also available in the form of confidential |
|---|
| 460 | online, |
|---|
| 461 | phone and onsite support and consultancy, for details contact Robert |
|---|
| 462 | Osfield |
|---|
| 463 | at <a href="mailto:robert@openscenegraph.com">robert@openscenegraph.com</a>. |
|---|
| 464 | </p> |
|---|
| 465 | </body> |
|---|
| 466 | </html> |
|---|