Finally, GeomNode is the glue that connects Geoms into the scene
graph. A GeomNode contains a list of one or more Geoms.
The GeomNode class inherits from PandaNode, so a GeomNode can be
attached directly to the scene graph like any other node; and like any
node, it inherits a transform and a render state from its parents in
the scene graph. This transform and state is then applied to each of
the node's Geoms.
Furthermore, the GeomNode stores an additional render state definition
for each Geom. This allows each Geom within a given GeomNode to have
its own unique state; for instance, each Geom may have a different
texture applied.
When a model is loaded from an egg file, normally all the state
definitions required to render the geometry will be stored on these
per-Geom state definitions, rather than at the GeomNode level. These
per-Geom states will override any state that is inherited from the
scene graph, unless that scene graph state has a priority higher than
the default priority of zero. (This is why it is necessary to specify
a second parameter of 1 to the nodePath.setTexture() call, if you want
to replace a texture that was applied to a model in the egg file.)