user: How do I use Export Options in Blender? Include parameters, examples, warnings and best practices.

assistant: The following options are available when exporting to USD:

### General

Root Prim
:   If set, add a transform primitive with the given path to the stage as the parent of all exported data.

Include
:   Selection Only
    :   When checked, only selected objects are exported.
        Instanced objects, for example collections that are instanced in the scene,
        are considered ‘selected’ when their instancer is selected.

    Animation
    :   When checked, the entire scene frame range is exported.
        When unchecked, only the current scene frame is exported.

Blender Data
:   Custom Properties
    :   Exports [Custom Properties](../custom_properties.xhtml#files-data-blocks-custom-properties) as USD attributes.
        The *Namespace* property is used to determine the namespace that the attributes are written to.

    Namespace
    :   If set, add the given namespace as a prefix to exported custom property names.
        This only applies to property names that do not already have a prefix
        (e.g., it would apply to name `bar` but not `foo:bar`) and does not apply to Blender
        object and data names which are always exported in the `userProperties:blender` namespace.

        By default, `userProperties` namespace is used.

    Blender Names
    :   Author USD custom attributes containing the original Blender object and object data names.

Allow Unicode
:   Preserves UTF-8 encoded characters when writing USD prim and property names
    (requires software utilizing USD 24.03 or greater when opening the resulting files).

File References
:   Relative Paths
    :   Use relative paths to reference external files (i.e. textures, volumes) in the exported USD file,
        otherwise use absolute paths.

Convert Orientation
:   Convert orientation axis to a different convention to match other applications.
    Blender uses Y Forward, Z Up (since the front view looks along the +Y direction).
    For example, its common for applications to use Y as the up axis, in that case -Z Forward, Y Up is needed.

    Forward / Up Axis
    :   By mapping these to different axes you can convert rotations between applications default up and forward axes.

Units
:   Set the USD Stage `metersPerUnit` metadata to the chosen measurement.

    Meters Per Unit
    :   Value to use for `metersPerUnit` if Custom Units are selected.

Xform Ops
:   The type of transform operators to use to transform prims.

    Translate, Rotate, Scale:
    :   Export with translate, rotate, and scale `Xform` operators.

    Translate, Orient, Scale:
    :   Export with translate, orient quaternion, and scale `Xform` operators.

    Matrix:
    :   Export matrix operator.

Use Settings for
:   Determines whether to use *Viewport* or *Render* visibility of objects, modifier settings, and other
    properties providing similar options, during export.

### Object Types

Meshes
:   Exports [Mesh Objects](../../modeling/meshes/index.xhtml)

Lights
:   Exports [Light Objects](../../render/lights/index.xhtml)
    The `UsdLuxShapingAPI` is used to support spot lights.

World Dome Light
:   Convert the [world material](../../render/lights/world.xhtml) to a `UsdLuxDomeLight`.
    Currently works for simple materials, consisting of an environment texture connected to a background shader,
    with an optional vector multiply of the texture color.

Cameras
:   Exports [Camera Objects](../../render/cameras.xhtml)
    Only perspective cameras are exported.

Curves
:   Exports [Curve Objects](../../modeling/curves/index.xhtml)

Point Clouds
:   Exports [Point Cloud Objects](../../modeling/point_cloud/index.xhtml)

Volumes
:   Exports [Volume Objects](../../modeling/volumes/index.xhtml)

Hair
:   Exports parent hair strands are exported as a curve system.
    Hair strand colors are not exported.

### Geometry

UV Maps
:   When checked, includes UV coordinates for exported meshes.
    The name of the UV map in USD is the same as the name in Blender.

Rename UV Maps
:   Exports UV maps using the USD default name (`st`) as opposed to Blender’s default name (`UVMap`).

Normals
:   When checked, includes normals for exported meshes. This includes custom loop normals.

Merge parent Xform
:   Merge USD primitives with their Xform parent if possible. USD does not allow nested `UsdGeomGprims`,
    intermediary Xform prims will be defined to keep the USD file valid when encountering object
    hierarchies.

Triangulate
:   Triangulates the mesh before writing. For more detail on the specific option see
    the [Triangulate modifier](../../modeling/modifiers/generate/triangulate.xhtml).

### Rigging

Shape Keys
:   Export shape keys as USD blend shapes.

    Absolute shape keys are not supported.

Armatures
:   Export [Armatures](../../animation/armatures/index.xhtml) and meshes with
    [Armature Modifiers](../../modeling/modifiers/deform/armature.xhtml) as USD skeletons and skinned meshes.

    Limitations:

    - Modifiers in addition to Armature modifiers will not be applied.
    - Bendy bones are not supported.

Only Deform Bones
:   Only export [deform bones](../../animation/armatures/bones/properties/deform.xhtml#bpy-types-bone-use-deform) and their parents.

### Materials

Exports material information of the object.
By default the exporter approximates the [Principled BSDF](../../render/shader_nodes/shader/principled.xhtml)
node tree by converting it to USD’s Preview Surface format.

When a mesh has multiple materials assigned, a geometry subset is created for each material.
The first material (if any) is always applied to the mesh itself as well
(regardless of the existence of geometry subsets),
because the Hydra viewport does not support materials on subsets.
See [USD issue #542](https://github.com/PixarAnimationStudios/USD/issues/542)
for more information.

USD Preview Surface Network
:   Approximates a [Principled BSDF](../../render/shader_nodes/shader/principled.xhtml)
    node tree by converting it to USD’s Preview Surface format.

MaterialX Network
:   Generates material shading graphs using the [MaterialX](http://materialx.org/) standard.
    This standard is designed to support a high amount of interoperability among
    DCCs <Digital Content Creation>. In Blender, MaterialX supports most
    of the shader nodes and their functionality but has a few caveats (see below).

Export Textures
:   Method for exporting textures.

    Keep:
    :   Use original location of textures.

    Preserve:
    :   Preserve file paths of textures from already imported USD files.
        Export remaining textures to a ‘textures’ folder next to the USD file.

    New Path:
    :   Export textures to a ‘textures’ folder next to the USD file.

Overwrite Textures
:   Allow overwriting existing texture files when exporting textures.

USDZ Texture Downsampling
:   Choose a maximum size for all exported textures.

    Keep:
    :   Keep all current texture sizes.

    256:
    :   Resize to a maximum of 256 pixels.

    512:
    :   Resize to a maximum of 512 pixels.

    1024:
    :   Resize to a maximum of 1024 pixels.

    2048:
    :   Resize to a maximum of 2048 pixels.

    4096:
    :   Resize to a maximum of 4096 pixels.

    Custom:
    :   Specify a custom size.

        USDZ Custom Downscale Size
        :   The size in pixels of the *Custom* downsampling.

### Experimental

Instancing
:   As this is an experimental option. When unchecked,
    duplicated objects are exported as real objects, so a particle system with
    100 particles that is displayed with 100 meshes will have 100 individual meshes
    in the exported file. When checked, duplicated objects are exported as
    a reference to the original object. If the original object is not part of the export,
    the first duplicate is exported as real object and used as reference.