user: What is Exporter Limitations and how is it used in Blender Python scripting?

assistant: Single-sided and Double-sided Meshes
:   USD seems to support neither per-material nor per-face-group double-sidedness,
    so Blender uses the flag from the first material to mark the entire mesh as single/double-sided.
    If there is no material it defaults to double-sided.

Materials
:   When there are multiple materials, the mesh faces are stored as geometry subset
    and each material is assigned to the appropriate subset.
    If there is only one material this is skipped. Note that the geometry subsets are not time-sampled,
    so it may break when an animated mesh changes topology.

Hair
:   Only the parent strands are exported, and only with a constant color.
    No UV coordinates, and no information about the normals.

Camera
:   Only perspective cameras are exported.

Particles
:   Particles are only written when they are alive, which means that they are always visible.
    There is currently no code that deals with marking them as invisible outside their lifespan.

    Objects instanced by particle system are exported by suffixing the object name with
    the particle’s persistent ID, giving each particle transform a unique name.

Geometry Node Modifiers
:   When using Geometry Nodes, the node graph must output only the geometry components matching the
    original object type. For example, to correctly export a Mesh that uses a geometry nodes
    modifier, the output of the modifier must only contain Mesh data. Similarly, a Curves object
    must only output Curves data and so on. If the output contains any non-matching component types
    then an incorrect export will result. Using the
    [Separate Components Node](../../modeling/geometry_nodes/geometry/operations/separate_components.xhtml) is one way to ensure
    that only the components you want are exported.

Instancing/Referencing
:   Exporting instanced objects and collections is supported through an experimental option available during USD
    export.

    Point instances, created with Geometry Nodes, are partially supported and will be exported using the
    `UsdGeomPointInstancer` prim type. Simple instancing scenarios using either the
    [Object Info Node](../../modeling/geometry_nodes/input/scene/object_info.xhtml) or the
    [Collection Info Node](../../modeling/geometry_nodes/input/scene/collection_info.xhtml) will work. More complex scenarios involving excluded
    collections, nested collections, or collections inside different Scenes may yield incorrect results. Consider
    using the [Realize Instances Node](../../modeling/geometry_nodes/instances/realize_instances.xhtml) for situations where incorrect instances
    are exported.

    Scene instances, created by directly instancing collections or objects, will be written to USD as references to the
    original. Supported object types include Mesh, Curves, and Point Clouds.

USDZ
:   Due to a current limitation in the USD library, UDIM textures cannot be include in the USDZ archive.
    This limitation will likely be addressed in a future version of USD.
    (See [USD pull request #2133](https://github.com/PixarAnimationStudios/USD/pull/2133).)