DAG depth causing problem?

New Message Reply Date view Thread view Subject view Author view

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...)

New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:51:48 PDT

This message has been cleansed for anti-spam protection. Replace '++at++' in any mail addresses with the '@' symbol.