Blender V4.3
blender::io::usd Namespace Reference

Namespaces

namespace  detail
 
namespace  usdtokens
 

Classes

struct  ExportJobData
 
struct  ExtraLinkInfo
 
struct  ImportJobData
 
struct  ImportSettings
 
struct  InputSpec
 
struct  IntermediateNode
 
struct  NodePlacementContext
 
class  OnExportInvoker
 
class  OnImportInvoker
 
class  OnMaterialExportInvoker
 
struct  PointerRNAToPython
 
class  USDAbstractWriter
 
class  USDArmatureWriter
 
class  USDCameraReader
 
class  USDCameraWriter
 
class  USDCurvesReader
 
class  UsdCurvesTest
 
class  USDCurvesWriter
 
struct  USDExporterContext
 
struct  USDExportParams
 
class  UsdExportTest
 
class  USDGenericMeshWriter
 
class  USDGeomReader
 
class  USDHairWriter
 
class  USDHierarchyIterator
 
struct  USDHook
 
class  USDHookInvoker
 
class  USDImagingTest
 
struct  USDImportParams
 
class  USDInstanceReader
 
class  USDLightReader
 
class  USDLightWriter
 
struct  USDMaterialExportContext
 
class  USDMaterialReader
 
struct  USDMeshData
 
class  USDMeshReader
 
struct  USDMeshReadParams
 
class  USDMeshWriter
 
class  USDMetaballWriter
 
class  USDNurbsReader
 
class  USDPointInstancerReader
 
class  USDPointsReader
 
class  USDPointsWriter
 
class  USDPrimReader
 
struct  USDSceneExportContext
 
struct  USDSceneImportContext
 
class  USDShapeReader
 
class  USDSkeletonReader
 
class  USDStageCreationTest
 
class  USDStageReader
 
class  USDTransformWriter
 
class  UsdUsdzExportTest
 
class  USDVolumeReader
 
class  USDVolumeWriter
 
class  USDXformReader
 

Typedefs

using USDHookList = std::list<std::unique_ptr<USDHook>>
 
using ShaderToNodeMap = blender::Map<std::string, bNode *>
 
using ProtoReaderMap = blender::Map<pxr::SdfPath, blender::Vector<USDPrimReader *>>
 
using UsdPathSet = blender::Set<pxr::SdfPath>
 
using XformResult = std::tuple<pxr::GfMatrix4f, bool>
 
using ObjExportMap = Map<const Object *, pxr::SdfPath>
 
using InputSpecMap = blender::Map<std::string, InputSpec>
 

Enumerations

enum  { USD_NO_ERROR = 0 , USD_ARCHIVE_FAIL }
 
enum  eUSDMtlNameCollisionMode { USD_MTL_NAME_COLLISION_MAKE_UNIQUE = 0 , USD_MTL_NAME_COLLISION_REFERENCE_EXISTING = 1 }
 
enum  eUSDMtlPurpose { USD_MTL_PURPOSE_ALL = 0 , USD_MTL_PURPOSE_PREVIEW = 1 , USD_MTL_PURPOSE_FULL = 2 }
 
enum  eUSDAttrImportMode { USD_ATTR_IMPORT_NONE = 0 , USD_ATTR_IMPORT_USER = 1 , USD_ATTR_IMPORT_ALL = 2 }
 
enum  eUSDTexImportMode { USD_TEX_IMPORT_NONE = 0 , USD_TEX_IMPORT_PACK , USD_TEX_IMPORT_COPY }
 
enum  eUSDTexNameCollisionMode { USD_TEX_NAME_COLLISION_USE_EXISTING = 0 , USD_TEX_NAME_COLLISION_OVERWRITE = 1 }
 
enum  eSubdivExportMode { USD_SUBDIV_IGNORE = 0 , USD_SUBDIV_TESSELLATE = 1 , USD_SUBDIV_BEST_MATCH = 2 }
 
enum  eUSDXformOpMode { USD_XFORM_OP_TRS = 0 , USD_XFORM_OP_TOS = 1 , USD_XFORM_OP_MAT = 2 }
 
enum  eUSDZTextureDownscaleSize {
  USD_TEXTURE_SIZE_CUSTOM = -1 , USD_TEXTURE_SIZE_KEEP = 0 , USD_TEXTURE_SIZE_256 = 256 , USD_TEXTURE_SIZE_512 = 512 ,
  USD_TEXTURE_SIZE_1024 = 1024 , USD_TEXTURE_SIZE_2048 = 2048 , USD_TEXTURE_SIZE_4096 = 4096
}
 
enum  eUSDTexExportMode { USD_TEX_EXPORT_KEEP = 0 , USD_TEX_EXPORT_PRESERVE , USD_TEX_EXPORT_NEW_PATH }
 

Functions

static void visit_bones (const Bone *bone, FunctionRef< void(const Bone *)> visitor)
 
const ModifierDataget_enabled_modifier (const Object &obj, ModifierType type, const Depsgraph *depsgraph)
 
static const ArmatureModifierDataget_armature_modifier (const Object &obj, const Depsgraph *depsgraph)
 
void visit_bones (const Object *ob_arm, FunctionRef< void(const Bone *)> visitor)
 
void get_armature_bone_names (const Object *ob_arm, const bool use_deform, Vector< std::string > &r_names)
 
pxr::TfToken build_usd_joint_path (const Bone *bone, bool allow_unicode)
 
void create_pose_joints (pxr::UsdSkelAnimation &skel_anim, const Object &obj, const Map< StringRef, const Bone * > *deform_map, bool allow_unicode)
 
const Objectget_armature_modifier_obj (const Object &obj, const Depsgraph *depsgraph)
 
bool is_armature_modifier_bone_name (const Object &obj, const StringRefNull name, const Depsgraph *depsgraph)
 
bool can_export_skinned_mesh (const Object &obj, const Depsgraph *depsgraph)
 
void init_deform_bones_map (const Object *obj, Map< StringRef, const Bone * > *deform_map)
 
const pxr::TfToken BlenderBoneLengths ("blender:bone_lengths", pxr::TfToken::Immortal)
 
static std::pair< std::string, std::string > split_udim_pattern (const std::string &path)
 
static std::string get_asset_base_name (const char *src_path, ReportList *reports)
 
static std::string copy_asset_to_directory (const char *src_path, const char *dest_dir_path, eUSDTexNameCollisionMode name_collision_mode, ReportList *reports)
 
static std::string copy_udim_asset_to_directory (const char *src_path, const char *dest_dir_path, eUSDTexNameCollisionMode name_collision_mode, ReportList *reports)
 
bool copy_asset (const char *src, const char *dst, eUSDTexNameCollisionMode name_collision_mode, ReportList *reports)
 
bool asset_exists (const char *path)
 
std::string import_asset (const char *src, const char *import_dir, eUSDTexNameCollisionMode name_collision_mode, ReportList *reports)
 
static bool parent_dir_exists_on_file_system (const std::string &path)
 
bool is_udim_path (const std::string &path)
 
std::string get_export_textures_dir (const pxr::UsdStageRefPtr stage)
 
bool should_import_asset (const std::string &path)
 
bool paths_equal (const char *p1, const char *p2)
 
const char * temp_textures_dir ()
 
bool write_to_path (const void *data, size_t size, const char *path, ReportList *reports)
 
void ensure_usd_source_path_prop (const std::string &path, ID *id)
 
std::string get_usd_source_path (ID *id)
 
std::string get_relative_path (const std::string &path, const std::string &anchor)
 
void USD_path_abs (char *path, const char *basepath, bool for_import)
 
std::optional< pxr::SdfValueTypeName > convert_blender_type_to_usd (const eCustomDataType blender_type, bool use_color3f_type)
 
std::optional< eCustomDataTypeconvert_usd_type_to_blender (const pxr::SdfValueTypeName usd_type)
 
void copy_primvar_to_blender_attribute (const pxr::UsdGeomPrimvar &primvar, const pxr::UsdTimeCode timecode, const eCustomDataType data_type, const bke::AttrDomain domain, const OffsetIndices< int > face_indices, bke::MutableAttributeAccessor attributes)
 
void copy_blender_attribute_to_primvar (const GVArray &attribute, const eCustomDataType data_type, const pxr::UsdTimeCode timecode, const pxr::UsdGeomPrimvar &primvar, pxr::UsdUtilsSparseValueWriter &value_writer)
 
template<typename BlenderT , typename USDT >
void copy_blender_buffer_to_primvar (const VArray< BlenderT > &buffer, const pxr::UsdTimeCode timecode, const pxr::UsdGeomPrimvar &primvar, pxr::UsdUtilsSparseValueWriter &value_writer)
 
template<typename T >
pxr::VtArray< Tget_primvar_array (const pxr::UsdGeomPrimvar &primvar, const pxr::UsdTimeCode timecode)
 
template<typename USDT , typename BlenderT >
void copy_primvar_to_blender_buffer (const pxr::UsdGeomPrimvar &primvar, const pxr::UsdTimeCode timecode, const OffsetIndices< int > faces, MutableSpan< BlenderT > attribute)
 
pxr::TfToken TempBlendShapeWeightsPrimvarName ("temp:weights", pxr::TfToken::Immortal)
 
void ensure_blend_shape_skeleton (pxr::UsdStageRefPtr stage, pxr::UsdPrim &mesh_prim)
 
const Keyget_mesh_shape_key (const Object *obj)
 
bool is_mesh_with_shape_keys (const Object *obj)
 
void create_blend_shapes (pxr::UsdStageRefPtr stage, const Object *obj, const pxr::UsdPrim &mesh_prim, bool allow_unicode)
 
pxr::VtFloatArray get_blendshape_weights (const Key *key)
 
void remap_blend_shape_anim (pxr::UsdStageRefPtr stage, const pxr::SdfPath &skel_path, const pxr::SdfPathSet &mesh_paths)
 
Meshget_shape_key_basis_mesh (Object *obj)
 
static bool prim_path_valid (const char *path)
 
static bool export_params_valid (const USDExportParams &params)
 
static void ensure_root_prim (pxr::UsdStageRefPtr stage, const USDExportParams &params)
 
static void report_job_duration (const ExportJobData *data)
 
static void process_usdz_textures (const ExportJobData *data, const char *path)
 
static bool perform_usdz_conversion (const ExportJobData *data)
 
std::string image_cache_file_path ()
 
std::string get_image_cache_file (const std::string &file_name, bool mkdir)
 
std::string cache_image_color (const float color[4])
 
pxr::UsdStageRefPtr export_to_stage (const USDExportParams &params, Depsgraph *depsgraph, const char *filepath)
 
static void export_startjob (void *customdata, wmJobWorkerStatus *worker_status)
 
static void export_endjob_usdz_cleanup (const ExportJobData *data)
 
static void export_endjob (void *customdata)
 
static void create_temp_path_for_usdz_export (const char *filepath, blender::io::usd::ExportJobData *job)
 
static void set_job_filepath (blender::io::usd::ExportJobData *job, const char *filepath)
 
bool USD_export (const bContext *C, const char *filepath, const USDExportParams *params, bool as_background_job, ReportList *reports)
 
int USD_get_version ()
 
static CacheArchiveHandlehandle_from_stage_reader (USDStageReader *reader)
 
static USDStageReaderstage_reader_from_handle (CacheArchiveHandle *handle)
 
static bool gather_objects_paths (const pxr::UsdPrim &object, ListBase *object_paths)
 
static void convert_to_z_up (pxr::UsdStageRefPtr stage, ImportSettings *r_settings)
 
static void find_prefix_to_skip (pxr::UsdStageRefPtr stage, ImportSettings *r_settings)
 
static void report_job_duration (const ImportJobData *data)
 
static void import_startjob (void *customdata, wmJobWorkerStatus *worker_status)
 
static void import_endjob (void *customdata)
 
static void import_freejob (void *user_data)
 
bool USD_import (const bContext *C, const char *filepath, const USDImportParams *params, bool as_background_job, ReportList *reports)
 
static USDPrimReaderget_usd_reader (CacheReader *reader, const Object *, const char **r_err_str)
 
USDMeshReadParams create_mesh_read_params (const double motion_sample_time, const int read_flags)
 
void USD_read_geometry (CacheReader *reader, const Object *ob, blender::bke::GeometrySet &geometry_set, const USDMeshReadParams params, const char **r_err_str)
 
bool USD_mesh_topology_changed (CacheReader *reader, const Object *ob, const Mesh *existing_mesh, const double time, const char **r_err_str)
 
