Introduction
This project involved developing a completely new loader for OpenSceneGraph, to load
Carbon Graphics GEO files. Before you ask, yes OSG already has a GEO loader but it is a
few years out of date and never supported some of the GEO file primitives/concepts. I already have
a framework for loading GEO files for my GeoReal application, so it was easier to develop
a completely new loader, rather than augment the existing one.
|
Phase 1: Geometry & Attributes
Phase 1 of the project involved building the base loader, and loading the GEO file for display.
Pretty much everything except animation behaviors which will be part of phase 2. This phase
has been completed, and the loader supports almost all of the geometry / nodes and attributes expressed in a GEO
file. This includes:
- Polygons, and Meshes
- Attributes at group, face, and vertex levels
- Textures, Materials, and Shaders
- Text (VFN & Raster)
- Transforms
- Transparency
- Instances & Externals
- Clip Regions
- LODs, Pages, Switches, etc.
Pretty much everything. There are a couple things that need to be added, but they will be finished during cleanup.
To fully support GEO, it was necessary to add new drawables for the Raster and VFN fonts. The clip regions are supported
using a cull callback on a node that has a scissor StateAttribute.
|

Example of GEO file loaded into OpenSceneGraph.
|
Phase 2: Animation Behaviors
Phase 2 of the project involves adding animation support. GEO supports quite a few behaviors that can be attributed
at various levels in the scene graph. My loader already supports loading these and building the appropriate objects.
This task is currently on-going. The following is supported:
- GEO Internal Vars (frame rate, elapsed time, etc.)
- External Vars
- Logic/Arithmetic Behaviors
- Group Level display behaviors (translate, rotate, scale, DCS.)
- Text Content Behaviors
- Color Ramp Behaviors
State Machine behaviors are almost completed, leaving face level transform behaviors as the lone task to complete. After
all of the behaviors are running in OSG, I will add the communications mechanisms (UDP, TCP/IP, Shared Memory, and Data File)
that the GeoReal components already support.
At this stage the loader has enough functionality to run most GEO files.
|