gnu3dkit-discuss
[Top][All Lists]
Advanced

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

Re: [Gnu3dkit-discuss] Sharing geometry


From: Philippe C.D. Robert
Subject: Re: [Gnu3dkit-discuss] Sharing geometry
Date: Thu, 4 Jul 2002 19:34:34 +0200

Hi Brent,

On Thursday, July 4, 2002, at 06:56 PM, Brent Gulanowski wrote:
Is it better to have multiple shapes sharing one geometry or multiple groups sharing one shape? It appears the G3DGeometryBackend is designed on a 1:1 between shape and geometry. Can multiple groups reference the same shape easily enough?

The original design philosophy of the Shape aggregation was to be able to share geometry objects. But I believe that there is a bug which prevents it from working when you use view-frustum culling. I'd have to double check that.

<snip>

I do see problems with shared geometry in a detailed simulation, but I think that the memory savings would be worth the effort to solve them.

Yup, definitly!

For example, frame-based animations: Different world entities may be of the same type and use the same geometry, but they would not all be in synch for their animations. Quake 2 character models are a typical example.

For key-frame animations you could use a switch group managing n shapes. So you could have m switch groups, all having n shapes. Then the geometry nodes can be shared easily.

Of course, sharing is not possible whenever you directly modify the geometry.

In my game I might have a couple dozen enemy robots with very simple frame-based animations: spinning antennae, waving pincers, whatever, just for looks. It would be nice to have animated textures, too, in the future.

It's already there, you just transform the texture stack according to your needs - I have a small demo somewhere demonstrating this using render delegates.

So there would be a small set of fixed meshes, and each robot would worry about when to start a particular animation sequence. Some frequently occurring entities won't have any animations at all. So should I make a new GraphNode for non-animated shared-shape entities, and a new Group object for animated shared-shapes entities?

Depends on what you want to do. Normally you could just use group nodes, timed switch nodes or normal switch nodes which are controlled by your robot or game controller. Remember, the scene graph is supposed to be a data structure only, the logic should be part of some controllers ( MVC ).

For speed I'll probably want the various geometry objects that are part of an animated sequence to return the same min/max values and avoid triggering a recalculation of the bounding box every frame for every object -- that would be very expensive.

In the current 3DKit the bboxes are calculated transparently unless you disable it, but if you use n shapes with different geometries nothing has to be recalculated, of course - you just draw one shape of choice for the frame.

cheers,

-Phil
--
Philippe C.D. Robert
http://www.nice.ch/~phip




reply via email to

[Prev in Thread] Current Thread [Next in Thread]