Graphics.NewbieIntroduction - lordmundi/wikidoctest GitHub Wiki

Newbie Introduction

« | NewbieIndex | Installing EDGE »

It is April 14. 2008. In 2007, I learned some about Doug and wrote this tutorial. In this edition, I want to bring focus on EDGE which is the end-use Doug application this lab supports.

EDGE

EDGE is a package containing Doug Graphics, CEV models, earth maps, scene and configuration files. The package is configured to be run out of the box, as you'll see in the "Hello, World" program.

DOUG

DOUG is the underlying renderer packaged within EDGE. Understanding what Doug is and is not, is instructive.

DOUG The Acronym

You guessed - "Dynamic Onboard Ubiquitous Graphics". "Ubiquitous" is defined: existing or being everywhere, esp. at the same time; omnipresent: ubiquitous fog; ubiquitous little ants. I don't like ubiquitous fog or ants for that matter. One day maybe dictionary.com will add ;ubiquitous graphics.

DOUG In A Nutshell

A renderer

Graphics In A Nutshell

One can break up 3D Graphics (NOT DOUG), into three components:

  1. Modeling
  2. Scene
  3. Rendering (What Doug Is)

DOUG is NOT a Model Builder

Models are the individual building blocks for a scene which is finally rendered. Models are normally constructed with a software package, NOT DOUG. Models are static descriptions of an object. The description is normally a polygonal representation in 3D space along with textures etc. The description is normally encased in a text file. There are a bazillion file formats for model descriptions. To render models, Doug has to understand the format. Doug has its own internal format which it keeps models in. There are ways to write plugins so that Doug can understand whatever format you prefer.

DOUG is NOT a Scene Builder

Individual models are linked to one another, in a spatial relative sense, to form a scene. Scene also includes lighting, and eye position. To build a scene, a NON-DOUG software package is used. The scene is a tree, the nodes of which are models. The parent-child relationship in the tree describe relative position and orientation. Operations on the parent affect the lineage (all subnodes) of that parent.

The scene, like the model, is a static description and may be housed in a file. Doug keeps this 'scene' internally as a tree.

DOUG is NOT a Simulator

Trick is the simulation toolkit normally used in conjunction with Doug. Doug and Trick are de-coupled. In theory, Doug could be driven by any other simulation package. Likewise, Trick could use any other renderer. Since they originated in the same place, Engineering Robotics, there are glue tools to more seamlessly join them. They also pair quite nicely.

DOUG IS a Renderer

Doug slurps the models and model tree (scene) and displays it to your 57 inch liquid crystal display (not included).

Within the universe of rendering, Doug is a real-time renderer. Doug is engineered to render fast because it is used for interactive animated simulation, and is concentrated on supporting virtual reality. To animate, rendering must occur at around 30 frames per second (fps), or else it looks jittery.

A non-realtime renderer may be primarily interested in photo realism and may expend minutes to render a scene. Doug's challenge is to keep speed while rendering as well as possible. To achieve this goal, Doug takes advantage of hardware, optimized internal algorithms and black voodoo.

DOUG is NOT ONLY a Renderer

Doug provides:

  1. Built-in dialogues for querying/modifying the rendered scene
  2. Flexible configuration through an input file
  3. Ability to communicate with Doug via a socket library
  4. Extension through 'plugins' (c-compiled *.so libs) examples:
    1. Adding your own OpenGL extension
    2. Adding hardware specific code
    3. Adding a model reader for different file formats (e.g. wavefront)
    4. Adding a shared lib for dynamically manipulating a scene
  5. Doug is fully extendable within the Tcl/Tk framework:
    1. Create Tcl commands in C for use in your own GUI
    2. Create Tk elements such as dialogue boxes, or menus for on-the-fly scene query/manipulation
    3. Create canvas type drawings (overlays) which sit on top of a rendering… say for cockpits

« | NewbieIndex | Installing EDGE »