CacheReaderCacheReader_open_usd_object (CacheArchiveHandle *handle, CacheReader *reader, Object *object, const char *object_path)
 
void USD_CacheReader_free (CacheReader *reader)
 
CacheArchiveHandleUSD_create_handle (Main *, const char *filepath, ListBase *object_paths)
 
void USD_free_handle (CacheArchiveHandle *handle)
 
void USD_get_transform (CacheReader *reader, float r_mat_world[4][4], float time, float scale)
 
static USDHookListhook_list ()
 
void USD_register_hook (std::unique_ptr< USDHook > hook)
 
void USD_unregister_hook (USDHook *hook)
 
USDHookUSD_find_hook_name (const char idname[])
 
void register_hook_converters ()
 
static void handle_python_error (USDHook *hook, ReportList *reports)
 
void call_export_hooks (pxr::UsdStageRefPtr stage, Depsgraph *depsgraph, ReportList *reports)
 
void call_material_export_hooks (pxr::UsdStageRefPtr stage, Material *material, const pxr::UsdShadeMaterial &usd_material, ReportList *reports)
 
void call_import_hooks (pxr::UsdStageRefPtr stage, ReportList *reports)
 
static pxr::SdfPath get_unique_path (pxr::UsdStageRefPtr stage, const std::string &path)
 
static Imageload_image (std::string tex_path, Main *bmain, const USDImportParams &params)
 
static bNodeappend_node (bNode *dst_node, int16_t new_node_type, const char *out_sock, const char *in_sock, bNodeTree *ntree, float offset)
 
static bool node_search (bNode *fromnode, bNode *, void *userdata, const bool)
 
void world_material_to_dome_light (const USDExportParams &params, const Scene *scene, pxr::UsdStageRefPtr stage)
 
void dome_light_to_world_material (const USDImportParams &params, const ImportSettings &, Scene *scene, Main *bmain, const pxr::UsdLuxDomeLight &dome_light, const double motionSampleTime)
 
template<typename USDT >
static void read_face_display_color (Mesh *mesh, const pxr::UsdGeomPrimvar &primvar, const pxr::TfToken &pv_name, double motion_sample_time)
 
static std::optional< bke::AttrDomainconvert_usd_varying_to_blender (const pxr::TfToken usd_domain)
 
void read_generic_mesh_primvar (Mesh *mesh, const pxr::UsdGeomPrimvar &primvar, const double motionSampleTime, const bool is_left_handed)
 
static float3 to_float3 (pxr::GfVec3f vec3f)
 
static int bezier_point_count (int usd_count, bool is_cyclic)
 
static int point_count (int usdCount, CurveType curve_type, bool is_cyclic)
 
static Array< intcalc_curve_offsets (const pxr::VtIntArray &usdCounts, const CurveType curve_type, bool is_cyclic)
 
static void add_bezier_control_point (int cp, int offset, MutableSpan< float3 > positions, MutableSpan< float3 > handles_left, MutableSpan< float3 > handles_right, const Span< pxr::GfVec3f > usdPoints)
 
static bool curves_topology_changed (const bke::CurvesGeometry &curves, const Span< int > usd_offsets)
 
static CurveType get_curve_type (pxr::TfToken type, pxr::TfToken basis)
 
static std::optional< bke::AttrDomainconvert_usd_interp_to_blender (const pxr::TfToken usd_domain)
 
static IntermediateNode add_normal_map (bNodeTree *ntree, int column, NodePlacementContext *r_ctx)
 
static IntermediateNode add_scale_bias (const pxr::UsdShadeShader &usd_shader, bNodeTree *ntree, int column, bool feeds_normal_map, NodePlacementContext *r_ctx)
 
static IntermediateNode add_scale_bias_adjust (bNodeTree *ntree, int column, NodePlacementContext *r_ctx)
 
static IntermediateNode add_separate_color (const pxr::UsdShadeShader &usd_shader, const pxr::TfToken &usd_source_name, bNodeTree *ntree, int column, NodePlacementContext *r_ctx)
 
static IntermediateNode add_lessthan (bNodeTree *ntree, float threshold, int column, NodePlacementContext *r_ctx)
 
static IntermediateNode add_oneminus (bNodeTree *ntree, int column, NodePlacementContext *r_ctx)
 
void build_material_map (const Main *bmain, blender::Map< std::string, Material * > *r_mat_map)
 
Materialfind_existing_material (const pxr::SdfPath &usd_mat_path, const USDImportParams &params, const blender::Map< std::string, Material * > &mat_map, const blender::Map< std::string, std::string > &usd_path_to_mat_name)
 
static bNodeadd_input_named_attrib_node (bNodeTree *ntree, const char *name, int8_t prop_type)
 
static void decref (USDPrimReader *reader)
 
static Collectioncreate_collection (Main *bmain, Collection *parent, const char *name)
 
static void set_instance_collection (USDInstanceReader *instance_reader, const blender::Map< pxr::SdfPath, Collection * > &proto_collection_map)
 
static bool merge_with_parent (USDPrimReader *reader)
 
static void set_string_prop (IDProperty *idgroup, const char *prop_name, const char *str_val)
 
static void set_int_prop (IDProperty *idgroup, const char *prop_name, const int ival)
 
static void set_bool_prop (IDProperty *idgroup, const char *prop_name, const bool bval)
 
static void set_float_prop (IDProperty *idgroup, const char *prop_name, const float fval)
 
static void set_double_prop (IDProperty *idgroup, const char *prop_name, const double dval)
 
void set_id_props_from_prim (ID *id, const pxr::UsdPrim &prim, const eUSDAttrImportMode attr_import_mode, const pxr::UsdTimeCode time_code)
 
void import_blendshapes (Main *bmain, Object *mesh_obj, const pxr::UsdPrim &prim, ReportList *reports, const bool import_anim)
 
void import_skeleton (Main *bmain, Object *arm_obj, const pxr::UsdSkelSkeleton &skel, ReportList *reports, const bool import_anim)
 
void import_mesh_skel_bindings (Main *bmain, Object *mesh_obj, const pxr::UsdPrim &prim, ReportList *reports)
 
void skel_export_chaser (pxr::UsdStageRefPtr stage, const ObjExportMap &armature_export_map, const ObjExportMap &skinned_mesh_export_map, const ObjExportMap &shape_key_mesh_export_map, const Depsgraph *depsgraph)
 
void skinned_mesh_export_chaser (pxr::UsdStageRefPtr stage, const ObjExportMap &armature_export_map, const ObjExportMap &skinned_mesh_export_map, pxr::UsdGeomXformCache &xf_cache, const Depsgraph *depsgraph)
 
void shape_key_export_chaser (pxr::UsdStageRefPtr stage, const ObjExportMap &shape_key_mesh_export_map)
 
void export_deform_verts (const Mesh *mesh, const pxr::UsdSkelBindingAPI &skel_api, const Span< std::string > bone_names)
 
void create_skel_roots (pxr::UsdStageRefPtr stage, const USDExportParams &params)
 
std::string make_safe_name (const std::string &name, bool allow_unicode)
 
static void create_vector_attrib (const pxr::UsdPrim &prim, const IDProperty *prop, const pxr::TfToken &prop_token, const pxr::UsdTimeCode &timecode)
 
static void camera_sensor_size_for_render (const Camera *camera, const RenderData *rd, float *r_sensor, float *r_sensor_x, float *r_sensor_y)
 
static void populate_curve_widths (const bke::CurvesGeometry &curves, pxr::VtArray< float > &widths)
 
static pxr::TfToken get_curve_width_interpolation (const pxr::VtArray< float > &widths, const pxr::VtArray< int > &segments, const pxr::VtIntArray &control_point_counts, const bool is_cyclic, ReportList *reports)
 
static void populate_curve_verts (const bke::CurvesGeometry &curves, const Span< float3 > positions, pxr::VtArray< pxr::GfVec3f > &verts, pxr::VtIntArray &control_point_counts, pxr::VtArray< int > &segments, const bool is_cyclic, const bool is_cubic)
 
static void populate_curve_props (const bke::CurvesGeometry &curves, pxr::VtArray< pxr::GfVec3f > &verts, pxr::VtIntArray &control_point_counts, pxr::VtArray< float > &widths, pxr::TfToken &interpolation, const bool is_cyclic, const bool is_cubic, ReportList *reports)
 
static void populate_curve_verts_for_bezier (const bke::CurvesGeometry &curves, const Span< float3 > positions, const Span< float3 > handles_l, const Span< float3 > handles_r, pxr::VtArray< pxr::GfVec3f > &verts, pxr::VtIntArray &control_point_counts, pxr::VtArray< int > &segments, const bool is_cyclic)
 
static void populate_curve_props_for_bezier (const bke::CurvesGeometry &curves, pxr::VtArray< pxr::GfVec3f > &verts, pxr::VtIntArray &control_point_counts, pxr::VtArray< float > &widths, pxr::TfToken &interpolation, const bool is_cyclic, ReportList *reports)
 
static void populate_curve_props_for_nurbs (const bke::CurvesGeometry &curves, pxr::VtArray< pxr::GfVec3f > &verts, pxr::VtIntArray &control_point_counts, pxr::VtArray< float > &widths, pxr::VtArray< double > &knots, pxr::VtArray< int > &orders, pxr::TfToken &interpolation, const bool is_cyclic)
 
static std::optional< pxr::TfToken > convert_blender_domain_to_usd (const bke::AttrDomain blender_domain, bool is_bezier)
 
static void set_light_extents (const pxr::UsdPrim &prim, const pxr::UsdTimeCode time)
 
static pxr::UsdShadeShader create_usd_preview_shader (const USDExporterContext &usd_export_context, const pxr::UsdShadeMaterial &material, const char *name, int type)
 
static pxr::UsdShadeShader create_usd_preview_shader (const USDExporterContext &usd_export_context, const pxr::UsdShadeMaterial &material, bNode *node)
 
static void create_uv_input (const USDExporterContext &usd_export_context, bNodeSocket *input_socket, pxr::UsdShadeMaterial &usd_material, pxr::UsdShadeInput &usd_input, const std::string &active_uvmap_name, ReportList *reports)
 
static void export_texture (const USDExporterContext &usd_export_context, bNode *node)
 
static bNodefind_bsdf_node (Material *material)
 
static void get_absolute_path (const Image *ima, char *r_path)
 
static std::string get_tex_image_asset_filepath (const USDExporterContext &usd_export_context, bNode *node)
 
static const InputSpecMappreview_surface_input_map ()
 
static bNodeLinktraverse_channel (bNodeSocket *input, short target_type)
 
void set_normal_texture_range (pxr::UsdShadeShader &usd_shader, const InputSpec &input_spec)
 
template<typename T1 , typename T2 >
void create_input (pxr::UsdShadeShader &shader, const InputSpec &spec, const void *value, float scale)
 
static void create_usd_preview_surface_material (const USDExporterContext &usd_export_context, Material *material, pxr::UsdShadeMaterial &usd_material, const std::string &active_uvmap_name, ReportList *reports)
 
static void create_usd_viewport_material (const USDExporterContext &usd_export_context, const Material *material, const pxr::UsdShadeMaterial &usd_material)
 
static void create_uvmap_shader (const USDExporterContext &usd_export_context, const bNodeLink *uvmap_link, const pxr::UsdShadeMaterial &usd_material, const pxr::UsdShadeInput &usd_input, const std::string &active_uvmap_name, ReportList *reports)
 
static void create_transform2d_shader (const USDExporterContext &usd_export_context, bNodeLink *mapping_link, pxr::UsdShadeMaterial &usd_material, pxr::UsdShadeInput &usd_input, const std::string &uvmap_name, ReportList *reports)
 
static bool is_in_memory_texture (Image *ima)
 
static bool is_packed_texture (const Image *ima)
 
static std::string get_in_memory_texture_filename (Image *ima)
 
static void export_in_memory_texture (Image *ima, const std::string &export_dir, const bool allow_overwrite, ReportList *reports)
 
static pxr::TfToken get_node_tex_image_color_space (const bNode *node)
 
static pxr::TfToken get_node_tex_image_wrap (const bNode *node)
 
static std::string get_tex_image_asset_filepath (const Image *ima)
 
std::string get_tex_image_asset_filepath (Image *ima, const pxr::UsdStageRefPtr stage, const USDExportParams &export_params)
 
std::string get_tex_image_asset_filepath (const std::string &path, const std::string &stage_path, const USDExportParams &export_params)
 
