[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GTC: Status Report & Roadmap



Hi,

> Scene graph (kennel)
> ====================
> 
> Modularity: medium.
> Status: API is relatively stable, innards not quite as much so.
> 
> Maybe my naming scheme for scene graph is a little odd (kennel and
> dogs?)

How about using the standard SG naming scheme?

Node, leaf, LOD, SCS (Static Coordinate System), Geometry,
State, root, switch, etc.
 
> A scene graph is a description of everything in the virtual world.
> A world is composed of several objects (nodes). A node can be a
> simple mesh or a more complicated object (eg, a skeleton, a subworld,
> a fractal object). Each node specifies its position with respect to
> its parent node. The root node (the world) has no parent.

In more complete SGs, we have specialised nodes so we can
optimize traversals and rendering. Lovel of Detail Nodes,
Coordinate Nodes, State nodes and so on. Geometry are, in
most implementations, stored only in leaf nodes.

Some opmizations inlclude state sorting, frustrum culling
collision detection, depth sorting blah blah blah.

> The scene graph (kennel) is just a handy way for you to describe a
> world to the GTC library. The GTC library will use it for collision
> detection, networkin and other purposes. Having everything stored
> in a scene graph makes it easy to automate many things; in particular,
> networking is automatized. Eventually, we should also make it easy
> to save a scene graph to disk and restore it.

What about more specialized geometry like terrain and corridors?
How to use SG with this kind of data in an optimal way?
 
> A gtcMetaGfx is used to reference any type of 3d object. This is
> an object-oriented interface. A skeleton needs a special rendering
> function, different from that of a simple mesh. Therefore, a table
> of necessary functions for each MetaGfx type is made. It is called
> a gtcMetaGfxVTbl and currently it looks like this:
> 
> struct _gtcMetaGfxVTbl
> {
>   void (*put)(gtcMetaGfx *who, gtcReal where[4][4]);
>   float (*getsize)(gtcMetaGfx *who, gtcReal origin[3]);
>   void (*destroy)(gtcMetaGfx *who);
> };
> 

Gee, I'll have to work hard before getting familiar with
plain C object oriented programming.

Cheers,

+-----------------------------------------------------------+
|  Marcelo de Azevedo Wilbert Camelo  <camelo@led.ufsc.br>  |
|                                                           |
|    Laboratorio de Ensino a Distancia - Equipe Internet    |
|    Programa de Pos-Graduacao em Engenharia de Producao    |
| Universidade Federal de Santa Catarina - Florianopolis/SC |
+-----------------------------------------------------------+

*************************************************************
To unsubscribe, send an e-mail to majordomo@gtc.seul.org with
unsubscribe gtc-dev       in the body. http://gtc.seul.org/