Best practice: Splitting large geometry

Aside from the management conveniences of having your model broken up into different egg files, there’s no technical reason to use one egg file or multiple egg files. The end result is the same. The same goes for using multiple egg vertex pools or one vertex pool: it all ends up the same once the egg file is loaded.

Note that there is no particular correlation between a construct in an egg file, and a GeomVertexData. A is an abstract concept used in an egg file to collect and number vertices; while a GeomVertexData is a low-level construct created once an egg file is loaded, and corresponds closely to a concept of a “vertex buffer”. A GeomVertexData is (more or less) sent directly to the graphics card in a single batch. For culling purposes, each cullable unit should usually have its own GeomVertexData, but the means nothing.

The smallest cullable unit is a Geom, which is stored within a GeomNode. Panda will create (roughly) one GeomNode for each entry in your egg file that contains polygons. Each GeomNode gets its own GeomVertexData, regardless of whether you have multiple vertex pools throughout the egg file or just one. So each different entry will be a separately cullable unit.

Note that this doesn’t apply to animated egg files. In these kinds of egg files, Panda will attempt to create just one GeomNode, and one GeomVertexData, for the entire file.

David