std::string get_tex_image_asset_filepath (bNode *node, const pxr::UsdStageRefPtr stage, const USDExportParams &export_params)
 
static void copy_tiled_textures (Image *ima, const std::string &dest_dir, const bool allow_overwrite, ReportList *reports)
 
static void copy_single_file (const Image *ima, const std::string &dest_dir, const bool allow_overwrite, ReportList *reports)
 
static void export_texture (Image *ima, const pxr::UsdStageRefPtr stage, const bool allow_overwrite, ReportList *reports)
 
static void export_texture (const USDExporterContext &usd_export_context, Image *ima)
 
pxr::TfToken token_for_input (const char *input_name)
 
pxr::UsdShadeMaterial create_usd_material (const USDExporterContext &usd_export_context, pxr::SdfPath usd_path, Material *material, const std::string &active_uvmap_name, ReportList *reports)
 
static void export_packed_texture (Image *ima, const std::string &export_dir, const bool allow_overwrite, ReportList *reports)
 
void export_texture (bNode *node, const pxr::UsdStageRefPtr stage, const bool allow_overwrite, ReportList *reports)
 
static const SubsurfModifierDataget_last_subdiv_modifier (eEvaluationMode eval_mode, Object *obj)
 
static std::optional< pxr::TfToken > convert_blender_domain_to_usd (const bke::AttrDomain blender_domain)
 
static void get_positions (const Mesh *mesh, USDMeshData &usd_mesh_data)
 
static void get_loops_polys (const Mesh *mesh, USDMeshData &usd_mesh_data)
 
static void get_edge_creases (const Mesh *mesh, USDMeshData &usd_mesh_data)
 
static void get_vert_creases (const Mesh *mesh, USDMeshData &usd_mesh_data)
 
static std::optional< pxr::TfToken > convert_blender_domain_to_usd (const bke::AttrDomain blender_domain)
 
static void check_catmullRom_curve (const pxr::UsdPrim prim, const bool is_periodic, const int vertex_count)
 
static void check_bezier_curve (const pxr::UsdPrim bezier_prim, const bool is_periodic, const int vertex_count)
 
static void check_nurbs_curve (const pxr::UsdPrim nurbs_prim, const int vertex_count, const int knots_count, const int order)
 
static void check_nurbs_circle (const pxr::UsdPrim nurbs_prim, const int vertex_count, const int knots_count, const int order)
 
 TEST_F (UsdCurvesTest, usd_export_curves)
 
static const bNodefind_node_for_type_in_graph (const bNodeTree *nodetree, const blender::StringRefNull type_idname)
 
 TEST_F (UsdExportTest, usd_export_rain_mesh)
 
 TEST_F (UsdExportTest, usd_export_material)
 
 TEST (utilities, make_safe_name)
 
 TEST_F (USDImagingTest, CapsuleAdapterTest)
 
 TEST_F (USDStageCreationTest, JSONFileLoadingTest)
 
 TEST_F (UsdUsdzExportTest, usdz_export)
 

Variables

constexpr char UDIM_PATTERN [] = "<UDIM>"
 
constexpr char UDIM_PATTERN2 [] = "%3CUDIM%3E"
 
constexpr int UDIM_START_TILE = 1001
 
constexpr int UDIM_END_TILE = 1100
 
pxr::TfToken TempBlendShapeWeightsPrimvarName
 
const StringRefNull usd_curves_test_filename = "usd/usd_curves_test.blend"
 
const StringRefNull output_filename = "usd/output.usda"
 
const StringRefNull simple_scene_filename = "usd/usd_simple_scene.blend"
 
const StringRefNull materials_filename = "usd/usd_materials_export.blend"
 
const StringRefNull usdz_export_test_filename = "usd/usdz_export_test.blend"
 
char temp_dir [FILE_MAX]
 
char temp_output_dir [FILE_MAX]
 
char output_filepath [FILE_MAX]
 

Typedef Documentation

◆ InputSpecMap

Definition at line 114 of file usd_writer_material.cc.

◆ ObjExportMap

using blender::io::usd::ObjExportMap = Map<const Object *, pxr::SdfPath>

Map an object to its USD prim export path.

Definition at line 87 of file usd_skel_convert.hh.

◆ ProtoReaderMap

Map a USD prototype prim path to the list of readers that convert the prototype data.

Definition at line 32 of file usd_reader_stage.hh.

◆ ShaderToNodeMap

Definition at line 24 of file usd_reader_material.hh.

◆ USDHookList

using blender::io::usd::USDHookList = std::list<std::unique_ptr<USDHook>>

Definition at line 33 of file usd_hook.cc.

◆ UsdPathSet

Definition at line 34 of file usd_reader_stage.hh.

◆ XformResult

using blender::io::usd::XformResult = std::tuple<pxr::GfMatrix4f, bool>

A transformation matrix and a boolean indicating whether the matrix is constant over time.

Definition at line 19 of file usd_reader_xform.hh.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
USD_NO_ERROR 
USD_ARCHIVE_FAIL 

Definition at line 155 of file usd_capi_import.cc.

◆ eSubdivExportMode

Enumerator
USD_SUBDIV_IGNORE 

Subdivision scheme = None, export base mesh without subdivision.

USD_SUBDIV_TESSELLATE 

Subdivision scheme = None, export subdivided mesh.

USD_SUBDIV_BEST_MATCH 

Apply the USD subdivision scheme that is the closest match to Blender. Reverts to USD_SUBDIV_TESSELLATE if the subdivision method is not supported.

Definition at line 79 of file usd.hh.

◆ eUSDAttrImportMode

Behavior for importing of custom attributes / properties outside a prim's regular schema.

Enumerator
USD_ATTR_IMPORT_NONE 
USD_ATTR_IMPORT_USER 
USD_ATTR_IMPORT_ALL 

Definition at line 54 of file usd.hh.

◆ eUSDMtlNameCollisionMode

Behavior when the name of an imported material conflicts with an existing material.

Enumerator
USD_MTL_NAME_COLLISION_MAKE_UNIQUE 
USD_MTL_NAME_COLLISION_REFERENCE_EXISTING 

Definition at line 35 of file usd.hh.

◆ eUSDMtlPurpose

Enumerator
USD_MTL_PURPOSE_ALL 
USD_MTL_PURPOSE_PREVIEW 
USD_MTL_PURPOSE_FULL 

Definition at line 43 of file usd.hh.

◆ eUSDTexExportMode

Behavior when exporting textures.

Enumerator
USD_TEX_EXPORT_KEEP 
USD_TEX_EXPORT_PRESERVE 
USD_TEX_EXPORT_NEW_PATH 

Definition at line 110 of file usd.hh.

◆ eUSDTexImportMode

Behavior when importing textures from a package (e.g., USDZ archive) or from a URI path.

Enumerator
USD_TEX_IMPORT_NONE 
USD_TEX_IMPORT_PACK 
USD_TEX_IMPORT_COPY 

Definition at line 64 of file usd.hh.

◆ eUSDTexNameCollisionMode

Behavior when the name of an imported texture file conflicts with an existing file.

Enumerator
USD_TEX_NAME_COLLISION_USE_EXISTING 
USD_TEX_NAME_COLLISION_OVERWRITE 

Definition at line 74 of file usd.hh.

◆ eUSDXformOpMode

Enumerator
USD_XFORM_OP_TRS 
USD_XFORM_OP_TOS 
USD_XFORM_OP_MAT 

Definition at line 91 of file usd.hh.

◆ eUSDZTextureDownscaleSize

Enumerator
USD_TEXTURE_SIZE_CUSTOM 
USD_TEXTURE_SIZE_KEEP 
USD_TEXTURE_SIZE_256 
USD_TEXTURE_SIZE_512 
USD_TEXTURE_SIZE_1024 
USD_TEXTURE_SIZE_2048 
USD_TEXTURE_SIZE_4096 

Definition at line 97 of file usd.hh.

Function Documentation

◆ add_bezier_control_point()

static void blender::io::usd::add_bezier_control_point ( int cp,
int offset,
MutableSpan< float3 > positions,
MutableSpan< float3 > handles_left,
MutableSpan< float3 > handles_right,
const Span< pxr::GfVec3f > usdPoints )
static

◆ add_input_named_attrib_node()

static bNode * blender::io::usd::add_input_named_attrib_node ( bNodeTree * ntree,
const char * name,
int8_t prop_type )
static

◆ add_lessthan()

◆ add_normal_map()

static IntermediateNode blender::io::usd::add_normal_map ( bNodeTree * ntree,
int column,
NodePlacementContext * r_ctx )
static

◆ add_oneminus()

◆ add_scale_bias()

◆ add_scale_bias_adjust()

◆ add_separate_color()

static IntermediateNode blender::io::usd::add_separate_color ( const pxr::UsdShadeShader & usd_shader,
const pxr::TfToken & usd_source_name,
bNodeTree * ntree,
int column,
NodePlacementContext * r_ctx )
static

◆ append_node()

static bNode * blender::io::usd::append_node ( bNode * dst_node,
int16_t new_node_type,
const char * out_sock,
const char * in_sock,
bNodeTree * ntree,
float offset )
static

◆ asset_exists()

bool blender::io::usd::asset_exists ( const char * path)

Invoke the USD asset resolver to determine if the asset with the given path exists.

Parameters
paththe path to resolve
Returns
true if the asset exists, false otherwise

Definition at line 272 of file usd_asset_utils.cc.

Referenced by copy_udim_asset_to_directory(), export_packed_texture(), and should_import_asset().

◆ bezier_point_count()

static int blender::io::usd::bezier_point_count ( int usd_count,
bool is_cyclic )
inlinestatic

Definition at line 35 of file usd_reader_curve.cc.

References is_cyclic().

Referenced by point_count(), and blender::io::usd::USDCurvesReader::read_curve_sample().

◆ BlenderBoneLengths()

const pxr::TfToken blender::io::usd::BlenderBoneLengths ( "blender:bone_lengths" ,
pxr::TfToken::Immortal  )
inline

Referenced by import_skeleton().

◆ build_material_map()

void blender::io::usd::build_material_map ( const Main * bmain,
blender::Map< std::string, Material * > * r_mat_map )

Returns a map containing all the Blender materials which allows a fast lookup of the material by name. Note that the material name key might be modified to be a valid USD identifier, to match material names in the imported USD.

Definition at line 1384 of file usd_reader_material.cc.

References BLI_assert_msg, LISTBASE_FOREACH, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_or_add_default(), make_safe_name(), material, and Main::materials.

Referenced by blender::io::usd::USDStageReader::import_all_materials().

◆ build_usd_joint_path()

pxr::TfToken blender::io::usd::build_usd_joint_path ( const Bone * bone,
bool allow_unicode )

Return the USD joint path corresponding to the given bone. For example, for the bone "Hand", this function might return the full path "Shoulder/Elbow/Hand" of the joint in the hierarchy.

Parameters
boneThe bone whose path will be queried.
allow_unicodeWhether to allow unicode bone names to be used
Returns
The path to the joint.

Definition at line 99 of file usd_armature_utils.cc.

References make_safe_name(), Bone::name, and Bone::parent.

Referenced by create_pose_joints().

◆ cache_image_color()

◆ CacheReader_open_usd_object()

◆ calc_curve_offsets()

static Array< int > blender::io::usd::calc_curve_offsets ( const pxr::VtIntArray & usdCounts,
const CurveType curve_type,
bool is_cyclic )
static

◆ call_export_hooks()

void blender::io::usd::call_export_hooks ( pxr::UsdStageRefPtr stage,
Depsgraph * depsgraph,
ReportList * reports )

Call the 'on_export' chaser function defined in the registered USDHook classes.

Definition at line 333 of file usd_hook.cc.

References blender::io::usd::USDHookInvoker::call(), depsgraph, hook_list(), and stage.

Referenced by export_to_stage().

◆ call_import_hooks()

void blender::io::usd::call_import_hooks ( pxr::UsdStageRefPtr stage,
ReportList * reports )

Call the 'on_import' chaser function defined in the registered USDHook classes.

Definition at line 356 of file usd_hook.cc.

References blender::io::usd::USDHookInvoker::call(), hook_list(), and stage.

Referenced by import_endjob().

◆ call_material_export_hooks()

void blender::io::usd::call_material_export_hooks ( pxr::UsdStageRefPtr stage,
Material * material,
const pxr::UsdShadeMaterial & usd_material,
ReportList * reports )

Call the 'on_material_export' hook functions defined in the registered #USDHook classes.

Definition at line 343 of file usd_hook.cc.

