Show
Ignore:
Timestamp:
04/24/03 21:54:03 (12 years ago)
Author:
robert
Message:

Updates to the introduction.html documentaition.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/doc/introduction.html

    r1912 r1915  
    3636<h2> 
    3737<u>Introduction to the OpenSceneGraph</u></h2> 
    38 Welcome to OpenSceneGraph project! 
    39 <p>The OpenSceneGraph is an Open Source <a href="../LICENSE.txt">(OSGPL)</a>, Cross Platform (Windows, 
    40 Linux, Mac OSX, FreeBSD, Irix, Solaris and HP-UX), Standard C++ and OpenGL based 
    41 graphics development library. Uses range from visual simulation, games, 
    42 virtual reality, scientific visualization and graphics research. This page 
    43 introduces what scene graphs are, why graphics developers use them, and 
    44 details about the OpenSceneGraph project, how to learn how to use it and 
    45 contribute to the OpenSceneGraph community. 
    46 <p><i>Robert Osfield, Project Lead. July 2002.</i> 
    47 <br> 
    48 <hr> 
     38 
     39<p>The OpenSceneGraph is an portable, high level graphics toolkit for the development of high peformance 
     40graphics applications such as flight simulators, games, virtual reality or scientific visualization.   
     41Providing an object orientated framework on top of OpenGL, it frees the developer 
     42from implementing and optimizing low level graphics calls, and provide many additional utilities for  
     43rapid development of graphics applications.   
     44</p> 
     45<p> 
     46The project was started as a hobby by Don Burns in early 1999, as means of porting a hang gliding simulator written on top of the  
     47Peformer scene graph running on IRIX to what was then a humble Linux PC. In mid 1999, Robert Osfield began helping out with  
     48the simulator development and ported the scene graph element to Windows.  In september 1999 the source code was open sourced,  
     49and the openscenegraph.org website was born, with Robert taking over as project lead and Don remaining focused on the hang  
     50gliding simulator.  In April 2001, in response to growing interest in the project around the world, Robert went fulltime  
     51on the project, setting up OpenSceneGraph Professional Services,  
     52with the mission: 
     53<ul> 
     54<li><b>Source</b> 
     55<br>To develop a high performance, high quality visualization toolkit which 
     56is freely available and accessible to all.</li> 
     57 
     58<li><b>Community</b> 
     59<br>To nurture a world-wide community of graphics professionals and enthusiasts 
     60for development, support and promotion of best practices in software engineering 
     61and real-time computer graphics.</li> 
     62 
     63<li><b>Service</b> 
     64<br>To provide consultancy and development services for clients projects to 
     65allow them to maximize the benefits of real-time 3D graphics and to facilitate 
     66the rapid, yet seamless adoption of latest graphics technologies.</li> 
     67</ul> 
     68</p> 
     69 
     70<br> 
    4971<h3> 
    5072<u>What is a Scene Graph?</u></h3> 
     
    5880The leaves of the graph represent the physical objects themselves, the 
    5981drawable geometry and their material properties. 
     82</p> 
    6083<p>A scene graph isn't a complete game or simulation engine, although it may 
    6184be one of the main components of such an engine; it's primary focus is 
     
    6790markets from games, visual simulation, virtual reality, 
    6891scientific and commercial visualization, training through to modeling programs. 
    69 <br> 
    70 <hr> 
    71 <h3> 
    72 <u>Why use a Scene Graph - Performance, Productivity, Portability and Scalability</u>.</h3> 
    73  
    74 <ol><b><i>Performance</i></b> - scene graphs provide an excellent framework for 
     92</p> 
     93 
     94 
     95<br> 
     96<h3> 
     97<u>Advantages that Scene Graphs provide</h3> 
     98 
     99The key reasons that many graphics developers uses scene graphs are  <i>Performance, Productivity, Portability and Scalability:</i> 
     100 
     101<ul> 
     102<li><b><i>Performance</i></b></li> 
     103Scene graphs provide an excellent framework for 
    75104maximizing graphics performance. A good scene graph employs two key techniques 
    76105- culling of the objects that won't be seen on screen, and state sorting 
     
    79108swamped by many times the amount of data than they actually require to 
    80109represent your work accurately. The hierarchical structure of the scene 
    81 graph makes this culling process very efficient with whole town being culled 
     110graph makes this culling process very efficient, for instance a whole city can be culled 
    82111with just a few operations! Without state sorting, the the buses and GPU 
    83112will thrash between states, stalling the graphics pipeline and destroying graphics 
    84113througput. As GPU's get faster and faster, the cost of stalling the graphics 
    85114is also going up, so scene graphs are becoming ever more important. 
    86 <p><b><i>Productivity</i></b> - scene graphs take away much of the hard work required 
     115 
     116<li><b><i>Productivity</i></b></li>  
     117Scene graphs take away much of the hard work required 
    87118to develop high performance graphics applications. The scene graph manages 
    88119all the graphics for you, reducing what would be thousands of lines of 
     
    97128very little coding. A dozen lines of code can be enough to load your data 
    98129and create an interactive viewer! 
    99 <p><b><i>Portability</i></b> - scene graphs encapsulate much of the lower level 
     130 
     131<li><b><i>Portability</i></b></li> 
     132Scene graphs encapsulate much of the lower level 
    100133tasks of rendering graphics and reading and writing data, reducing or even 
    101134eradicating the platform specific coding that you require in your own application. 
    102135If the underlying scene graph is portable then moving from platform to 
    103136platform can be as simple as recompiling your source code. 
    104 <p><b><i>Scalability</i></b> - along with being able to dynamic manage the complexity 
     137 
     138<li><b><i>Scalability</i></b></li> 
     139Along with being able to dynamic manage the complexity 
    105140of scenes automatically to account for differences in graphics performance 
    106141across a range of machines, scene graphs also make it much easier to manage 
     
    109144will allow the developer to concentrate on developing their own application 
    110145while the rendering framework of the scene graph handles the different 
    111 underlying hardware configurations.</ol> 
    112  
    113 <hr> 
    114 <h3> 
    115 <u>So what about the OpenSceneGraph project?</u></h3> 
    116 The OpenSceneGraph is an Open Source Scene Graph, and our goal is make 
    117 the benefits of scene graph technology available to all. Our scene graph 
    118 is still in development, but has already gained a great deal of respect 
     146underlying hardware configurations. 
     147</ul> 
     148 
     149 
     150<br> 
     151<h3> 
     152<u>The OpenSceneGraph - <i> a robust, high peformance Open Source scene graph</i></u></h3> 
     153With the OpenSceneGraph our goal is make the benefits of scene graph technology  
     154freely available to all, for both commericial and non commericial users. Whilst our scene graph 
     155is still in development, it has already gained a respect 
    119156amongst the development community for its high performance, cleanness of 
    120157design and portability. Written entirely in Standard C++ and OpenGL, it 
     
    124161the four key benefits of scene graph technology outlined above using the 
    125162following features: 
    126 <ol><b><i>Performance</i></b> - supports view frustum culling, occlusion culling, small feature culling, 
     163<ul> 
     164<li><b><i>Performance</i></b></li> 
     165Supports view frustum culling, occlusion culling, small feature culling, 
    127166Level Of Detail (LOD) nodes, state sorting, vertex arrays and display 
    128167lists as part of the core scene graph. These together make the OpenSceneGraph 
     
    135174be found at Vterrain.org and TerrainEngine.com, both of which integrate 
    136175with the OpenSceneGraph. 
    137 <p><b><i>Productivity</i></b> - by combining lessons learned from established 
    138 scene graphs like Performer and Open Inventor, with modern software engineering 
    139 boosts like Design Patterns, along with a great deal of feedback early on 
     176 
     177<li><b><i>Productivity</i></b> </li> 
     178Combining lessons learned from established scene graphs like Performer  
     179and Open Inventor, with modern software engineering 
     180methods like Design Patterns, along with a great deal of feedback early on 
    140181in the development cycle, it has been possible to design a library that is 
    141182clean and highly interpretable. This has made it easy for users to adopt 
    142183to the OpenSceneGraph and to integrate it with their own applications. With 
    143 a full feature set in the core scene graph, utilities to set up the scene 
    144 graph and viewers and a wide range of loaders it is possible to create 
    145 an application and bring in user data with a very small amount of code. 
    146 <p><b><i>Portability</i></b> - The core scene graph has also been designed to 
     184a full feature set in the core scene graph, utilities (osgUtil) to set up the scene 
     185graph and viewers (osgProducer). 
     186</p> 
     187<p> 
     188For reading and writing databases an addition database library (osgDB) adds support for a wide 
     189variety of database formats via a extensible dynamic plugin mechansim - the distribution now includes 33 
     190seperate plugins for loading various 3D and Image data formats. 3D Database loaders include OpenFlight (.flt),  
     191TerraPage (.txp) including multi-threading support, LightWave (.lwo), Alias Wavefront (.obj),  
     192Carbon Graphics GEO (.geo), 3D Studio MAX (.3ds), Peformer (.pfb), Quake Character Models (.md2). Direct X (.x),  
     193and Inventor Ascii 2.0 (.iv)/ VRML 1.0 (.wrl), Designer Workshop (.dw) and AC3D (.ac) and the native .osg ASCII format. 
     194Image loaders include .rgb, .gif, .jpg, .png, .tiff, .pic, .bmp, .dds (include compressed mip mapped imagery), .tga and qucktime (under OSX).  A whole set of quality fonts  
     195can also be loaded via the freetype plugin. 
     196</p> 
     197<p> 
     198The scene graph also has a set of <i>Node Kits</i> which are seperate libraries 
     199that be compiled directly or loaded in at runtime to add support for particle systems (osgParticle), 
     200high quality anti-aliased text (osgText) and navigational light points (osgSim).   
     201 
     202<li><b><i>Portability</i></b></li> 
     203The core scene graph has also been designed to 
    147204have minimal dependency on any specific platform, requiring little more than 
    148205Standard C++ and OpenGL. This has allowed the scene graph to be rapidly 
    149206ported to a wide range of platforms - originally developed on IRIX, then 
    150207ported to Linux, then to Windows, then FreeBSD, Mac OSX, Solaris, HP-UX and  
    151 even a report of successful porting to PlayStation2!  
    152 <p> 
     208we even a report of successful porting to PlayStation2!  
     209<br> 
    153210The core scene graph library being completely windowing system independent makes  
    154211it easy for users to add their own window-specific libraries and applications on top. 
    155212In the distribution there is already the osgProducer library which integrates with <a href="http://www.andesengineering.com/Producer/">OpenProducer</a>, and in the Bazaar 
    156213found at openscenegrph.org/download/ one can find examples of applications 
    157 written on top of Qt, MFC, WxWindows and SDL. Users have also integrated it 
     214written on top of GLUT, Qt, MFC, WxWindows and SDL. Users have also integrated it 
    158215with Motif, and X. 
    159 <p><b><i>Scalability</i></b> - the scene graph will not only run on portables all 
    160 the way up to Onyx Infinite Reality Monsters, it supports the multiple 
     216 
     217<li><b><i>Scalability</i></b></li>  
     218The scene graph will not only run on portables all 
     219the way up to Onyx Infinite Reality Monsters, but also supports the multiple 
    161220graphics subsystems found on machines like a mulitpipe Onyx. This is 
    162221possible because the core scene graph supports multiple graphics contexts 
     
    167226subsystems. Support for multiple graphic context and multi-threading is all 
    168227available out of the box via osgProducer - all the examples in the distribution 
    169 can run multi-pipe just by use a simple configuation file.</ol> 
     228can run multi-pipe just by use a simple configuation file. 
     229 
     230</ul> 
    170231 
    171232All the source to the OSG is published under the Open Scene Graph Public License 
     
    189250have already adopted the OpenSceneGraph for their projects, all over the world. 
    190251<br> 
    191 <hr> 
     252 
     253<br> 
    192254<h3> 
    193255<u>Getting started</u></h3> 
     
    199261via cvs. 
    200262<p>The binary distribution contains just the libraries (.dll's /.so's) 
    201 and demo executables. This is suitable for using the OpenSceneGraph with 
     263and example executables. This is suitable for using the OpenSceneGraph with 
    202264an application that has already been compiled but depends at runtime on 
    203265the OpenSceneGraph. 
     266</p> 
    204267<p>The development distribution contains the libraries (.dll's /.so's), 
    205 demo executables, include files, and source to the demos. This is suitable 
     268example executables, include files, and source to the examples. This is suitable 
    206269for using the developers using the OpenSceneGraph. 
     270</p> 
    207271<p>The source distribution contains all the source and include files 
    208272required to build the OpenSceneGraph from scratch, and is ideal if you 
    209273want to learn more about how the scene graph works, how to extend it, and 
    210274to track down and fix any problems that you come across. 
     275</p> 
    211276<p>If you are using a source distribution then read the <a href="install.html">installation</a> 
    212277instructions for how to get the OpenSceneGraph compiling and installed 
     
    214279OpenSceneGraph depend upon, such as Producer. Check the <a href="dependencies.html">dependencies</a> 
    215280list for further details. 
     281</p> 
    216282<p>For full instructions of how to run the examples read the <a href="examples.html">examples</a> 
    217283page. 
    218 <br> 
    219 <hr> 
     284</p> 
     285<br> 
     286 
    220287<h3> 
    221288<u>Learning how to use the OpenSceneGraph</u></h3> 
    222 The OpenSceneGraph distribution comes with a reference guide for each of 
     289<p>The OpenSceneGraph distribution comes with a reference guide for each of 
    223290the component libraries - osg, osgDB, osgUtil, osgText, osgSim, osgParticle and osgProducer, a set 
    224 of examples - the source of which can be found in examples. For questions 
    225 or help which can't be easily be answered by the reference guide and demo 
     291of 42 examples - the source of which can be found in examples/ directory in the distribution. For questions 
     292or help which can't be easily be answered by the reference guide and examples 
    226293source, one should join the mailing list (details below). There are also 
    227294the beginnings of a <a href="http://www.c2.com/cgi/wiki?OpenSceneGraphFaq">Wiki 
    228295based FAQ</a> which may help answer a few of the common queries. 
     296</p> 
    229297<p>A programming guide will be available in form of a OpenSceneGraph book 
    230298which is being written by Don Burns and Robert Osfield, parts of it will 
    231299be available online. 
     300</p> 
    232301<p>Although not directly related to the OpenSceneGraph, once can learn 
    233302about scene graph technology from such sources as the <a href="http://www.sgi.com/software/inventor/manuals.html">Open 
     
    237306as a background to some of the techniques used is a SIGGRAPH <a href="http://www.opengl.org/developers/code/sig99/advanced99/course_slides/vissim/index.htm">Vis-Sim 
    238307course</a>. 
     308</p> 
    239309<p>The OpenSceneGraph uses OpenGL and does so with a deliberately thin layer, 
    240310making it easy to control the underlying OpenGL and to extend it with OpenGL 
     
    246316Book`</a> and OpenGL reference guide 'Blue Book'. The main <a href="http://www.opengl.org">OpenGL 
    247317website</a> is also a good source of links and further information. 
    248 <br> 
    249 <hr> 
     318</p> 
     319<br> 
     320 
     321<br> 
    250322<h3> 
    251323<u>Support and discussion - the <i>openscenegraph-news</i> mailing list</u></h3> 
    252324For scene graph related questions, bug reports, bug fixes, and general 
    253325design and development discussion one should join the <a href="http://lists.sourceforge.net/mailman/listinfo/openscenegraph-news">openscenegraph-news</a> 
    254 mailing list, and check the the mailing list <a href="http://www.geocrawler.com/redir-sf.php3?list=openscenegraph-news">archives</a>. 
     326mailing list, and check the the mailing list <a href="http://sourceforge.net/mailarchive/forum.php?forum_id=4775">archives</a>. 
    255327<p>Professional support is also available in the form of confidential online, 
    256328phone and onsite support and consultancy, for details contact Robert Osfield