Jim Helman (jimh++at++surreal)
Tue, 15 Nov 94 19:41:41 -0800
If there are no material changes, LoadObj adds all the polygons into
a pfuBuilder before doing anything. In the case of very large
databases with hundreds of thousands of triangles, this causes the
process to run out of swap space on most reasonably sized machines.
The quick fix is to check if the builder has more than some number
of polygons, e.g. 500, and in that event to extract the geosets
(pfuMakeGSets) from the builder before adding any more.
The proper solution is to:
1) tstrip the database with a limit on strip length to say N
2) construct geosets with no more than N tris
3) place the geosets into a quad or octree type scene graph
(#1 and #2 ensure reasonable intersection performance, #3 efficient
culling). I've modified pfobj.c to restrain its desire to put the
entire database into a single geoset and added #3, since it was
easy. #1 and #2 are still lacking. A modified LoadObj for
Performer 1.2 is on sgigate.sgi.com:/pub/Performer/src/pfobj.c.
rgds,
-jim helman
jimh++at++surreal.asd.sgi.com
415/390-1151
This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:50:40 PDT