References blender::io::usd::USDHookInvoker::call(), hook_list(), and stage.

Referenced by create_usd_material().

◆ camera_sensor_size_for_render()

static void blender::io::usd::camera_sensor_size_for_render ( const Camera * camera,
const RenderData * rd,
float * r_sensor,
float * r_sensor_x,
float * r_sensor_y )
static

◆ can_export_skinned_mesh()

bool blender::io::usd::can_export_skinned_mesh ( const Object & obj,
const Depsgraph * depsgraph )

Query whether exporting a skinned mesh is supported for the given object. Currently, the object can be exported as a skinned mesh if it has an enabled armature modifier and no other enabled modifiers.

Parameters
objObject to query
depsgraphThe dependency graph where the object was evaluated
Returns
True if skinned mesh export is supported, false otherwise.

Definition at line 159 of file usd_armature_utils.cc.

References depsgraph, eModifierType_Armature, and get_enabled_modifier().

Referenced by blender::io::usd::USDMeshWriter::set_skel_export_flags().

◆ check_bezier_curve()

static void blender::io::usd::check_bezier_curve ( const pxr::UsdPrim bezier_prim,
const bool is_periodic,
const int vertex_count )
static

Test that the provided prim is a valid bezier curve. We also check it matches the expected wrap type, and has the expected number of vertices.

Definition at line 209 of file usd_curves_test.cc.

References EXPECT_EQ(), and wrap().

Referenced by TEST_F().

◆ check_catmullRom_curve()

static void blender::io::usd::check_catmullRom_curve ( const pxr::UsdPrim prim,
const bool is_periodic,
const int vertex_count )
static

Test that the provided prim is a valid catmullRom curve. We also check it matches the expected wrap type, and has the expected number of vertices.

Definition at line 159 of file usd_curves_test.cc.

References EXPECT_EQ(), and wrap().

Referenced by TEST_F().

◆ check_nurbs_circle()

static void blender::io::usd::check_nurbs_circle ( const pxr::UsdPrim nurbs_prim,
const int vertex_count,
const int knots_count,
const int order )
static

Test that the provided prim is a valid NURBS curve. We also check it matches the expected wrap type, and has the expected number of vertices. For NURBS, we also validate that the knots layout matches the expected layout for periodic/non-periodic curves according to the USD spec.

Definition at line 309 of file usd_curves_test.cc.

References EXPECT_EQ().

Referenced by TEST_F().

◆ check_nurbs_curve()

static void blender::io::usd::check_nurbs_curve ( const pxr::UsdPrim nurbs_prim,
const int vertex_count,
const int knots_count,
const int order )
static

Test that the provided prim is a valid NURBS curve. We also check it matches the expected wrap type, and has the expected number of vertices. For NURBS, we also validate that the knots layout matches the expected layout for periodic/non-periodic curves according to the USD spec.

Definition at line 262 of file usd_curves_test.cc.

References EXPECT_EQ().

Referenced by TEST_F().

◆ convert_blender_domain_to_usd() [1/3]

static std::optional< pxr::TfToken > blender::io::usd::convert_blender_domain_to_usd ( const bke::AttrDomain blender_domain)
static

◆ convert_blender_domain_to_usd() [2/3]

static std::optional< pxr::TfToken > blender::io::usd::convert_blender_domain_to_usd ( const bke::AttrDomain blender_domain)
static

Definition at line 62 of file usd_writer_points.cc.

References blender::bke::Point.

◆ convert_blender_domain_to_usd() [3/3]

static std::optional< pxr::TfToken > blender::io::usd::convert_blender_domain_to_usd ( const bke::AttrDomain blender_domain,
bool is_bezier )
static

Definition at line 365 of file usd_writer_curves.cc.

References blender::bke::Curve, and blender::bke::Point.

◆ convert_blender_type_to_usd()

std::optional< pxr::SdfValueTypeName > blender::io::usd::convert_blender_type_to_usd ( const eCustomDataType blender_type,
bool use_color3f_type )

◆ convert_to_z_up()

static void blender::io::usd::convert_to_z_up ( pxr::UsdStageRefPtr stage,
ImportSettings * r_settings )
static

◆ convert_usd_interp_to_blender()

◆ convert_usd_type_to_blender()

◆ convert_usd_varying_to_blender()

◆ copy_asset()

bool blender::io::usd::copy_asset ( const char * src,
const char * dst,
eUSDTexNameCollisionMode name_collision_mode,
ReportList * reports )

Invoke the USD asset resolver to copy an asset.

Parameters
srcsource path of the asset to copy
dstdestination path of the copy
name_collision_modebehavior when dst already exists
reportsthe storage for potential warning or error reports (generated using BKE_report API).
Returns
true if the copy succeeded, false otherwise

Definition at line 154 of file usd_asset_utils.cc.

References BKE_reportf(), RPT_ERROR, RPT_INFO, RPT_WARNING, and USD_TEX_NAME_COLLISION_OVERWRITE.

Referenced by copy_asset_to_directory().

◆ copy_asset_to_directory()

static std::string blender::io::usd::copy_asset_to_directory ( const char * src_path,
const char * dest_dir_path,
eUSDTexNameCollisionMode name_collision_mode,
ReportList * reports )
static

◆ copy_blender_attribute_to_primvar()

void blender::io::usd::copy_blender_attribute_to_primvar ( const GVArray & attribute,
const eCustomDataType data_type,
const pxr::UsdTimeCode timecode,
const pxr::UsdGeomPrimvar & primvar,
pxr::UsdUtilsSparseValueWriter & value_writer )

◆ copy_blender_buffer_to_primvar()

template<typename BlenderT , typename USDT >
void blender::io::usd::copy_blender_buffer_to_primvar ( const VArray< BlenderT > & buffer,
const pxr::UsdTimeCode timecode,
const pxr::UsdGeomPrimvar & primvar,
pxr::UsdUtilsSparseValueWriter & value_writer )

◆ copy_primvar_to_blender_attribute()

void blender::io::usd::copy_primvar_to_blender_attribute ( const pxr::UsdGeomPrimvar & primvar,
const pxr::UsdTimeCode timecode,
const eCustomDataType data_type,
const bke::AttrDomain domain,
const OffsetIndices< int > face_indices,
bke::MutableAttributeAccessor attributes )

◆ copy_primvar_to_blender_buffer()

template<typename USDT , typename BlenderT >
void blender::io::usd::copy_primvar_to_blender_buffer ( const pxr::UsdGeomPrimvar & primvar,
const pxr::UsdTimeCode timecode,
const OffsetIndices< int > faces,
MutableSpan< BlenderT > attribute )

◆ copy_single_file()

static void blender::io::usd::copy_single_file ( const Image * ima,
const std::string & dest_dir,
const bool allow_overwrite,
ReportList * reports )
static

◆ copy_tiled_textures()

◆ copy_udim_asset_to_directory()

static std::string blender::io::usd::copy_udim_asset_to_directory ( const char * src_path,
const char * dest_dir_path,
eUSDTexNameCollisionMode name_collision_mode,
ReportList * reports )
static

◆ create_blend_shapes()

void blender::io::usd::create_blend_shapes ( pxr::UsdStageRefPtr stage,
const Object * obj,
const pxr::UsdPrim & mesh_prim,
bool allow_unicode )

Convert shape keys on the given object to USD blend shapes. The blend-shapes will be added to the stage as children of the given USD mesh prim. The blend-shape names and targets will also be set as properties on the primitive.

Parameters
stageThe stage
objThe mesh object whose shape keys will be converted to blend shapes
mesh_primThe USD mesh that will be assigned the blend shape targets
allow_unicodeWhether to allow unicode encoded characters in the blend shape name

Definition at line 192 of file usd_blend_shape_utils.cc.

References Key::block, CLOG_WARN, data, KeyBlock::data, ListBase::first, float, get_mesh_shape_key(), indices, LISTBASE_FOREACH, LOG, make_safe_name(), stage, sub_v3_v3v3(), and KeyBlock::totelem.

Referenced by blender::io::usd::USDMeshWriter::init_blend_shapes().

◆ create_collection()

static Collection * blender::io::usd::create_collection ( Main * bmain,
Collection * parent,
const char * name )
static

Create a collection with the given parent and name.

Definition at line 76 of file usd_reader_stage.cc.

References BKE_collection_add().

Referenced by blender::io::usd::USDStageReader::create_proto_collections().

◆ create_input()

template<typename T1 , typename T2 >
void blender::io::usd::create_input ( pxr::UsdShadeShader & shader,
const InputSpec & spec,
const void * value,
float scale )

◆ create_mesh_read_params()

USDMeshReadParams blender::io::usd::create_mesh_read_params ( const double motion_sample_time,
const int read_flags )

◆ create_pose_joints()

void blender::io::usd::create_pose_joints ( pxr::UsdSkelAnimation & skel_anim,
const Object & obj,
const Map< StringRef, const Bone * > * deform_map,
bool allow_unicode )

Sets the USD joint paths as an attribute on the given USD animation, where the paths correspond to the bones of the given armature.

Parameters
skel_animThe animation whose joints attribute will be set
ob_armThe armature object
deform_mapA pointer to a map associating bone names with deform bones and their parents. If the pointer is not null, assume only deform bones are to be exported and bones not found in this map will be skipped
allow_unicodeWhether to allow unicode bone names to be used

Definition at line 112 of file usd_armature_utils.cc.

References BLI_assert, build_usd_joint_path(), bPose::chanbase, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::contains(), LISTBASE_FOREACH, and Object::pose.

◆ create_skel_roots()

void blender::io::usd::create_skel_roots ( pxr::UsdStageRefPtr stage,
const USDExportParams & params )

We must structure the scene graph to encapsulate skinned prim under a UsdSkelRoot prim. Per the USD documentation, a SkelRoot is a:

"Boundable prim type used to identify a scope beneath which skeletally-posed primitives are defined. A SkelRoot must be defined at or above a skinned primitive for any skinning behaviors in UsdSkel."

See: https://openusd.org/23.05/api/class_usd_skel_root.html#details

This function attempts to ensure that skinned prims and skeletons are encapsulated under SkelRoots, converting existing Xform primitives to SkelRoots to achieve this, if possible. In the case where no common ancestor which can be converted to a SkelRoot is found, this function issues a warning. One way to address such a case is by setting a root prim in the export options, so that this root prim can be converted to a SkelRoot for the entire scene.

Parameters
stageThe stage
paramsThe export parameters

Definition at line 52 of file usd_skel_root_utils.cc.

References BKE_reportf(), CLOG_INFO, CLOG_WARN, get_xform_ancestor(), LOG, params, RPT_WARNING, and stage.

Referenced by blender::io::usd::USDHierarchyIterator::process_usd_skel().

◆ create_temp_path_for_usdz_export()

static void blender::io::usd::create_temp_path_for_usdz_export ( const char * filepath,
blender::io::usd::ExportJobData * job )
static

To create a USDZ file, we must first create a .usd/a/c file and then covert it to .usdz. The temporary files will be created in Blender's temporary session storage. The .usdz file will then be moved to job->usdz_filepath.

Definition at line 615 of file usd_capi_export.cc.

References BKE_tempdir_session, BLI_path_basename(), BLI_path_extension_check(), BLI_path_extension_replace(), BLI_path_join, FILE_MAX, STRNCPY, blender::io::usd::ExportJobData::unarchived_filepath, and blender::io::usd::ExportJobData::usdz_filepath.

Referenced by set_job_filepath().

◆ create_transform2d_shader()

static void blender::io::usd::create_transform2d_shader ( const USDExporterContext & usd_export_context,
bNodeLink * mapping_link,
pxr::UsdShadeMaterial & usd_material,
pxr::UsdShadeInput & usd_input,
const std::string & uvmap_name,
ReportList * reports )
static

◆ create_usd_material()

pxr::UsdShadeMaterial blender::io::usd::create_usd_material ( const USDExporterContext & usd_export_context,
pxr::SdfPath usd_path,
Material * material,
const std::string & active_uvmap_name,
ReportList * reports )

Create USDMaterial from Blender material.

Parameters
default_uvused as the default UV set name sampled by the primvar reader shaders generated for image texture nodes that don't have an attached UVMap node.

Definition at line 1374 of file usd_writer_material.cc.

References call_material_export_hooks(), create_usd_preview_surface_material(), create_usd_viewport_material(), blender::io::usd::USDExporterContext::export_params, blender::io::usd::USDExportParams::generate_materialx_network, blender::io::usd::USDExportParams::generate_preview_surface, and blender::io::usd::USDExporterContext::stage.

