From 490647f5f414e15ecdef5853867acb1942e0907e Mon Sep 17 00:00:00 2001
From: Robert Osfield
Date: Mon, 28 Apr 2003 11:37:53 +0000
Subject: [PATCH] Updates to the introduction.html.
Added support for new alignment modes in osgtext.
---
doc/introduction.html | 80 +++++++++++++++++++++---------------
examples/osgtext/osgtext.cpp | 4 +-
2 files changed, 50 insertions(+), 34 deletions(-)
diff --git a/doc/introduction.html b/doc/introduction.html
index 4b92d2523..e0530d225 100644
--- a/doc/introduction.html
+++ b/doc/introduction.html
@@ -74,7 +74,7 @@ representation of your 3d worlds, and efficient rendering thereof. Physics model
collision detection and audio are left to other development libraries that
a user will integrate with. The fact that scene graphs don't typically
integrate all these features is actually a really good thing: it aids interoprability
-with clients' own applications and tools and allows them to serve many varied
+with clients' own applications and tools and allows it to serve many varied
markets from games, visual simulation, virtual reality,
scientific and commercial visualization, training through to modeling programs.
@@ -93,11 +93,11 @@ maximizing graphics performance. A good scene graph employs two key techniques
of properties such as textures and materials, so that all similar objects
are drawn together. Without culling the CPU, buses and GPU will all become
swamped by many times the amount of data than they actually require to
-represent your work accurately. The hierarchical structure of the scene
+represent your scenes accurately. The hierarchical structure of the scene
graph makes this culling process very efficient, for instance a whole city can be culled
with just a few operations! Without state sorting, the the buses and GPU
will thrash between states, stalling the graphics pipeline and destroying graphics
-througput. As GPU's get faster and faster, the cost of stalling the graphics
+throughput. As GPU's get faster and faster, the cost of stalling the graphics pipeline
is also going up, so scene graphs are becoming ever more important.
@@ -110,7 +110,7 @@ in Object Oriented programming is that of object composition, enshrined
in the Composite Design Pattern, which fits the scene graph tree structure
perfectly and makes it a highly flexible and reusable design - in real
terms this means that it can be easily adapted to solve your problems.
-With scene graphs often also come additional utility libraries which range from
+Scene graphs also often come additional utility libraries which range from
helping users set up and manage graphics windows to importing of 3d models
and images. All this together allows the user to achieve a great deal with
very little coding. A dozen lines of code can be enough to load your data
@@ -137,7 +137,6 @@ underlying hardware configurations.
-
- Performance
@@ -156,8 +155,8 @@ Supports view frustum culling, occlusion culling, small feature culling,
Level Of Detail (LOD) nodes, state sorting, vertex arrays and display
lists as part of the core scene graph. These together make the OpenSceneGraph
one of the highest performance scene graph available. User feedback is that
-performance surpasses that of much more established scene graphs such as Performer, VTree, Vega
-Scene Graph and Java3D! The OpenSceneGraph also supports easy customization
+performance matches or surpasses that of much more established scene graphs such
+as Performer, VTree, Vega Scene Graph and Java3D! The OpenSceneGraph also supports easy customization
of the drawing process, which has allowed implementation of Continuous Level
of Detail (CLOD) meshes on top the scene graph. These allow the visualization
of massive terrain databases interactively, examples of this approach can
@@ -166,36 +165,49 @@ with the OpenSceneGraph.
- Productivity
-Combining lessons learned from established scene graphs like Performer
-and Open Inventor, with modern software engineering
-methods like Design Patterns, along with a great deal of feedback early on
-in the development cycle, it has been possible to design a library that is
-clean and highly interpretable. This has made it easy for users to adopt
-to the OpenSceneGraph and to integrate it with their own applications. With
-a full feature set in the core scene graph, utilities (osgUtil) to set up the scene
-graph and viewers (osgProducer).
+
+The core scene graph provides encapsulate the majority of OpenGL
+functionality including latest extensions, provides rending optimizations
+such as culling and sorting, and a whole set of add on libraries which make
+it possible to develop high peformance graphics applications very rapidly. The
+application developer is freed to concentrate on content and how that content is
+controlled rather than low level coding.
-For reading and writing databases an addition database library (osgDB) adds support for a wide
+Combining lessons learned from established scene graphs like Performer
+and Open Inventor, with modern software engineering methods like Design Patterns,
+along with a great deal of feedback early on in the development cycle, it has been
+possible to design a library that is clean and extensible. This has made it easy
+for users to adopt to the OpenSceneGraph and to integrate it with their own applications.
+
+
+For reading and writing databases an the database library (osgDB) adds support for a wide
variety of database formats via a extensible dynamic plugin mechansim - the distribution now includes 33
seperate plugins for loading various 3D and Image data formats. 3D Database loaders include OpenFlight (.flt),
TerraPage (.txp) including multi-threading support, LightWave (.lwo), Alias Wavefront (.obj),
Carbon Graphics GEO (.geo), 3D Studio MAX (.3ds), Peformer (.pfb), Quake Character Models (.md2). Direct X (.x),
and Inventor Ascii 2.0 (.iv)/ VRML 1.0 (.wrl), Designer Workshop (.dw) and AC3D (.ac) and the native .osg ASCII format.
-Image 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
-can also be loaded via the freetype plugin.
+Image loaders include .rgb, .gif, .jpg, .png, .tiff, .pic, .bmp, .dds (include compressed mip mapped imagery), .tga and qucktime (under OSX).
+A whole set of high quality, anti-aliased fonts can also be loaded via the freetype plugin.
-The scene graph also has a set of Node Kits which are seperate libraries
-that be compiled directly or loaded in at runtime to add support for particle systems (osgParticle),
+The scene graph also has a set of Node Kits which are seperate libraries,
+that can be compiled in with your applications or loaded in at runtime, which add support for particle systems (osgParticle),
high quality anti-aliased text (osgText) and navigational light points (osgSim).
-The community has also developed a number of additional Node Kits such as osgNV
-(which includes support for NVidia's vertex, fragment, combiner etc extension and NVidia's Cg shader language.), a whole set libraries that
-integrating the leading Windowing API's and whole applications like OSG-Edit. Links can be found in the bazaar sections on the
+The community has also developed a number of additional Node Kits such as
+osgNV (which includes support for NVidia's vertex, fragment, combiner etc extension and NVidia's Cg shader language.),
+Demeter (CLOD terrain + integration with OSG).
+osgCal (which integrates Cal3D and the OSG),
+osgVortex (which integrates the CM-Labs Vortex physics enginer with OSG)
+and a whole set libraries that integrating the leading Windowing API's Links can be found in the bazaar sections on the
download page of OpenSceneGraph webiste.
+
+The project has also been integrated with VR Juggler and
+Vess virtual realilty the frameworks, with others in developments.
+
- Portability
The core scene graph has also been designed to
@@ -246,10 +258,16 @@ place, with a 1.0 release in second half of 2003. Despite the beta development s
the project has already earned the reputation as the leading open source scene
graph, and is establishing itself as a viable alternative to the commercial
scene graphs. Numerous companies, university researchers and graphics enthusiasts
-have already adopted the OpenSceneGraph for their projects, all over the world.
-
+have already adopted the OpenSceneGraph for their projects, all over the world.
+Examples of the wide variety of applications already developed ontop of the OpenSceneGraph include
+ Blue Marble Viewer,
+ Virtual Terrain Project,
+ Combat Simulator Project,
+ OSG-Edit. This is just a snippet of the projects
+ that use the project, more examples can be found on the screenshot pages and bazaar on the website.
+
+
-
Getting started
The first thing is to select the distribution which suits you, there are
@@ -265,7 +283,7 @@ the OpenSceneGraph.
The development distribution contains the libraries (.dll's /.so's),
example executables, include files, and source to the examples. This is suitable
-for using the developers using the OpenSceneGraph.
+for developers using the OpenSceneGraph.
The source distribution contains all the source and include files
required to build the OpenSceneGraph from scratch, and is ideal if you
@@ -281,7 +299,6 @@ list for further details.
For full instructions of how to run the examples read the examples
page.
-
Learning how to use the OpenSceneGraph
@@ -315,9 +332,6 @@ end it is worth obtaining a copy of the OpenGL programming guide - OpenGL
website is also a good source of links and further information.
-
-
-
Support and discussion - the openscenegraph-news mailing list
For scene graph related questions, bug reports, bug fixes, and general
diff --git a/examples/osgtext/osgtext.cpp b/examples/osgtext/osgtext.cpp
index 105a1252d..0feafe25f 100644
--- a/examples/osgtext/osgtext.cpp
+++ b/examples/osgtext/osgtext.cpp
@@ -227,7 +227,9 @@ osg::Group* createHUDText()
alignmentList.push_back(AlignmentPair(osgText::Text::RIGHT_TOP,"text->setAlignment(osgText::Text::RIGHT_TOP);"));
alignmentList.push_back(AlignmentPair(osgText::Text::RIGHT_CENTER,"text->setAlignment(osgText::Text::RIGHT_CENTER);"));
alignmentList.push_back(AlignmentPair(osgText::Text::RIGHT_BOTTOM,"text->setAlignment(osgText::Text::RIGHT_BOTTOM);"));
- alignmentList.push_back(AlignmentPair(osgText::Text::BASE_LINE,"text->setAlignment(osgText::Text::BASE_LINE);//default"));
+ alignmentList.push_back(AlignmentPair(osgText::Text::LEFT_BASE_LINE,"text->setAlignment(osgText::Text::BASE_LINE);"));
+ alignmentList.push_back(AlignmentPair(osgText::Text::CENTER_BASE_LINE,"text->setAlignment(osgText::Text::CENTER_BASE_LINE);"));
+ alignmentList.push_back(AlignmentPair(osgText::Text::RIGHT_BASE_LINE,"text->setAlignment(osgText::Text::RIGHT_BASE_LINE);"));
osg::Sequence* sequence = new osg::Sequence;
{