Re: Update on 'pfMalloc() Unable to allocate heap ...'

New Message Reply Date view Thread view Subject view Author view

Jim Helman (jimh++at++surreal)
Tue, 15 Nov 94 19:41:41 -0800


The problem is with the OBJ loader. You can look at the code.

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


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:50:40 PDT

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