Referenced by blender::io::usd::USDAbstractWriter::ensure_usd_material(), and blender::io::hydra::MaterialData::init().

◆ create_usd_preview_shader() [1/2]

static pxr::UsdShadeShader blender::io::usd::create_usd_preview_shader ( const USDExporterContext & usd_export_context,
const pxr::UsdShadeMaterial & material,
bNode * node )
static

◆ create_usd_preview_shader() [2/2]

◆ create_usd_preview_surface_material()

◆ create_usd_viewport_material()

static void blender::io::usd::create_usd_viewport_material ( const USDExporterContext & usd_export_context,
const Material * material,
const pxr::UsdShadeMaterial & usd_material )
static

◆ create_uv_input()

static void blender::io::usd::create_uv_input ( const USDExporterContext & usd_export_context,
bNodeSocket * input_socket,
pxr::UsdShadeMaterial & usd_material,
pxr::UsdShadeInput & usd_input,
const std::string & active_uvmap_name,
ReportList * reports )
static

◆ create_uvmap_shader()

static void blender::io::usd::create_uvmap_shader ( const USDExporterContext & usd_export_context,
const bNodeLink * uvmap_link,
const pxr::UsdShadeMaterial & usd_material,
const pxr::UsdShadeInput & usd_input,
const std::string & active_uvmap_name,
ReportList * reports )
static

◆ create_vector_attrib()

static void blender::io::usd::create_vector_attrib ( const pxr::UsdPrim & prim,
const IDProperty * prop,
const pxr::TfToken & prop_token,
const pxr::UsdTimeCode & timecode )
static

◆ curves_topology_changed()

static bool blender::io::usd::curves_topology_changed ( const bke::CurvesGeometry & curves,
const Span< int > usd_offsets )
static

Returns true if the number of curves or the number of curve points in each curve differ.

Definition at line 87 of file usd_reader_curve.cc.

References curves_topology_changed().

Referenced by curves_topology_changed(), and blender::io::usd::USDCurvesReader::read_curve_sample().

◆ decref()

static void blender::io::usd::decref ( USDPrimReader * reader)
static

◆ dome_light_to_world_material()

◆ ensure_blend_shape_skeleton()

void blender::io::usd::ensure_blend_shape_skeleton ( pxr::UsdStageRefPtr stage,
pxr::UsdPrim & mesh_prim )

USD implementations expect that a mesh with blend shape targets be bound to a skeleton with an animation that provides the blend shape weights. If the given mesh is not already bound to a skeleton this function will create a dummy skeleton with a single joint and will bind it to the mesh. This is typically required if the source Blender mesh has shape keys but not an armature deformer.

This function will also create a skel animation prim as a child of the skeleton and will copy the weight time samples from a temporary primvar on the mesh to the animation prim.

Parameters
stageThe stage
mesh_primThe USD mesh to which the skeleton will be bound

Definition at line 80 of file usd_blend_shape_utils.cc.

References usdtokens::Anim(), CLOG_WARN, usdtokens::joint1(), LOG, usdtokens::Skel(), stage, and TempBlendShapeWeightsPrimvarName.

Referenced by shape_key_export_chaser().

◆ ensure_root_prim()

static void blender::io::usd::ensure_root_prim ( pxr::UsdStageRefPtr stage,
const USDExportParams & params )
static

Create the root Xform primitive, if the Root Prim path has been set in the export options. In the future, this function can be extended to author transforms and additional schema data (e.g., model Kind) on the root prim.

Definition at line 151 of file usd_capi_export.cc.

References IO_AXIS_Y, IO_AXIS_Z, M_PI, mat3_from_axis_conversion(), mat3_to_eul(), mul_v3_fl(), params, stage, and transpose_m3().

Referenced by export_to_stage().

◆ ensure_usd_source_path_prop()

void blender::io::usd::ensure_usd_source_path_prop ( const std::string & path,
ID * id )

Add the given path as a custom property "usd_source_path" on the given id. If the path is a package-relative path (i.e., is relative to a USDZ archive) it will not be added a a property. If custom property "usd_source_path" already exists, this function does nothing.

Parameters
pathpath to record as a custom property
idid for which to create the custom property

Definition at line 486 of file usd_asset_utils.cc.

References IDP_AddToGroup(), IDP_EnsureProperties(), IDP_GetPropertyFromGroup(), IDP_New(), IDP_STRING, IDP_STRING_SUB_UTF8, IDPropertyTemplate::len, IDPropertyTemplate::str, IDPropertyTemplate::string, and IDPropertyTemplate::subtype.

Referenced by load_image(), and blender::io::usd::USDMaterialReader::load_tex_image().

◆ export_deform_verts()

void blender::io::usd::export_deform_verts ( const Mesh * mesh,
const pxr::UsdSkelBindingAPI & skel_api,
Span< std::string > bone_names )

Convert deform groups on the given mesh to USD joint index and weight attributes.

Parameters
stageThe source mesh with deform groups to export
skel_apiAPI for setting the attributes on the USD prim
bone_namesList of armature bone names corresponding to the deform groups

Definition at line 1257 of file usd_skel_convert.cc.

References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), BLI_assert, BLI_assert_unreachable, MDeformWeight::def_nr, MDeformVert::dw, blender::Span< T >::index_range(), int, blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty(), LISTBASE_FOREACH, blender::Span< T >::size(), blender::Vector< T, InlineBufferCapacity, Allocator >::size(), MDeformVert::totweight, and MDeformWeight::weight.

Referenced by blender::io::usd::USDMeshWriter::init_skinned_mesh().

◆ export_endjob()

static void blender::io::usd::export_endjob ( void * customdata)
static

◆ export_endjob_usdz_cleanup()

static void blender::io::usd::export_endjob_usdz_cleanup ( const ExportJobData * data)
static

◆ export_in_memory_texture()

◆ export_packed_texture()

◆ export_params_valid()

static bool blender::io::usd::export_params_valid ( const USDExportParams & params)
static

Perform validation of export parameter settings.

Returns
true if the parameters are valid; returns false otherwise.
Warning
Do not call from worker thread, only from main thread (i.e. before starting the wmJob).

Definition at line 134 of file usd_capi_export.cc.

References params, and prim_path_valid().

Referenced by USD_export().

◆ export_startjob()

◆ export_texture() [1/4]

void blender::io::usd::export_texture ( bNode * node,
const pxr::UsdStageRefPtr stage,
const bool allow_overwrite,
ReportList * reports )

◆ export_texture() [2/4]

◆ export_texture() [3/4]

◆ export_texture() [4/4]

static void blender::io::usd::export_texture ( Image * ima,
const pxr::UsdStageRefPtr stage,
const bool allow_overwrite,
ReportList * reports )
static

◆ export_to_stage()

◆ find_bsdf_node()

static bNode * blender::io::usd::find_bsdf_node ( Material * material)
static

Definition at line 794 of file usd_writer_material.cc.

References ELEM, and node.

Referenced by create_usd_preview_surface_material().

◆ find_existing_material()

Material * blender::io::usd::find_existing_material ( const pxr::SdfPath & usd_mat_path,
const USDImportParams & params,
const blender::Map< std::string, Material * > & mat_map,
const blender::Map< std::string, std::string > & usd_path_to_mat_name )

Returns an existing Blender material that corresponds to the USD material with the given path. Returns null if no such material exists.

Parameters
mat_mapMap a material name to a Blender material. Note that the name key might be the Blender material name modified to be a valid USD identifier, to match the material names in the imported USD.
usd_path_to_mat_nameMap a USD material path to the imported Blender material name.

The usd_path_to_mat_name is needed to determine the name of the Blender material imported from a USD path in the case when a unique name was generated for the material due to a name collision.

Definition at line 1394 of file usd_reader_material.cc.

References BLI_assert_msg, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_default(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), params, and USD_MTL_NAME_COLLISION_MAKE_UNIQUE.

Referenced by utils::assign_materials(), and blender::io::usd::USDStageReader::import_all_materials().

◆ find_node_for_type_in_graph()

static const bNode * blender::io::usd::find_node_for_type_in_graph ( const bNodeTree * nodetree,
const blender::StringRefNull type_idname )
static

Definition at line 242 of file usd_export_test.cc.

Referenced by TEST_F().

◆ find_prefix_to_skip()

static void blender::io::usd::find_prefix_to_skip ( pxr::UsdStageRefPtr stage,
ImportSettings * r_settings )
static

Find the lowest level of Blender generated roots so that round tripping an export can be more invisible

Definition at line 114 of file usd_capi_import.cc.

References blender::io::usd::ImportSettings::skip_prefix, and stage.

Referenced by import_startjob(), and USD_create_handle().

◆ gather_objects_paths()

static bool blender::io::usd::gather_objects_paths ( const pxr::UsdPrim & object,
ListBase * object_paths )
static

◆ get_absolute_path()

static void blender::io::usd::get_absolute_path ( const Image * ima,
char * r_path )
static

◆ get_armature_bone_names()

void blender::io::usd::get_armature_bone_names ( const Object * ob_arm,
bool use_deform,
Vector< std::string > & r_names )

Return in 'r_names' the names of the given armature object's bones.

Parameters
ob_armThe armature object
use_deformIf true, use only deform bone names, including their parents, to match armature export joint indices
r_namesThe returned list of bone names

Definition at line 79 of file usd_armature_utils.cc.

References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::contains(), init_deform_bones_map(), Bone::name, and visit_bones().

Referenced by blender::io::usd::USDMeshWriter::init_skinned_mesh().

◆ get_armature_modifier()

static const ArmatureModifierData * blender::io::usd::get_armature_modifier ( const Object & obj,
const Depsgraph * depsgraph )
static

◆ get_armature_modifier_obj()

const Object * blender::io::usd::get_armature_modifier_obj ( const Object & obj,
const Depsgraph * depsgraph )

If the given object has an enabled armature modifier, return the armature object bound to the modifier.

Parameters
Object to check for the modifier
depsgraphThe dependency graph where the object was evaluated
Returns
The armature object.

Definition at line 138 of file usd_armature_utils.cc.

References depsgraph, get_armature_modifier(), and mod().

Referenced by blender::io::usd::USDMeshWriter::init_skinned_mesh(), and skinned_mesh_export_chaser().

◆ get_asset_base_name()

static std::string blender::io::usd::get_asset_base_name ( const char * src_path,
ReportList * reports )
static

◆ get_blendshape_weights()

pxr::VtFloatArray blender::io::usd::get_blendshape_weights ( const Key * key)

Return the current weight values of the given key.

Parameters
keyThe key whose values will be queried
Returns
The array of key values.

Definition at line 286 of file usd_blend_shape_utils.cc.

References BLI_assert, Key::block, ListBase::first, and LISTBASE_FOREACH.

Referenced by blender::io::usd::USDMeshWriter::add_shape_key_weights_sample().

◆ get_curve_type()

static CurveType blender::io::usd::get_curve_type ( pxr::TfToken type,
pxr::TfToken basis )
static

◆ get_curve_width_interpolation()

static pxr::TfToken blender::io::usd::get_curve_width_interpolation ( const pxr::VtArray< float > & widths,
const pxr::VtArray< int > & segments,
const pxr::VtIntArray & control_point_counts,
const bool is_cyclic,
ReportList * reports )
static

Definition at line 87 of file usd_writer_curves.cc.

References BKE_report(), is_cyclic(), and RPT_WARNING.

Referenced by populate_curve_props(), and populate_curve_props_for_bezier().

◆ get_edge_creases()

static void blender::io::usd::get_edge_creases ( const Mesh * mesh,
USDMeshData & usd_mesh_data )
static

◆ get_enabled_modifier()

const ModifierData * blender::io::usd::get_enabled_modifier ( const Object & obj,
ModifierType type,
const Depsgraph * depsgraph )

Return the modifier of the given type enabled for the given dependency graph's evaluation mode (viewport or render).

Parameters
objObject to query for the modifier
depsgraphThe dependency graph where the object was evaluated
Returns
The modifier.

Definition at line 33 of file usd_armature_utils.cc.

References BKE_modifier_is_enabled(), BLI_assert, DEG_get_input_scene(), DEG_get_mode(), depsgraph, LISTBASE_FOREACH, and Object::modifiers.

Referenced by can_export_skinned_mesh(), and get_armature_modifier().

◆ get_export_textures_dir()

std::string blender::io::usd::get_export_textures_dir ( const pxr::UsdStageRefPtr stage)

