DAG depth causing problem?
lelkins++at++relay.nswc.navy.mil
Wed, 16 Aug 95 13:45:39 EDT
Hello...
I'm trying to build an articulated human figure in Performer, and I
haven't been having the best luck. My problems _appear_ to be related
to having a very deep scene graph, but I'd like to confirm that.
Specifically, when I load the whole scene up, I get a series of
messages like:
Performer Notice: Using 60Hz video rate on screen 0
ERROR #49 too many matrix pushes: ERR_PUSHMATRIX
ERROR #49 too many matrix pushes: ERR_PUSHMATRIX
...etc...
ERROR #49 too many matrix pushes: ERR_PUSHMATRIX
ERROR #49 too many matrix pushes: ERR_PUSHMATRIX
Bus error (core dumped)
The full scene graph at its deepest point is on the order of 100
nodes deep (around 30 joints, going up the spine and down into the
fingers, each with an SCS to transform to the joint location, a
DCS for the joint, and an SCS to transform back into the next segment
space). Since there are a bunch of articulated parts depending on
previous articulated parts, a simple flattening isn't appropriate.
Looking at the dbx 'where' info, it appears to die in the cull process,
nested very deep. I'm running in single-process mode.
I've never had this problem before, but then I've never tried to
do anything with graphs this deep, either.
Also, to debug this problem I've tried using pfPrint to get a dump of
the graph. The data it prints appears to be entirely correct, but it
crashes immediately after it finishes printing. It apparently crashes
in pfPrint, but it munges the return address so it's hard to tell
what's going on... dbx returns the following when this happens:
Writing scene file test_dump.txt
Process 1034 (demo_anthro.DBG) stopped on signal SIGBUS: Bus error (default) [<stripped>:0 ,0x63616c65]
(dbx) where
> 0 <stripped>() [<stripped>, 0x63616c65]
(dbx)
Anyway, I wondered if the 'too many matrix pushes' is due to Performer
calling pushmatrix too many times (the gl limit is 32, right?). If so,
then I should be able to get around this by hacking the scene graph
in two at some point, placing the lower half under a DCS that
would account for the translation down to that point, and adding that
DCS back to the root of the graph... But is there a similar problem
in pfPrint, or should I keep looking for a problem somewhere else?
Any nudges in the right direction will be greatly appreciated...
Thanks,
Les
----------------------------------------------------------------------
lelkins++at++relay.nswc.navy.mil The views expressed herein do not
represent those of NSWC, the Navy,
Les Elkins or the federal government.
Naval Surface Warfare Center
Dahlgren Division (And anybody who says otherwise is
Silver Spring, MD itching for a fight...)
This archive was generated by hypermail 2.0b2
on Mon Aug 10 1998 - 17:51:48 PDT