Invoke the USD asset resolver to return an identifier for a 'textures' directory which is a sibling of the given stage. The resulting path is created by resolving the './textures' relative path with the stage's root layer path as the anchor. If the parent of the stage root layer path resolves to a file system path, the textures directory will be created, if it doesn't exist.

Parameters
stageThe stage whose root layer is a sibling of the 'textures' directory
Returns
the path to the 'textures' directory

Definition at line 352 of file usd_asset_utils.cc.

References BLI_dir_create_recursive(), parent_dir_exists_on_file_system(), RPT_WARNING, stage, and WM_reportf().

Referenced by export_texture().

◆ get_image_cache_file()

std::string blender::io::usd::get_image_cache_file ( const std::string & file_name,
bool mkdir )

◆ get_in_memory_texture_filename()

◆ get_last_subdiv_modifier()

◆ get_loops_polys()

◆ get_mesh_shape_key()

const Key * blender::io::usd::get_mesh_shape_key ( const Object * obj)

Return the shape key on the given mesh object.

Parameters
objThe mesh object
Returns
The shape key on the given object's mesh data, or null if the object isn't a mesh.

Definition at line 173 of file usd_blend_shape_utils.cc.

References BLI_assert, Object::data, Mesh::key, OB_MESH, and Object::type.

Referenced by blender::io::usd::USDMeshWriter::add_shape_key_weights_sample(), create_blend_shapes(), and is_mesh_with_shape_keys().

◆ get_node_tex_image_color_space()

static pxr::TfToken blender::io::usd::get_node_tex_image_color_space ( const bNode * node)
static

◆ get_node_tex_image_wrap()

◆ get_positions()

static void blender::io::usd::get_positions ( const Mesh * mesh,
USDMeshData & usd_mesh_data )
static

◆ get_primvar_array()

template<typename T >
pxr::VtArray< T > blender::io::usd::get_primvar_array ( const pxr::UsdGeomPrimvar & primvar,
const pxr::UsdTimeCode timecode )

◆ get_relative_path()

std::string blender::io::usd::get_relative_path ( const std::string & path,
const std::string & anchor )

Return the given path as a relative path with respect to the given anchor path.

Parameters
pathpath to make relative with respect to the anchor path
anchorthe anchor path
Returns
the relative path string; return the input path unchanged if it can't be made relative, is already a relative path or is a package-relative path

Definition at line 541 of file usd_asset_utils.cc.

References BLI_is_file(), BLI_path_is_rel(), BLI_path_rel(), BLI_path_split_dir_part(), BLI_string_replace_char(), BLI_strnlen(), FILE_MAX, and STRNCPY.

Referenced by get_tex_image_asset_filepath().

◆ get_shape_key_basis_mesh()

Mesh * blender::io::usd::get_shape_key_basis_mesh ( Object * obj)

If the given object is a mesh with shape keys, return a copy of the object's pre-modified mesh with its verts in the shape key basis positions. The returned mesh must be freed by the caller.

Parameters
objThe mesh object with shape keys
Returns
A new mesh corresponding to the shape key basis shape, or null if the object isn't a mesh or has no shape keys.

Definition at line 430 of file usd_blend_shape_utils.cc.

References BKE_keyblock_convert_to_mesh(), BKE_mesh_copy_for_eval(), BKE_object_get_pre_modified_mesh(), CLOG_WARN, Object::data, Object::id, LOG, ID::name, OB_MESH, KeyBlock::totelem, Object::type, and Mesh::verts_num.

Referenced by blender::io::usd::USDMeshWriter::get_export_mesh().

◆ get_tex_image_asset_filepath() [1/5]

std::string blender::io::usd::get_tex_image_asset_filepath ( bNode * node,
const pxr::UsdStageRefPtr stage,
const USDExportParams & export_params )

Gets an asset path for the given texture image / node. The resulting path may be absolute, relative to the USD file, or in a 'textures' directory in the same directory as the USD file, depending on the export parameters. The filename is typically the image filepath but might also be automatically generated based on the image name for in-memory textures when exporting textures. This function may return an empty string if the image does not have a filepath assigned and no asset path could be determined.

Definition at line 985 of file usd_writer_material.cc.

References get_tex_image_asset_filepath(), and stage.

◆ get_tex_image_asset_filepath() [2/5]

static std::string blender::io::usd::get_tex_image_asset_filepath ( const Image * ima)
static

Definition at line 884 of file usd_writer_material.cc.

References FILE_MAX, and get_absolute_path().

◆ get_tex_image_asset_filepath() [3/5]

std::string blender::io::usd::get_tex_image_asset_filepath ( const std::string & asset_path,
const std::string & stage_path,
const USDExportParams & export_params )

Return a USD asset path referencing the given texture file. The resulting path may be absolute, relative to the USD file, or in a 'textures' directory in the same directory as the USD file, depending on the export parameters.

Definition at line 936 of file usd_writer_material.cc.

References BLI_path_join, BLI_path_split_dir_part(), BLI_path_split_file_part(), BLI_string_replace_char(), blender::io::usd::USDExportParams::export_textures, FILE_MAX, get_relative_path(), and blender::io::usd::USDExportParams::relative_paths.

◆ get_tex_image_asset_filepath() [4/5]

◆ get_tex_image_asset_filepath() [5/5]

◆ get_unique_path()

static pxr::SdfPath blender::io::usd::get_unique_path ( pxr::UsdStageRefPtr stage,
const std::string & path )
static

If the given path already exists on the given stage, return the path with a numerical suffix appended to the name that ensures the path is unique. If the path does not exist on the stage, it will be returned unchanged.

Definition at line 117 of file usd_light_convert.cc.

References stage.

Referenced by world_material_to_dome_light().

◆ get_usd_reader()

static USDPrimReader * blender::io::usd::get_usd_reader ( CacheReader * reader,
const Object * ,
const char ** r_err_str )
static

◆ get_usd_source_path()

std::string blender::io::usd::get_usd_source_path ( ID * id)

Return the value of the "usd_source_path" custom property on the given id. Return an empty string if the property does not exist.

Definition at line 521 of file usd_asset_utils.cc.

References IDProperty::data, IDP_EnsureProperties(), IDP_GetPropertyFromGroup(), and IDPropertyData::pointer.

Referenced by get_tex_image_asset_filepath().

◆ get_vert_creases()

static void blender::io::usd::get_vert_creases ( const Mesh * mesh,
USDMeshData & usd_mesh_data )
static

◆ handle_from_stage_reader()

static CacheArchiveHandle * blender::io::usd::handle_from_stage_reader ( USDStageReader * reader)
static

Definition at line 58 of file usd_capi_import.cc.

Referenced by USD_create_handle().

◆ handle_python_error()

static void blender::io::usd::handle_python_error ( USDHook * hook,
ReportList * reports )
static

◆ hook_list()

◆ image_cache_file_path()

std::string blender::io::usd::image_cache_file_path ( )

◆ import_asset()

std::string blender::io::usd::import_asset ( const char * src,
const char * import_dir,
eUSDTexNameCollisionMode name_collision_mode,
ReportList * reports )

Invoke the USD asset resolver to copy an asset to a destination directory and return the path to the copied file. This function may be used to copy textures from a USDZ archive to a directory on disk. The destination directory will be created if it doesn't already exist. If the copy was unsuccessful, this function will log an error and return the original source file path unmodified.

Parameters
srcsource path of the asset to import
import_dirpath to the destination directory
name_collision_modebehavior when a file of the same name already exists
reportsthe storage for potential warning or error reports (generated using BKE_report API).
Returns
path to copied file or the original src path if there was an error

Definition at line 277 of file usd_asset_utils.cc.

References BKE_main_blendfile_path_from_global(), BKE_reportf(), BLI_dir_create_recursive(), BLI_path_abs(), BLI_path_is_rel(), BLI_path_normalize(), copy_asset_to_directory(), copy_udim_asset_to_directory(), FILE_MAX, FILE_MAXDIR, is_udim_path(), RPT_ERROR, and STRNCPY.

Referenced by load_image(), and blender::io::usd::USDMaterialReader::load_tex_image().

◆ import_blendshapes()

void blender::io::usd::import_blendshapes ( Main * bmain,
Object * mesh_obj,
const pxr::UsdPrim & prim,
ReportList * reports,
bool import_anim = true )

This file contains utilities for converting between UsdSkel data and Blender armatures and shape keys. The following is a reference on the UsdSkel API:

https://openusd.org/23.05/api/usd_skel_page_front.html Import USD blend shapes from a USD primitive as shape keys on a mesh object. Optionally, if the blend shapes have animating weights, the time-sampled weights will be imported as shape key animation curves. If the USD primitive does not have blend shape targets defined, this function is a no-op.

Parameters
bmainMain pointer
mesh_objMesh object to which imported shape keys will be added
primThe USD primitive from which blend-shapes will be imported
reportsthe storage for potential warning or error reports (generated using BKE_report API).
import_animWhether to import time-sampled weights as shape key animation curves

Definition at line 378 of file usd_skel_convert.cc.

References blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), add_v3_v3(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), BKE_fcurve_handles_recalc(), BKE_key_add(), BKE_keyblock_add(), BKE_keyblock_convert_from_mesh(), BKE_reportf(), BLI_addtail(), CLOG_WARN, blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::contains(), bAction::curves, data, KeyBlock::data, Object::data, Key::id, blender::animrig::id_action_ensure(), KEY_RELATIVE, LOG, OB_MESH, point, RPT_WARNING, stage, KeyBlock::totelem, FCurve::totvert, Key::type, and Object::type.

Referenced by blender::io::usd::USDMeshReader::read_object_data().

◆ import_endjob()

◆ import_freejob()

static void blender::io::usd::import_freejob ( void * user_data)
static

Definition at line 489 of file usd_capi_import.cc.

References blender::io::usd::ImportJobData::archive, and data.

Referenced by USD_import().

◆ import_mesh_skel_bindings()

void blender::io::usd::import_mesh_skel_bindings ( Main * bmain,
Object * mesh_obj,
const pxr::UsdPrim & prim,
ReportList * reports )

Import skinning data from a source USD prim as deform groups and an armature modifier on the given mesh object. If the USD prim does not have a skeleton binding defined, this function is a no-op.

Parameters
bmainMain pointer
objMesh object to which an armature modifier will be added
primThe USD primitive from which skinning data will be imported
reportsthe storage for potential warning or error reports (generated using BKE_report API).

Definition at line 941 of file usd_skel_convert.cc.

References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::Vector< T, InlineBufferCapacity, Allocator >::begin(), BKE_modifier_new(), BKE_modifiers_findby_type(), BKE_modifiers_persistent_uid_init(), BKE_object_defgroup_add_name(), BKE_object_defgroup_data_create(), BKE_object_defgroup_find_name(), BKE_reportf(), BLI_addtail(), CLOG_WARN, Object::data, ELEM, eModifierType_Armature, blender::Vector< T, InlineBufferCapacity, Allocator >::end(), Object::id, interp(), blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty(), LOG, Object::modifiers, ID::name, OB_MESH, RPT_WARNING, Object::type, blender::ed::object::vgroup_vert_add(), w(), and WEIGHT_REPLACE.

Referenced by blender::io::usd::USDMeshReader::read_object_data().

◆ import_skeleton()

void blender::io::usd::import_skeleton ( Main * bmain,
Object * arm_obj,
const pxr::UsdSkelSkeleton & skel,
ReportList * reports,
bool import_anim = true )

Import the given USD skeleton as an armature object. Optionally, if the skeleton has an animation defined, the time sampled joint transforms will be imported as bone animation curves.

Parameters
bmainMain pointer
arm_objArmature object to which the bone hierarchy will be added
skelThe USD skeleton from which bones and animation will be imported
reportsthe storage for potential warning or error reports (generated using BKE_report API).
import_animWhether to import time-sampled joint transforms as bone animation curves

Definition at line 675 of file usd_skel_convert.cc.

References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), BKE_reportf(), BlenderBoneLengths(), CLOG_WARN, copy_v3_v3(), Object::data, ED_armature_ebone_add(), ED_armature_ebone_from_mat4(), ED_armature_edit_free(), ED_armature_from_edit(), ED_armature_to_edit(), EditBone::head, LOG, mat4, EditBone::name, OB_ARMATURE, RPT_WARNING, blender::Vector< T, InlineBufferCapacity, Allocator >::size(), EditBone::tail, and Object::type.

Referenced by blender::io::usd::USDSkeletonReader::read_object_data().

◆ import_startjob()

◆ init_deform_bones_map()

void blender::io::usd::init_deform_bones_map ( const Object * obj,
Map< StringRef, const Bone * > * deform_map )

Initialize the deform bones map:

  • First: grab all bones marked for deforming and store them.
  • Second: loop the deform bones you found and recursively walk up their parent hierarchies, marking those bones as deform as well.
    Parameters
    objObject to query
    deform_mapA pointer to the deform_map to fill with deform bones and their parents found on the object

Definition at line 164 of file usd_armature_utils.cc.

References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), BLI_assert, BONE_NO_DEFORM, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::clear(), Bone::flag, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::items(), Bone::name, Bone::parent, and visit_bones().

Referenced by blender::io::usd::USDArmatureWriter::do_write(), and get_armature_bone_names().

◆ is_armature_modifier_bone_name()

bool blender::io::usd::is_armature_modifier_bone_name ( const Object & obj,
const StringRefNull name,
const Depsgraph * depsgraph )

If the given object has an armature modifier, query whether the given name matches the name of a bone on the armature referenced by the modifier.

Parameters
objObject to query for the modifier
nameName to check
depsgraphThe dependency graph where the object was evaluated
Returns
True if the name matches a bone name. Return false if no matching bone name is found or if the object does not have an armature modifier

Definition at line 144 of file usd_armature_utils.cc.

References BKE_armature_find_bone_name(), Object::data, depsgraph, get_armature_modifier(), and ArmatureModifierData::object.

◆ is_in_memory_texture()

static bool blender::io::usd::is_in_memory_texture ( Image * ima)
static

◆ is_mesh_with_shape_keys()

bool blender::io::usd::is_mesh_with_shape_keys ( const Object * obj)

Query whether the given object is a mesh with relative shape keys.

Parameters
objThe mesh object
Returns
True if the object is a mesh with shape keys, false otherwise

Definition at line 186 of file usd_blend_shape_utils.cc.

References get_mesh_shape_key(), KEY_RELATIVE, Key::totkey, and Key::type.

Referenced by blender::io::usd::USDMeshWriter::set_skel_export_flags().

◆ is_packed_texture()

static bool blender::io::usd::is_packed_texture ( const Image * ima)
static

Definition at line 611 of file usd_writer_material.cc.

References BKE_image_has_packedfile().

Referenced by export_texture(), and get_tex_image_asset_filepath().

◆ is_udim_path()

bool blender::io::usd::is_udim_path ( const std::string & path)

Check if the given path contains a UDIM token.

Parameters
paththe path to check
Returns
true if the path contains a UDIM token, false otherwise

Definition at line 346 of file usd_asset_utils.cc.

References UDIM_PATTERN, and UDIM_PATTERN2.

Referenced by import_asset(), blender::io::usd::USDMaterialReader::load_tex_image(), and should_import_asset().

◆ load_image()

static Image * blender::io::usd::load_image ( std::string tex_path,
Main * bmain,
const USDImportParams & params )
static

Load the image at the given path. Handle packing and copying based in the import options. Return the opened image on success or a nullptr on failure.

Definition at line 131 of file usd_light_convert.cc.

References BKE_image_has_packedfile(), BKE_image_load_exists(), BKE_image_packfiles(), BLI_delete(), BLI_is_dir(), ensure_usd_source_path_prop(), ID_BLEND_PATH, image(), import_asset(), params, should_import_asset(), temp_textures_dir(), USD_TEX_IMPORT_NONE, USD_TEX_IMPORT_PACK, and USD_TEX_NAME_COLLISION_OVERWRITE.

Referenced by dome_light_to_world_material().

◆ make_safe_name()

std::string blender::io::usd::make_safe_name ( const std::string & name,
bool allow_unicode )

◆ merge_with_parent()

◆ node_search()

static bool blender::io::usd::node_search ( bNode * fromnode,
bNode * ,
void * userdata,
const bool  )
static

◆ parent_dir_exists_on_file_system()

static bool blender::io::usd::parent_dir_exists_on_file_system ( const std::string & path)
static

Returns true if the parent directory of the given path exists on the file system.

Parameters
pathinput file path
Returns
true if the parent directory exists

Definition at line 339 of file usd_asset_utils.cc.

References BLI_is_dir(), BLI_path_split_dir_part(), and FILE_MAX.

Referenced by get_export_textures_dir(), and should_import_asset().

◆ paths_equal()

bool blender::io::usd::paths_equal ( const char * p1,
const char * p2 )

Invokes the USD asset resolver to resolve the given paths and returns true if the resolved paths are equal.

Parameters
p1first path to compare
p2second path to compare
Returns
true if the resolved input paths are equal, returns false otherwise.

Definition at line 404 of file usd_asset_utils.cc.

References BLI_assert_msg, and BLI_path_is_rel().

Referenced by export_packed_texture().

◆ perform_usdz_conversion()

static bool blender::io::usd::perform_usdz_conversion ( const ExportJobData * data)
static

For usdz export, we must first create a usd/a/c file and then covert it to usdz. In Blender's case, we first create a usdc file in Blender's temporary working directory, and store the path to the usdc file in unarchived_filepath. This function then does the conversion of that usdc file into usdz.

Returns
true when the conversion from usdc to usdz is successful.

Definition at line 282 of file usd_capi_export.cc.

References BKE_reportf(), BLI_assert, BLI_change_working_dir(), BLI_current_working_dir(), BLI_delete(), BLI_exists(), BLI_path_join, BLI_path_move(), BLI_path_split_dir_file(), BLI_path_split_file_part(), FILE_MAX, process_usdz_textures(), and RPT_ERROR.

Referenced by export_endjob().

◆ point_count()

static int blender::io::usd::point_count ( int usdCount,
CurveType curve_type,
bool is_cyclic )
static

◆ populate_curve_props()

static void blender::io::usd::populate_curve_props ( const bke::CurvesGeometry & curves,
pxr::VtArray< pxr::GfVec3f > & verts,
pxr::VtIntArray & control_point_counts,
pxr::VtArray< float > & widths,
pxr::TfToken & interpolation,
const bool is_cyclic,
const bool is_cubic,
ReportList * reports )
static

◆ populate_curve_props_for_bezier()

static void blender::io::usd::populate_curve_props_for_bezier ( const bke::CurvesGeometry & curves,
pxr::VtArray< pxr::GfVec3f > & verts,
pxr::VtIntArray & control_point_counts,
pxr::VtArray< float > & widths,
pxr::TfToken & interpolation,
const bool is_cyclic,
ReportList * reports )
static

◆ populate_curve_props_for_nurbs()

static void blender::io::usd::populate_curve_props_for_nurbs ( const bke::CurvesGeometry & curves,
pxr::VtArray< pxr::GfVec3f > & verts,
pxr::VtIntArray & control_point_counts,
pxr::VtArray< float > & widths,
pxr::VtArray< double > & knots,
pxr::VtArray< int > & orders,
pxr::TfToken & interpolation,
const bool is_cyclic )
static

◆ populate_curve_verts()

static void blender::io::usd::populate_curve_verts ( const bke::CurvesGeometry & curves,
const Span< float3 > positions,
pxr::VtArray< pxr::GfVec3f > & verts,
pxr::VtIntArray & control_point_counts,
pxr::VtArray< int > & segments,
const bool is_cyclic,
const bool is_cubic )
static

◆ populate_curve_verts_for_bezier()

static void blender::io::usd::populate_curve_verts_for_bezier ( const bke::CurvesGeometry & curves,
const Span< float3 > positions,
const Span< float3 > handles_l,
const Span< float3 > handles_r,
pxr::VtArray< pxr::GfVec3f > & verts,
pxr::VtIntArray & control_point_counts,
pxr::VtArray< int > & segments,
const bool is_cyclic )
static

◆ populate_curve_widths()

static void blender::io::usd::populate_curve_widths ( const bke::CurvesGeometry & curves,
pxr::VtArray< float > & widths )
static

◆ preview_surface_input_map()

◆ prim_path_valid()

static bool blender::io::usd::prim_path_valid ( const char * path)
static

Definition at line 94 of file usd_capi_export.cc.

References BLI_assert, RPT_ERROR, and WM_reportf().

Referenced by export_params_valid().

◆ process_usdz_textures()

◆ read_face_display_color()

template<typename USDT >
static void blender::io::usd::read_face_display_color ( Mesh * mesh,
const pxr::UsdGeomPrimvar & primvar,
const pxr::TfToken & pv_name,
double motion_sample_time )
static

◆ read_generic_mesh_primvar()

void blender::io::usd::read_generic_mesh_primvar ( Mesh * mesh,
const pxr::UsdGeomPrimvar & primvar,
const double motionSampleTime,
const bool is_left_handed )

◆ register_hook_converters()

void blender::io::usd::register_hook_converters ( )

◆ remap_blend_shape_anim()

void blender::io::usd::remap_blend_shape_anim ( pxr::UsdStageRefPtr stage,
const pxr::SdfPath & skel_path,
const pxr::SdfPathSet & mesh_paths )

When multiple meshes with blend shape animations are bound to one skeleton, USD implementations typically expect these animations to be combined in a single animation on the skeleton. This function creates an animation prim as a child of the skeleton and merges the blend shape time samples from multiple meshes in a single attribute on the animation. Merging the weight samples requires handling blend shape name collisions by generating unique names for the combined result.

Parameters
stageThe stage
skel_pathPath to the skeleton
mesh_pathsPaths to one or more mesh prims bound to the skeleton

Definition at line 303 of file usd_blend_shape_utils.cc.

References usdtokens::Anim(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), CLOG_WARN, blender::Vector< T, InlineBufferCapacity, Allocator >::first(), blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::is_empty(), blender::Vector< T, InlineBufferCapacity, Allocator >::last(), LOG, stage, and TempBlendShapeWeightsPrimvarName.

Referenced by shape_key_export_chaser().

◆ report_job_duration() [1/2]

static void blender::io::usd::report_job_duration ( const ExportJobData * data)
static

Definition at line 191 of file usd_capi_export.cc.

References blender::timeit::print_duration().

Referenced by export_endjob(), and import_endjob().

◆ report_job_duration() [2/2]

static void blender::io::usd::report_job_duration ( const ImportJobData * data)
static

Definition at line 186 of file usd_capi_import.cc.

References CacheFile::filepath, and blender::timeit::print_duration().

◆ set_bool_prop()

static void blender::io::usd::set_bool_prop ( IDProperty * idgroup,
const char * prop_name,
const bool bval )
static

Definition at line 120 of file usd_reader_utils.cc.

References IDPropertyTemplate::i, IDP_AddToGroup(), IDP_BOOLEAN, and IDP_New().

Referenced by set_id_props_from_prim().

◆ set_double_prop()

static void blender::io::usd::set_double_prop ( IDProperty * idgroup,
const char * prop_name,
const double dval )
static

Definition at line 146 of file usd_reader_utils.cc.

References IDPropertyTemplate::d, IDP_AddToGroup(), IDP_DOUBLE, and IDP_New().

Referenced by set_id_props_from_prim().

◆ set_float_prop()

static void blender::io::usd::set_float_prop ( IDProperty * idgroup,
const char * prop_name,
const float fval )
static

Definition at line 133 of file usd_reader_utils.cc.

References IDPropertyTemplate::f, IDP_AddToGroup(), IDP_FLOAT, and IDP_New().

Referenced by set_id_props_from_prim().

◆ set_id_props_from_prim()

void blender::io::usd::set_id_props_from_prim ( ID * id,
const pxr::UsdPrim & prim,
const eUSDAttrImportMode attr_import_mode,
const pxr::UsdTimeCode time_code )

◆ set_instance_collection()

static void blender::io::usd::set_instance_collection ( USDInstanceReader * instance_reader,
const blender::Map< pxr::SdfPath, Collection * > & proto_collection_map )
static

◆ set_int_prop()

static void blender::io::usd::set_int_prop ( IDProperty * idgroup,
const char * prop_name,
const int ival )
static

Definition at line 107 of file usd_reader_utils.cc.

References IDPropertyTemplate::i, IDP_AddToGroup(), IDP_INT, and IDP_New().

Referenced by set_id_props_from_prim().

◆ set_job_filepath()

static void blender::io::usd::set_job_filepath ( blender::io::usd::ExportJobData * job,
const char * filepath )
static

◆ set_light_extents()

static void blender::io::usd::set_light_extents ( const pxr::UsdPrim & prim,
const pxr::UsdTimeCode time )
static

Definition at line 27 of file usd_writer_light.cc.

Referenced by blender::io::usd::USDLightWriter::do_write().

◆ set_normal_texture_range()

void blender::io::usd::set_normal_texture_range ( pxr::UsdShadeShader & usd_shader,
const InputSpec & input_spec )

◆ set_string_prop()

static void blender::io::usd::set_string_prop ( IDProperty * idgroup,
const char * prop_name,
const char * str_val )
static

◆ shape_key_export_chaser()

◆ should_import_asset()

bool blender::io::usd::should_import_asset ( const std::string & path)

Return true if the asset at the given path is a candidate for importing with the USD asset resolver. The following heuristics are currently applied for this test:

  • Returns false if it's a Blender relative path.
  • Returns true if the path is package-relative.
  • Returns true is the path doesn't exist on the file system but can nonetheless be resolved by the USD asset resolver.
  • Returns false otherwise.

TODO(makowalski): the test currently requires a file-system stat. Consider possible ways around this, e.g., by determining if the path is a supported URI.

Parameters
pathinput file path
Returns
true if the path should be imported, false otherwise

Definition at line 383 of file usd_asset_utils.cc.

References asset_exists(), BLI_is_file(), BLI_path_is_rel(), is_udim_path(), and parent_dir_exists_on_file_system().

Referenced by load_image().

◆ skel_export_chaser()

void blender::io::usd::skel_export_chaser ( pxr::UsdStageRefPtr stage,
const ObjExportMap & armature_export_map,
const ObjExportMap & skinned_mesh_export_map,
const ObjExportMap & shape_key_mesh_export_map,
const Depsgraph * depsgraph )

This function is called after the USD writers are invoked, to complete the UsdSkel export process, for example, to bind skinned meshes to skeletons or to set blend shape animation data.

Parameters
stageThe stage
armature_export_mapMap armature objects to USD skeletons
skinned_mesh_export_mapMap mesh objects to USD skinned meshes
shape_key_export_mapMap mesh objects with shape-key to USD meshes with blend shape targets
depsgraphThe dependency graph in which objects were evaluated

Definition at line 1129 of file usd_skel_convert.cc.

References depsgraph, shape_key_export_chaser(), skinned_mesh_export_chaser(), and stage.

Referenced by blender::io::usd::USDHierarchyIterator::process_usd_skel().

◆ skinned_mesh_export_chaser()

void blender::io::usd::skinned_mesh_export_chaser ( pxr::UsdStageRefPtr stage,
const ObjExportMap & armature_export_map,
const ObjExportMap & skinned_mesh_export_map,
pxr::UsdGeomXformCache & xf_cache,
const Depsgraph * depsgraph )

Complete the export process for skinned meshes.

Parameters
stageThe stage
armature_export_mapMap armature objects to USD skeleton paths
skinned_mesh_export_mapMap mesh objects to USD skinned meshes
xf_cacheCache to speed up USD prim transform computations
depsgraphThe dependency graph in which objects were evaluated

Definition at line 1144 of file usd_skel_convert.cc.

References CLOG_WARN, depsgraph, get_armature_modifier_obj(), Object::id, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::items(), LOG, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), ID::name, and stage.

Referenced by skel_export_chaser().

◆ split_udim_pattern()

static std::pair< std::string, std::string > blender::io::usd::split_udim_pattern ( const std::string & path)
static

The following is copied from _SplitUdimPattern() in USD library source file materialParamsUtils.cpp. Split a UDIM file path such as /someDir/myFile.<UDIM>.exr into a prefix /someDir/myFile. and suffix .exr.

Definition at line 45 of file usd_asset_utils.cc.

References patterns, pos, UDIM_PATTERN, and UDIM_PATTERN2.

Referenced by copy_udim_asset_to_directory().

◆ stage_reader_from_handle()

static USDStageReader * blender::io::usd::stage_reader_from_handle ( CacheArchiveHandle * handle)
static

Definition at line 63 of file usd_capi_import.cc.

Referenced by CacheReader_open_usd_object(), and USD_free_handle().

◆ temp_textures_dir()

const char * blender::io::usd::temp_textures_dir ( )

Returns path to temporary folder for saving imported textures prior to packing. CAUTION: this directory is recursively deleted after material import.

Definition at line 416 of file usd_asset_utils.cc.

References BKE_tempdir_session, BLI_path_join, FILE_MAXDIR, SEP_STR, and temp_dir.

Referenced by load_image(), and blender::io::usd::USDMaterialReader::load_tex_image().

◆ TempBlendShapeWeightsPrimvarName()

pxr::TfToken blender::io::usd::TempBlendShapeWeightsPrimvarName ( "temp:weights" ,
pxr::TfToken::Immortal  )

◆ TEST()

blender::io::usd::TEST ( utilities ,
make_safe_name  )

Definition at line 317 of file usd_export_test.cc.

References make_safe_name().

◆ TEST_F() [1/6]

◆ TEST_F() [2/6]

◆ TEST_F() [3/6]

blender::io::usd::TEST_F ( UsdExportTest ,
usd_export_rain_mesh  )

◆ TEST_F() [4/6]

blender::io::usd::TEST_F ( USDImagingTest ,
CapsuleAdapterTest  )

Definition at line 14 of file usd_imaging_test.cc.

References stage.

◆ TEST_F() [5/6]

blender::io::usd::TEST_F ( USDStageCreationTest ,
JSONFileLoadingTest  )

Definition at line 20 of file usd_stage_creation_test.cc.

◆ TEST_F() [6/6]

blender::io::usd::TEST_F ( UsdUsdzExportTest ,
usdz_export  )

◆ to_float3()

static float3 blender::io::usd::to_float3 ( pxr::GfVec3f vec3f)
inlinestatic

Definition at line 30 of file usd_reader_curve.cc.

Referenced by add_bezier_control_point().

◆ token_for_input()

pxr::TfToken blender::io::usd::token_for_input ( const char * input_name)

Returns a USDPreviewSurface token name for a given Blender shader Socket name, or an empty TfToken if the input name is not found in the map.

Definition at line 1127 of file usd_writer_material.cc.

References blender::io::usd::InputSpec::input_name, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), and preview_surface_input_map().

Referenced by blender::io::usd::UsdExportTest::compare_blender_node_to_usd_prim().

◆ traverse_channel()

static bNodeLink * blender::io::usd::traverse_channel ( bNodeSocket * input,
short target_type )
static

◆ USD_CacheReader_free()

void blender::io::usd::USD_CacheReader_free ( CacheReader * reader)

◆ USD_create_handle()

CacheArchiveHandle * blender::io::usd::USD_create_handle ( Main * ,
const char * filepath,
ListBase * object_paths )

◆ USD_export()

bool blender::io::usd::USD_export ( const bContext * C,
const char * filepath,
const USDExportParams * params,
bool as_background_job,
ReportList * reports )

◆ USD_find_hook_name()

USDHook * blender::io::usd::USD_find_hook_name ( const char idname[])

Definition at line 59 of file usd_hook.cc.

References hook_list(), and STREQ.

Referenced by USD_register_hook().

◆ USD_free_handle()

void blender::io::usd::USD_free_handle ( CacheArchiveHandle * handle)

Definition at line 688 of file usd_capi_import.cc.

References stage_reader_from_handle().

Referenced by cachefile_handle_free().

◆ USD_get_transform()

void blender::io::usd::USD_get_transform ( CacheReader * reader,
float r_mat_world[4][4],
float time,
float scale )

◆ USD_get_version()

int blender::io::usd::USD_get_version ( )

Definition at line 723 of file usd_capi_export.cc.

Referenced by make_usd_info().

◆ USD_import()

◆ USD_mesh_topology_changed()

bool blender::io::usd::USD_mesh_topology_changed ( CacheReader * reader,
const Object * ob,
const Mesh * existing_mesh,
const double time,
const char ** r_err_str )

◆ USD_path_abs()

void blender::io::usd::USD_path_abs ( char * path,
const char * basepath,
bool for_import )

◆ USD_read_geometry()

void blender::io::usd::USD_read_geometry ( CacheReader * reader,
const Object * ob,
blender::bke::GeometrySet & geometry_set,
USDMeshReadParams params,
const char ** r_err_str )

Either modifies current_mesh in-place or constructs a new mesh.

Definition at line 586 of file usd_capi_import.cc.

References get_usd_reader(), params, and blender::io::usd::USDGeomReader::read_geometry().

Referenced by modify_geometry_set().

◆ USD_register_hook()

void blender::io::usd::USD_register_hook ( std::unique_ptr< USDHook > hook)

Definition at line 42 of file usd_hook.cc.

References hook_list(), and USD_find_hook_name().

◆ USD_unregister_hook()

void blender::io::usd::USD_unregister_hook ( USDHook * hook)

Remove the given entry from the list of registered hooks and free the allocated memory for the hook instance.

Definition at line 53 of file usd_hook.cc.

References hook_list().

◆ visit_bones() [1/2]

static void blender::io::usd::visit_bones ( const Bone * bone,
FunctionRef< void(const Bone *)> visitor )
static

◆ visit_bones() [2/2]

void blender::io::usd::visit_bones ( const Object * ob_arm,
FunctionRef< void(const Bone *)> visitor )

Recursively invoke the given function on the given armature object's bones. This function is a no-op if the object isn't an armature.

Parameters
ob_armThe armature object
visitorThe function to invoke on each bone

Definition at line 66 of file usd_armature_utils.cc.

References bArmature::bonebase, Object::data, LISTBASE_FOREACH, OB_ARMATURE, Object::type, and visit_bones().

◆ world_material_to_dome_light()

void blender::io::usd::world_material_to_dome_light ( const USDExportParams & params,
const Scene * scene,
pxr::UsdStageRefPtr stage )

◆ write_to_path()

bool blender::io::usd::write_to_path ( const void * data,
size_t size,
const char * path,
ReportList * reports )

Invokes the USD asset resolver to write data to the given path.

Parameters
datapointer to data to write
sizenumber of bytes to write
pathpath of asset to be written
reportsthe storage for potential warning or error reports (generated using BKE_report API).
Returns
true if the data was written, returns false otherwise.

Definition at line 430 of file usd_asset_utils.cc.

References BKE_reportf(), BLI_assert, and RPT_ERROR.

Referenced by export_packed_texture().

Variable Documentation

◆ materials_filename

const StringRefNull blender::io::usd::materials_filename = "usd/usd_materials_export.blend"

Definition at line 46 of file usd_export_test.cc.

Referenced by TEST_F().

◆ output_filename

const StringRefNull blender::io::usd::output_filename = "usd/output.usda"

◆ output_filepath

char blender::io::usd::output_filepath[FILE_MAX]

Definition at line 29 of file usd_usdz_export_test.cc.

Referenced by blender::io::usd::UsdUsdzExportTest::SetUp(), and TEST_F().

◆ simple_scene_filename

const StringRefNull blender::io::usd::simple_scene_filename = "usd/usd_simple_scene.blend"

Definition at line 45 of file usd_export_test.cc.

Referenced by TEST_F().

◆ temp_dir

◆ temp_output_dir

char blender::io::usd::temp_output_dir[FILE_MAX]

◆ TempBlendShapeWeightsPrimvarName

pxr::TfToken blender::io::usd::TempBlendShapeWeightsPrimvarName
extern

◆ UDIM_END_TILE

int blender::io::usd::UDIM_END_TILE = 1100
constexpr

Definition at line 37 of file usd_asset_utils.cc.

Referenced by copy_udim_asset_to_directory().

◆ UDIM_PATTERN

char blender::io::usd::UDIM_PATTERN[] = "<UDIM>"
constexpr

◆ UDIM_PATTERN2

char blender::io::usd::UDIM_PATTERN2[] = "%3CUDIM%3E"
constexpr

Definition at line 30 of file usd_asset_utils.cc.

Referenced by is_udim_path(), and split_udim_pattern().

◆ UDIM_START_TILE

int blender::io::usd::UDIM_START_TILE = 1001
constexpr

Definition at line 36 of file usd_asset_utils.cc.

Referenced by copy_udim_asset_to_directory().

◆ usd_curves_test_filename

const StringRefNull blender::io::usd::usd_curves_test_filename = "usd/usd_curves_test.blend"

Definition at line 46 of file usd_curves_test.cc.

Referenced by TEST_F().

◆ usdz_export_test_filename

const StringRefNull blender::io::usd::usdz_export_test_filename = "usd/usdz_export_test.blend"

Definition at line 26 of file usd_usdz_export_test.cc.

Referenced by TEST_F().