Blender V5.0
blender::io::usd Namespace Reference

Namespaces

namespace  detail
namespace  utils

Classes

struct  ExportJobData
struct  ImportJobData
struct  USDExporterContext
class  USDHierarchyIterator
struct  PointerRNAToPython
class  USDSceneExportContext
class  USDSceneImportContext
class  USDMaterialExportContext
class  USDMaterialImportContext
class  USDHookInvoker
class  OnExportInvoker
class  OnMaterialExportInvoker
class  OnImportInvoker
class  MaterialImportPollInvoker
class  OnMaterialImportInvoker
struct  USDImportDomeLightData
class  USDCameraReader
class  USDCurvesReader
class  USDBasisCurvesReader
class  USDDomeLightReader
class  USDGeomReader
class  USDInstanceReader
class  USDLightReader
struct  IntermediateNode
struct  NodePlacementContext
struct  ExtraLinkInfo
class  USDMaterialReader
class  USDMeshReader
struct  USDCurveData
struct  CurveData
class  USDNurbsReader
class  USDPointInstancerReader
class  USDPointsReader
struct  ImportSettings
class  USDPrimReader
class  USDShapeReader
class  USDSkeletonReader
class  USDStageReader
class  USDVolumeReader
class  USDXformReader
class  USDAbstractWriter
class  USDArmatureWriter
class  USDCameraWriter
class  USDCurvesWriter
class  USDHairWriter
class  USDLightWriter
struct  InputSpec
struct  USDMeshData
class  USDGenericMeshWriter
class  USDMeshWriter
class  USDMetaballWriter
class  USDPointInstancerWriter
class  USDPointsWriter
class  USDTextWriter
class  USDTransformWriter
class  USDVolumeWriter
class  UsdExportTest
class  USDStageCreationTest
struct  USDExportParams
struct  USDImportParams
struct  USDMeshReadParams
struct  USDHook
struct  WorldToDomeLight
class  AbstractHierarchyIterator
class  AbstractHierarchyWriter
struct  HierarchyContext

Typedefs

using USDHookList = std::list<std::unique_ptr<USDHook>>
using ImportedPrimMap = Map<pxr::SdfPath, Vector<PointerRNA>>
using PathMap = std::map<pxr::SdfPath, pxr::SdfPath>
using PathSet = Set<pxr::SdfPath>
using ReferencesMap = Map<pxr::SdfPath, Vector<pxr::SdfPath>>
using ShaderToNodeMap = 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<StringRef, InputSpec>
using MaterialFaceGroups = Map<short, pxr::VtArray<int>>

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  eUSDPropertyImportMode { 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 }
enum  eUSDSceneUnits {
  USD_SCENE_UNITS_CUSTOM = -1 , USD_SCENE_UNITS_METERS = 0 , USD_SCENE_UNITS_KILOMETERS = 1 , USD_SCENE_UNITS_CENTIMETERS = 2 ,
  USD_SCENE_UNITS_MILLIMETERS = 3 , USD_SCENE_UNITS_INCHES = 4 , USD_SCENE_UNITS_FEET = 5 , USD_SCENE_UNITS_YARDS = 6
}

Functions

FCurvecreate_fcurve (blender::animrig::Channelbag &channelbag, const blender::animrig::FCurveDescriptor &fcurve_descriptor, const int sample_count)
void set_fcurve_sample (FCurve *fcu, int64_t sample_index, const float frame, const float value)
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< StringRef > &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 std::string &src_path, ReportList *reports)
static std::string copy_asset_to_directory (const std::string &src_path, const char *dest_dir_path, eUSDTexNameCollisionMode name_collision_mode, ReportList *reports)
static std::string copy_udim_asset_to_directory (const std::string &src_path, const char *dest_dir_path, eUSDTexNameCollisionMode name_collision_mode, ReportList *reports)
bool copy_asset (const std::string &src, const std::string &dst, eUSDTexNameCollisionMode name_collision_mode, ReportList *reports)
bool asset_exists (const std::string &path)
std::string import_asset (const std::string &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 std::string &path1, const std::string &path2)
const char * temp_textures_dir ()
bool write_to_path (const void *data, size_t size, const std::string &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 bke::AttrType blender_type, bool use_color3f_type)
std::optional< bke::AttrTypeconvert_usd_type_to_blender (const pxr::SdfValueTypeName usd_type)
void copy_primvar_to_blender_attribute (const pxr::UsdGeomPrimvar &primvar, const pxr::UsdTimeCode time, const bke::AttrType data_type, const bke::AttrDomain domain, const OffsetIndices< int > face_indices, bke::MutableAttributeAccessor attributes)
void copy_blender_attribute_to_primvar (const GVArray &attribute, const bke::AttrType data_type, const pxr::UsdTimeCode time, const pxr::UsdGeomPrimvar &primvar, pxr::UsdUtilsSparseValueWriter &value_writer)
template<typename USDT>
void set_attribute (const pxr::UsdAttribute &attr, const USDT value, pxr::UsdTimeCode time, pxr::UsdUtilsSparseValueWriter &value_writer)
template<typename USDT>
void set_attribute (const pxr::UsdAttribute &attr, pxr::VtArray< USDT > &value, pxr::UsdTimeCode time, pxr::UsdUtilsSparseValueWriter &value_writer)
template<typename BlenderT, typename USDT>
void copy_blender_buffer_to_primvar (const VArray< BlenderT > &buffer, const pxr::UsdTimeCode time, const pxr::UsdGeomPrimvar &primvar, pxr::UsdUtilsSparseValueWriter &value_writer)
template<typename T>
pxr::VtArray< Tget_primvar_array (const pxr::UsdGeomPrimvar &primvar, const pxr::UsdTimeCode time)
template<typename USDT, typename BlenderT>
void copy_primvar_to_blender_buffer (const pxr::UsdGeomPrimvar &primvar, const pxr::UsdTimeCode time, 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 std::string &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])
static void collect_point_instancer_prototypes_and_set_extent (pxr::UsdGeomPointInstancer instancer, const pxr::UsdStageRefPtr &stage, const pxr::SdfPath &wrapper_path, std::vector< pxr::UsdPrim > &proto_list)
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 ()
double get_meters_per_unit (const USDExportParams &params)
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 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 (const 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, const USDExportParams &export_params, ReportList *reports)
void call_import_hooks (USDStageReader *archive, ReportList *reports)
bool have_material_import_hook (pxr::UsdStageRefPtr stage, const pxr::UsdShadeMaterial &usd_material, const USDImportParams &import_params, ReportList *reports)
bool call_material_import_hooks (pxr::UsdStageRefPtr stage, Material *material, const pxr::UsdShadeMaterial &usd_material, const USDImportParams &import_params, ReportList *reports)
static void convert_proto_to_instance (pxr::UsdStageRefPtr stage, const pxr::SdfPath &proto_path, const pxr::SdfPath &ref_path)
void process_scene_graph_instances (const USDExportParams &export_params, pxr::UsdStageRefPtr stage)
static Imageload_image (std::string tex_path, Main *bmain, const USDImportParams &params)
static bNodeappend_node (bNode *dst_node, int16_t new_node_type, const StringRef out_sock, const StringRef in_sock, bNodeTree *ntree, float offset)
void world_material_to_dome_light (const USDExportParams &params, const Scene *scene, pxr::UsdStageRefPtr stage)
void dome_light_to_world_material (const USDImportParams &params, Scene *scene, Main *bmain, const USDImportDomeLightData &dome_light_data, const pxr::UsdPrim &prim, const pxr::UsdTimeCode time)
static bool node_search (bNode *fromnode, bNode *, void *userdata, bool)
void world_material_to_dome_light (const Scene *scene, WorldToDomeLight &res)
template<typename USDT>
static void read_face_display_color (Mesh *mesh, const pxr::UsdGeomPrimvar &primvar, const pxr::TfToken &pv_name, const pxr::UsdTimeCode 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 pxr::UsdTimeCode time, 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< int > calc_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)
template<typename T>
static bool get_authored_value (const pxr::UsdAttribute &attr, const pxr::UsdTimeCode time, const pxr::UsdPrim &prim, const pxr::TfToken fallback_attr_name, T *r_value)
template<typename T>
static float get_intensity (const T &dome_light, const pxr::UsdTimeCode time)
template<typename T>
static bool get_tex_path (const T &dome_light, const pxr::UsdTimeCode time, pxr::SdfAssetPath *tex_path)
template<typename T>
static bool get_color (const T &dome_light, const pxr::UsdTimeCode time, pxr::GfVec3f *color)
static pxr::TfToken get_pole_axis (const pxr::UsdLuxDomeLight_1 &dome_light, const pxr::UsdTimeCode time)
static IntermediateNode add_normal_map (bNodeTree *ntree, int column, NodePlacementContext &ctx)
static IntermediateNode add_scale_bias (const pxr::UsdShadeShader &usd_shader, bNodeTree *ntree, int column, bool feeds_normal_map, NodePlacementContext &ctx)
static IntermediateNode add_scale_bias_adjust (bNodeTree *ntree, int column, NodePlacementContext &ctx)
static IntermediateNode add_separate_color (const pxr::UsdShadeShader &usd_shader, const pxr::TfToken &usd_source_name, bNodeTree *ntree, int column, NodePlacementContext &ctx)
static IntermediateNode add_lessthan (bNodeTree *ntree, float threshold, int column, NodePlacementContext &ctx)
static IntermediateNode add_oneminus (bNodeTree *ntree, int column, NodePlacementContext &ctx)
static void configure_displacement (const pxr::UsdShadeShader &usd_shader, bNode *displacement_node)
static pxr::UsdShadeShader node_graph_output_source (const pxr::UsdShadeNodeGraph &node_graph, const pxr::TfToken &output_name)
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< pxr::SdfPath, Material * > &usd_path_to_mat)
static KnotsMode determine_knots_mode (const Span< double > usd_knots, const int order, const bool is_cyclic)
static CurveData calc_curve_offsets (const Span< float3 > usd_points, const Span< int > usd_counts, const Span< int > usd_orders, const Span< double > usd_knots)
static bool curves_topology_changed (const bke::CurvesGeometry &curves, const Span< int > usd_offsets)
static IndexRange get_usd_points_range_de_dup (IndexRange blender_points_range, IndexRange usd_points_range)
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 void convert_to_z_up (pxr::UsdStageRefPtr stage, ImportSettings &settings)
static void find_prefix_to_skip (pxr::UsdStageRefPtr stage, ImportSettings &settings)
static void determine_blender_compat (pxr::UsdStageRefPtr stage, ImportSettings &settings)
static void set_string_prop (IDProperty *idgroup, const StringRefNull prop_name, const StringRefNull str_val)
static void set_int_prop (IDProperty *idgroup, const StringRefNull prop_name, const int ival)
static void set_bool_prop (IDProperty *idgroup, const StringRefNull prop_name, const bool bval)
static void set_float_prop (IDProperty *idgroup, const StringRefNull prop_name, const float fval)
static void set_double_prop (IDProperty *idgroup, const StringRefNull prop_name, const double dval)
void set_id_props_from_prim (ID *id, const pxr::UsdPrim &prim, const eUSDPropertyImportMode property_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)
static void set_rest_pose (Main *bmain, Object *arm_obj, bArmature *arm, const pxr::VtArray< pxr::GfMatrix4d > &bind_xforms, const pxr::VtTokenArray &joint_order, const blender::Map< pxr::TfToken, std::string > &joint_to_bone_map, const pxr::UsdSkelTopology &skel_topology, const pxr::UsdSkelSkeletonQuery &skel_query)
void import_skeleton (Main *bmain, Object *arm_obj, const pxr::UsdSkelSkeleton &skel, ReportList *reports, const bool import_anim)
void import_mesh_skel_bindings (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< StringRef > bone_names)
void create_skel_roots (pxr::UsdStageRefPtr stage, const USDExportParams &params)
std::string make_safe_name (const StringRef name, bool allow_unicode)
pxr::SdfPath get_unique_path (pxr::UsdStageRefPtr stage, const std::string &path)
static void create_vector_attrib (const pxr::UsdPrim &prim, const IDProperty *prop, const pxr::TfToken &prop_token, const pxr::UsdTimeCode &time)
static void add_anim_sample (pxr::UsdSkelAnimation &skel_anim, const Object *obj, const pxr::UsdTimeCode time, const blender::Map< blender::StringRef, const Bone * > *deform_map, pxr::UsdUtilsSparseValueWriter &value_writer)
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< double > &weights, 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 bool is_excluded_attr (StringRefNull name)
static pxr::UsdShadeShader create_usd_preview_shader (const USDExporterContext &usd_export_context, const pxr::UsdShadeMaterial &material, const StringRef name, int type)
static pxr::UsdShadeShader create_usd_preview_shader (const USDExporterContext &usd_export_context, const pxr::UsdShadeMaterial &material, bNode *node)
static pxr::UsdShadeShader create_primvar_reader_shader (const USDExporterContext &usd_export_context, const pxr::UsdShadeMaterial &material, const pxr::TfToken &primvar_type, const 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 bNodefind_displacement_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 set_scale_bias (pxr::UsdShadeShader &usd_shader, const pxr::GfVec4f scale, const pxr::GfVec4f bias)
static void process_inputs (const USDExporterContext &usd_export_context, pxr::UsdShadeMaterial &usd_material, pxr::UsdShadeShader &shader, const bNode *node, const std::string &active_uvmap_name, ReportList *reports)
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 has_generated_tiles (const Image *ima)
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_imbuf (ImBuf *imbuf, const std::string &export_dir, const char image_abs_path[FILE_MAX], const char file_name[FILE_MAX], const bool allow_overwrite, ReportList *reports)
static void export_in_memory_texture (Image *ima, const std::string &export_dir, const bool allow_overwrite, ReportList *reports)
static void export_packed_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)
void export_texture (Image *ima, const pxr::UsdStageRefPtr stage, const bool allow_overwrite, ReportList *reports)
void export_texture (bNode *node, const pxr::UsdStageRefPtr stage, const bool allow_overwrite, ReportList *reports)
pxr::TfToken token_for_input (const StringRef 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 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)
template<typename T>
static pxr::VtArray< TDuplicateArray (const pxr::VtArray< T > &original, size_t copies)
template<typename T, typename GetterFunc, typename CreatorFunc>
static void DuplicatePerInstanceAttribute (const GetterFunc &getter, const CreatorFunc &creator, size_t copies, const pxr::UsdTimeCode &time)
template<typename T, typename GetterFunc, typename CreatorFunc>
static void ExpandAttributePerInstance (const GetterFunc &getter, const CreatorFunc &creator, const Span< std::pair< int, int > > instance_object_map, const pxr::UsdTimeCode &time)
static std::optional< pxr::TfToken > convert_blender_domain_to_usd (const bke::AttrDomain blender_domain)
static bool has_varying_modifiers (const Object *ob)
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 (USDStageCreationTest, JSONFileLoadingTest)

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 simple_scene_filename = "usd/usd_simple_scene.blend"
const StringRefNull materials_filename = "usd/usd_materials_export.blend"
const StringRefNull output_filename = "output.usd"

Typedef Documentation

◆ ImportedPrimMap

Definition at line 62 of file usd_hook.cc.

◆ InputSpecMap

◆ MaterialFaceGroups

using blender::io::usd::MaterialFaceGroups = Map<short, pxr::VtArray<int>>

Definition at line 23 of file usd_writer_mesh.hh.

◆ ObjExportMap

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

Map an object to its USD prim export path.

Definition at line 83 of file usd_skel_convert.hh.

◆ PathMap

using blender::io::usd::PathMap = std::map<pxr::SdfPath, pxr::SdfPath>

Definition at line 28 of file usd_instancing_utils.cc.

◆ PathSet

using blender::io::usd::PathSet = Set<pxr::SdfPath>

Definition at line 29 of file usd_instancing_utils.cc.

◆ ProtoReaderMap

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

Definition at line 30 of file usd_reader_stage.hh.

◆ ReferencesMap

using blender::io::usd::ReferencesMap = Map<pxr::SdfPath, Vector<pxr::SdfPath>>

Definition at line 32 of file usd_instancing_utils.cc.

◆ ShaderToNodeMap

using blender::io::usd::ShaderToNodeMap = Map<std::string, bNode *>

Definition at line 27 of file usd_reader_material.hh.

◆ USDHookList

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

Definition at line 61 of file usd_hook.cc.

◆ UsdPathSet

Definition at line 32 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 24 of file usd_reader_xform.hh.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
USD_NO_ERROR 
USD_ARCHIVE_FAIL 

Definition at line 86 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.

◆ 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.

◆ eUSDPropertyImportMode

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.

◆ eUSDSceneUnits

Enumerator
USD_SCENE_UNITS_CUSTOM 
USD_SCENE_UNITS_METERS 
USD_SCENE_UNITS_KILOMETERS 
USD_SCENE_UNITS_CENTIMETERS 
USD_SCENE_UNITS_MILLIMETERS 
USD_SCENE_UNITS_INCHES 
USD_SCENE_UNITS_FEET 
USD_SCENE_UNITS_YARDS 

Definition at line 116 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_anim_sample()

void blender::io::usd::add_anim_sample ( pxr::UsdSkelAnimation & skel_anim,
const Object * obj,
const pxr::UsdTimeCode time,
const blender::Map< blender::StringRef, const Bone * > * deform_map,
pxr::UsdUtilsSparseValueWriter & value_writer )
static

◆ add_bezier_control_point()

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()

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

◆ add_lessthan()

◆ add_normal_map()

◆ add_oneminus()

◆ add_scale_bias()

◆ add_scale_bias_adjust()

◆ add_separate_color()

◆ append_node()

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

◆ asset_exists()

bool blender::io::usd::asset_exists ( const std::string & 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 273 of file usd_asset_utils.cc.

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

◆ bezier_point_count()

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

◆ BlenderBoneLengths()

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

References depsgraph, and name.

Referenced by import_skeleton(), and initialize().

◆ 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 1560 of file usd_reader_material.cc.

References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add_new(), BLI_assert_msg, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::is_empty(), LISTBASE_FOREACH, 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 129 of file usd_armature_utils.cc.

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

Referenced by create_pose_joints(), and initialize().

◆ cache_image_color()

◆ CacheReader_open_usd_object()

◆ calc_curve_offsets() [1/2]

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

◆ calc_curve_offsets() [2/2]

CurveData blender::io::usd::calc_curve_offsets ( const Span< float3 > usd_points,
const Span< int > usd_counts,
const Span< int > usd_orders,
const Span< double > usd_knots )
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 591 of file usd_hook.cc.

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

Referenced by export_to_stage().

◆ call_import_hooks()

◆ call_material_export_hooks()

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

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

Definition at line 601 of file usd_hook.cc.

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

Referenced by create_usd_material().

◆ call_material_import_hooks()

bool blender::io::usd::call_material_import_hooks ( pxr::UsdStageRefPtr stage,
Material * material,
const pxr::UsdShadeMaterial & usd_material,
const USDImportParams & import_params,
ReportList * reports )

Call the 'on_material_import' hook functions defined in the registered USDHook classes. Returns true if any of the hooks were successful, false otherwise.

Definition at line 668 of file usd_hook.cc.

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

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

◆ camera_sensor_size_for_render()

◆ 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 189 of file usd_armature_utils.cc.

References depsgraph, eModifierType_Armature, and get_enabled_modifier().

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

◆ collect_point_instancer_prototypes_and_set_extent()

void blender::io::usd::collect_point_instancer_prototypes_and_set_extent ( pxr::UsdGeomPointInstancer instancer,
const pxr::UsdStageRefPtr & stage,
const pxr::SdfPath & wrapper_path,
std::vector< pxr::UsdPrim > & proto_list )
static

◆ configure_displacement()

void blender::io::usd::configure_displacement ( const pxr::UsdShadeShader & usd_shader,
bNode * displacement_node )
static

◆ convert_blender_domain_to_usd() [1/3]

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

Definition at line 202 of file usd_writer_mesh.cc.

References blender::bke::Corner, blender::bke::Face, and blender::bke::Point.

◆ convert_blender_domain_to_usd() [2/3]

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]

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

Definition at line 400 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 bke::AttrType blender_type,
bool use_color3f_type )

◆ convert_proto_to_instance()

void blender::io::usd::convert_proto_to_instance ( pxr::UsdStageRefPtr stage,
const pxr::SdfPath & proto_path,
const pxr::SdfPath & ref_path )
static

Definition at line 36 of file usd_instancing_utils.cc.

References CLOG_ERROR, and LOG.

Referenced by process_scene_graph_instances().

◆ convert_to_z_up()

void blender::io::usd::convert_to_z_up ( pxr::UsdStageRefPtr stage,
ImportSettings & 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 std::string & src,
const std::string & 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 157 of file usd_asset_utils.cc.

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

Referenced by copy_asset_to_directory().

◆ copy_asset_to_directory()

std::string blender::io::usd::copy_asset_to_directory ( const std::string & 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 bke::AttrType data_type,
const pxr::UsdTimeCode time,
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 time,
const pxr::UsdGeomPrimvar & primvar,
pxr::UsdUtilsSparseValueWriter & value_writer )

◆ copy_primvar_to_blender_attribute()

◆ 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 time,
const OffsetIndices< int > faces,
MutableSpan< BlenderT > attribute )

◆ copy_single_file()

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()

std::string blender::io::usd::copy_udim_asset_to_directory ( const std::string & 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(), i, if(), indices, LISTBASE_FOREACH, LOG, make_safe_name(), name, sub_v3_v3v3(), and KeyBlock::totelem.

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

◆ create_collection()

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 87 of file usd_reader_stage.cc.

References BKE_collection_add(), and name.

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

◆ create_fcurve()

FCurve * blender::io::usd::create_fcurve ( blender::animrig::Channelbag & channelbag,
const blender::animrig::FCurveDescriptor & fcurve_descriptor,
const int sample_count )

◆ 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()

◆ 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 142 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(), and LISTBASE_FOREACH.

Referenced by initialize().

◆ create_primvar_reader_shader()

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

◆ 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 primitives 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_DEBUG, CLOG_WARN, get_xform_ancestor(), LOG, params, and RPT_WARNING.

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

◆ create_temp_path_for_usdz_export()

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 737 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()

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_usd_preview_shader() [1/2]

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()

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()

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()

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()

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

◆ curves_topology_changed() [1/2]

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(), and blender::bke::CurvesGeometry::offsets().

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

◆ curves_topology_changed() [2/2]

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 229 of file usd_reader_nurbs.cc.

References blender::bke::CurvesGeometry::offsets().

◆ decref()

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

◆ determine_blender_compat()

void blender::io::usd::determine_blender_compat ( pxr::UsdStageRefPtr stage,
ImportSettings & settings )
static

Set compatibility flags if the Stage was written by Blender.

Definition at line 189 of file usd_reader_stage.cc.

References blender::io::usd::ImportSettings::blender_stage_version_prior_44.

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

◆ determine_knots_mode()

◆ dome_light_to_world_material()

◆ DuplicateArray()

template<typename T>
pxr::VtArray< T > blender::io::usd::DuplicateArray ( const pxr::VtArray< T > & original,
size_t copies )
static

Definition at line 380 of file usd_writer_pointinstancer.cc.

References i.

Referenced by DuplicatePerInstanceAttribute().

◆ DuplicatePerInstanceAttribute()

template<typename T, typename GetterFunc, typename CreatorFunc>
void blender::io::usd::DuplicatePerInstanceAttribute ( const GetterFunc & getter,
const CreatorFunc & creator,
size_t copies,
const pxr::UsdTimeCode & time )
static

Definition at line 392 of file usd_writer_pointinstancer.cc.

References DuplicateArray().

◆ 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(), and TempBlendShapeWeightsPrimvarName.

Referenced by shape_key_export_chaser().

◆ ensure_root_prim()

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 154 of file usd_capi_export.cc.

References get_meters_per_unit(), IO_AXIS_Y, IO_AXIS_Z, M_PI, mat3_from_axis_conversion(), mat3_to_eul(), mul_v3_fl(), params, 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 484 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().

◆ ExpandAttributePerInstance()

template<typename T, typename GetterFunc, typename CreatorFunc>
void blender::io::usd::ExpandAttributePerInstance ( const GetterFunc & getter,
const CreatorFunc & creator,
const Span< std::pair< int, int > > instance_object_map,
const pxr::UsdTimeCode & time )
static

Definition at line 405 of file usd_writer_pointinstancer.cc.

References i.

◆ export_deform_verts()

void blender::io::usd::export_deform_verts ( const Mesh * mesh,
const pxr::UsdSkelBindingAPI & skel_api,
Span< StringRef > 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 1326 of file usd_skel_convert.cc.

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

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

◆ export_endjob()

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

◆ export_endjob_usdz_cleanup()

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

◆ export_in_memory_imbuf()

void blender::io::usd::export_in_memory_imbuf ( ImBuf * imbuf,
const std::string & export_dir,
const char image_abs_path[FILE_MAX],
const char file_name[FILE_MAX],
const bool allow_overwrite,
ReportList * reports )
static

◆ export_in_memory_texture()

◆ export_packed_texture()

◆ export_params_valid()

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 137 of file usd_capi_export.cc.

References params, and prim_path_valid().

Referenced by USD_export().

◆ export_startjob()

◆ export_texture() [1/3]

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

◆ export_texture() [2/3]

◆ export_texture() [3/3]

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

◆ export_to_stage()

◆ find_bsdf_node()

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

◆ find_displacement_node()

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

Returns the first occurrence of a scalar Displacement node found in the given material's node tree. Vector Displacement is not supported in the #UsdPreviewSurface. Returns null if no instance of either type was found.

Definition at line 1069 of file usd_writer_material.cc.

References Material::nodetree, and SH_NODE_DISPLACEMENT.

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< pxr::SdfPath, Material * > & usd_path_to_mat )

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_matMap a USD material path to the imported Blender material.

The usd_path_to_mat 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 1569 of file usd_reader_material.cc.

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

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

◆ find_node_for_type_in_graph()

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

Definition at line 238 of file usd_export_test.cc.

Referenced by TEST_F().

◆ find_prefix_to_skip()

void blender::io::usd::find_prefix_to_skip ( pxr::UsdStageRefPtr stage,
ImportSettings & settings )
static

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

Definition at line 145 of file usd_reader_stage.cc.

References blender::io::usd::ImportSettings::skip_prefix.

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

◆ gather_objects_paths()

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

◆ get_absolute_path()

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< StringRef > & 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 108 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()

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 168 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()

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

◆ get_authored_value()

template<typename T>
bool blender::io::usd::get_authored_value ( const pxr::UsdAttribute & attr,
const pxr::UsdTimeCode time,
const pxr::UsdPrim & prim,
const pxr::TfToken fallback_attr_name,
T * r_value )
static

If the given attribute has an authored value, return its value in the r_value out parameter.

We wish to support older UsdLux APIs in older versions of USD. For example, in previous versions of the API, shader input attributes did not have the "inputs:" prefix. One can provide the older input attribute name in the 'fallback_attr_name' argument, and that attribute will be queried if 'attr' doesn't exist or doesn't have an authored value.

Definition at line 33 of file usd_reader_domelight.cc.

References T.

Referenced by get_color(), get_intensity(), get_pole_axis(), and get_tex_path().

◆ 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_color()

template<typename T>
bool blender::io::usd::get_color ( const T & dome_light,
const pxr::UsdTimeCode time,
pxr::GfVec3f * color )
static

◆ get_curve_type()

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

◆ get_curve_width_interpolation()

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 88 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()

◆ 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 63 of file usd_armature_utils.cc.

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

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 353 of file usd_asset_utils.cc.

References BLI_dir_create_recursive(), parent_dir_exists_on_file_system(), RPT_WARNING, and WM_global_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_intensity()

template<typename T>
float blender::io::usd::get_intensity ( const T & dome_light,
const pxr::UsdTimeCode time )
static

◆ get_last_subdiv_modifier()

const SubsurfModifierData * blender::io::usd::get_last_subdiv_modifier ( eEvaluationMode eval_mode,
Object * obj )
static

◆ 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, Mesh::key, and OB_MESH.

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

◆ get_meters_per_unit()

◆ get_node_tex_image_color_space()

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

◆ get_node_tex_image_wrap()

◆ get_pole_axis()

pxr::TfToken blender::io::usd::get_pole_axis ( const pxr::UsdLuxDomeLight_1 & dome_light,
const pxr::UsdTimeCode time )
static

◆ get_positions()

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 time )

◆ 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 539 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(), 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 437 of file usd_blend_shape_utils.cc.

References BKE_keyblock_convert_to_mesh(), BKE_mesh_copy_for_eval(), BKE_object_get_pre_modified_mesh(), Key::block, CLOG_WARN, ListBase::first, Mesh::key, LOG, OB_MESH, KeyBlock::totelem, 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 1274 of file usd_writer_material.cc.

References get_tex_image_asset_filepath(), and bNode::id.

◆ get_tex_image_asset_filepath() [2/5]

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

Definition at line 1173 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 1225 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_tex_path()

template<typename T>
bool blender::io::usd::get_tex_path ( const T & dome_light,
const pxr::UsdTimeCode time,
pxr::SdfAssetPath * tex_path )
static

◆ get_unique_path()

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

Definition at line 61 of file usd_utils.cc.

Referenced by process_scene_graph_instances(), and world_material_to_dome_light().

◆ get_usd_points_range_de_dup()

IndexRange blender::io::usd::get_usd_points_range_de_dup ( IndexRange blender_points_range,
IndexRange usd_points_range )
static

◆ get_usd_reader()

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 519 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()

◆ handle_from_stage_reader()

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()

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

◆ has_generated_tiles()

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

◆ has_varying_modifiers()

◆ have_material_import_hook()

bool blender::io::usd::have_material_import_hook ( pxr::UsdStageRefPtr stage,
const pxr::UsdShadeMaterial & usd_material,
const USDImportParams & import_params,
ReportList * reports )

Returns true if there is a registered USDHook class that can convert the given material.

Definition at line 653 of file usd_hook.cc.

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

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

◆ 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 std::string & 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 278 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 blender::io::usd::USDMaterialImportContext::import_texture(), 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 359 of file usd_skel_convert.cc.

References blender::animrig::action_channelbag_ensure(), blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), add_v3_v3(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::Vector< T, InlineBufferCapacity, Allocator >::begin(), BKE_fcurve_handles_recalc(), BKE_key_add(), BKE_keyblock_add(), BKE_keyblock_convert_from_mesh(), BKE_reportf(), CLOG_WARN, blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::contains(), create_fcurve(), data, KeyBlock::data, Object::data, blender::Vector< T, InlineBufferCapacity, Allocator >::end(), i, Key::id, blender::animrig::id_action_ensure(), Mesh::key, KEY_RELATIVE, LOG, OB_MESH, blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::reserve(), blender::Vector< T, InlineBufferCapacity, Allocator >::reserve(), RPT_WARNING, set_fcurve_sample(), blender::Span< T >::size(), blender::Vector< T, InlineBufferCapacity, Allocator >::size(), KeyBlock::totelem, Key::type, and Object::type.

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

◆ import_endjob()

◆ import_freejob()

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

Definition at line 417 of file usd_capi_import.cc.

References data.

Referenced by USD_import().

◆ import_mesh_skel_bindings()

void blender::io::usd::import_mesh_skel_bindings ( 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
mesh_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 1013 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_ERROR, Object::data, ELEM, eModifierType_Armature, blender::Vector< T, InlineBufferCapacity, Allocator >::end(), i, Object::id, interp(), blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty(), LOG, Object::modifiers, ID::name, OB_MESH, RPT_WARNING, Object::type, Mesh::verts_num, 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 726 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, i, LOG, EditBone::name, OB_ARMATURE, blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::reserve(), RPT_WARNING, set_rest_pose(), 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 194 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,
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 174 of file usd_armature_utils.cc.

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

◆ is_excluded_attr()

◆ is_in_memory_texture()

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()

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

Definition at line 759 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 347 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()

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 76 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(), Image::id, ID_BLEND_PATH, 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()

◆ node_graph_output_source()

pxr::UsdShadeShader blender::io::usd::node_graph_output_source ( const pxr::UsdShadeNodeGraph & node_graph,
const pxr::TfToken & output_name )
static

Definition at line 944 of file usd_reader_material.cc.

References output.

Referenced by blender::io::usd::USDMaterialReader::follow_connection().

◆ node_search()

◆ parent_dir_exists_on_file_system()

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 340 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 std::string & path1,
const std::string & path2 )

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

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

Definition at line 406 of file usd_asset_utils.cc.

References BLI_assert_msg, and BLI_path_is_rel().

Referenced by export_packed_texture().

◆ perform_usdz_conversion()

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 288 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(), data, FILE_MAX, process_usdz_textures(), result, and RPT_ERROR.

Referenced by export_endjob().

◆ point_count()

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

◆ populate_curve_props()

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()

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()

◆ populate_curve_verts()

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()

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()

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

◆ preview_surface_input_map()

◆ prim_path_valid()

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

Definition at line 98 of file usd_capi_export.cc.

References RPT_ERROR, and WM_global_reportf().

Referenced by export_params_valid().

◆ process_inputs()

void blender::io::usd::process_inputs ( const USDExporterContext & usd_export_context,
pxr::UsdShadeMaterial & usd_material,
pxr::UsdShadeShader & shader,
const bNode * node,
const std::string & active_uvmap_name,
ReportList * reports )
static

Definition at line 178 of file usd_writer_material.cc.

References usdtokens::a(), blender::io::usd::USDExportParams::allow_unicode, usdtokens::b(), create_input(), create_primvar_reader_shader(), create_usd_preview_shader(), create_uv_input(), bNode::custom1, bNodeSocket::default_value, usdtokens::displacement(), usdtokens::emissive_color(), blender::io::usd::USDExporterContext::export_params, export_texture(), blender::io::usd::USDExportParams::export_textures, Float, bNodeLink::fromnode, bNodeLink::fromsock, usdtokens::g(), bNodeSocket::identifier, blender::io::usd::InputSpec::input_name, blender::io::usd::InputSpec::input_type, bNode::inputs, LISTBASE_FOREACH, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), make_safe_name(), NodeShaderAttribute::name, blender::bke::node_find_socket(), NODE_MATH_LESS_THAN, NODE_MATH_ROUND, NODE_MATH_SUBTRACT, NODE_VECTOR_MATH_MULTIPLY_ADD, usdtokens::opacity(), usdtokens::opacityThreshold(), preview_surface_input_map(), usdtokens::primvar_float(), usdtokens::primvar_float3(), usdtokens::primvar_vector(), usdtokens::r(), usdtokens::result(), usdtokens::rgb(), blender::io::usd::InputSpec::set_default_value, set_normal_texture_range(), set_scale_bias(), SH_NODE_ATTRIBUTE, SH_NODE_MATH, SH_NODE_SEPARATE_COLOR, SH_NODE_TEX_IMAGE, SH_NODE_VECTOR_MATH, SHD_ATTRIBUTE_GEOMETRY, SOCK_FLOAT, SOCK_IN, SOCK_RGBA, SOCK_VECTOR, usdtokens::st(), bNode::storage, STREQ, String, traverse_channel(), NodeShaderAttribute::type, and usdtokens::varname().

Referenced by create_usd_preview_surface_material().

◆ process_scene_graph_instances()

void blender::io::usd::process_scene_graph_instances ( const USDExportParams & export_params,
pxr::UsdStageRefPtr stage )

This function processes the USD stage generated by the USD hierarchy iterator to change scene graph instancing prototypes from defined USD prims to abstract prims.

In the following example, instance /root/proto/Plane_0 references prototype prim /root/proto_001/Plane_0:

def Xform "root" { def Xform "proto_001" { def Xform "Plane_0" { def Mesh "Plane" { } } }

def Xform "proto" { def Xform "Plane_0" ( instanceable = true prepend references = </root/proto_001/Plane_0> ) { } } }

The function will copy prototype /root/proto_001/Plane_0 under a new class prim named /root/prototypes and convert prim /root/proto_001/Plane_0 to be an instance referencing the copied abstract prim /root/prototypes/Plane_0.

def Xform "root" { def Xform "proto" { def Xform "Plane_0" ( instanceable = true prepend references = </root/prototypes/Plane_0> ) { } }

def Xform "proto_001" { def Xform "Plane_0" ( instanceable = true references = </root/prototypes/Plane_0> ) { } }

class "prototypes" { def Xform "Plane_0" { def Mesh "Plane" { } } } }

Parameters
export_paramsThe export parameters
stagePointer to the stage to process

Definition at line 64 of file usd_instancing_utils.cc.

References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), CLOG_ERROR, CLOG_WARN, convert_proto_to_instance(), get_unique_path(), blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::is_empty(), blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::items(), LOG, and blender::io::usd::USDExportParams::root_prim_path.

Referenced by export_to_stage().

◆ process_usdz_textures()

◆ read_face_display_color()

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

◆ read_generic_mesh_primvar()

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

◆ 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 primitives 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, name, blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::Set(), and TempBlendShapeWeightsPrimvarName.

Referenced by shape_key_export_chaser().

◆ report_job_duration() [1/2]

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

Definition at line 198 of file usd_capi_export.cc.

References data, and blender::timeit::print_duration().

Referenced by export_endjob(), and import_endjob().

◆ report_job_duration() [2/2]

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

Definition at line 116 of file usd_capi_import.cc.

References data, and blender::timeit::print_duration().

◆ set_attribute() [1/2]

template<typename USDT>
void blender::io::usd::set_attribute ( const pxr::UsdAttribute & attr,
const USDT value,
pxr::UsdTimeCode time,
pxr::UsdUtilsSparseValueWriter & value_writer )

◆ set_attribute() [2/2]

template<typename USDT>
void blender::io::usd::set_attribute ( const pxr::UsdAttribute & attr,
pxr::VtArray< USDT > & value,
pxr::UsdTimeCode time,
pxr::UsdUtilsSparseValueWriter & value_writer )

Set the USD attribute to the provided array value at the given time. The value will be written sparsely. For efficiency, this function swaps out the given value, leaving it empty, so it can leverage the USD API where no additional copy of the data is required.

Definition at line 145 of file usd_attribute_utils.hh.

◆ set_bool_prop()

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

Definition at line 119 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()

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

Definition at line 145 of file usd_reader_utils.cc.

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

Referenced by set_id_props_from_prim().

◆ set_fcurve_sample()

void blender::io::usd::set_fcurve_sample ( FCurve * fcu,
int64_t sample_index,
const float frame,
const float value )

◆ set_float_prop()

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

Definition at line 132 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 eUSDPropertyImportMode property_import_mode,
const pxr::UsdTimeCode time_code )

◆ set_instance_collection()

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

◆ set_int_prop()

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

Definition at line 106 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()

◆ set_normal_texture_range()

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

◆ set_rest_pose()

void blender::io::usd::set_rest_pose ( Main * bmain,
Object * arm_obj,
bArmature * arm,
const pxr::VtArray< pxr::GfMatrix4d > & bind_xforms,
const pxr::VtTokenArray & joint_order,
const blender::Map< pxr::TfToken, std::string > & joint_to_bone_map,
const pxr::UsdSkelTopology & skel_topology,
const pxr::UsdSkelSkeletonQuery & skel_query )
static

◆ set_scale_bias()

void blender::io::usd::set_scale_bias ( pxr::UsdShadeShader & usd_shader,
const pxr::GfVec4f scale,
const pxr::GfVec4f bias )
static

Definition at line 161 of file usd_writer_material.cc.

References usdtokens::bias(), and usdtokens::scale().

Referenced by process_inputs().

◆ set_string_prop()

◆ 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 385 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 blender::io::usd::USDMaterialImportContext::import_texture(), and 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 1198 of file usd_skel_convert.cc.

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

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 1213 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(), and ID::name.

Referenced by skel_export_chaser().

◆ split_udim_pattern()

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 47 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()

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 415 of file usd_asset_utils.cc.

References BKE_tempdir_session, BLI_path_join, FILE_MAXDIR, and SEP_STR.

Referenced by blender::io::usd::USDMaterialImportContext::import_texture(), 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 313 of file usd_export_test.cc.

References make_safe_name().

◆ TEST_F() [1/3]

◆ TEST_F() [2/3]

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

◆ TEST_F() [3/3]

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

Definition at line 15 of file usd_stage_creation_test.cc.

◆ to_float3()

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 StringRef 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 1435 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()

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 )

Definition at line 590 of file usd_capi_import.cc.

References gather_objects_paths(), handle_from_stage_reader(), and params.

Referenced by BKE_cachefile_eval().

◆ 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 88 of file usd_hook.cc.

References begin(), hook_list(), nullptr, and STREQ.

Referenced by USD_register_hook().

◆ USD_free_handle()

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

Definition at line 611 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 847 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 508 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 71 of file usd_hook.cc.

References hook_list(), and USD_find_hook_name().

◆ USD_unregister_hook()

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

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

Definition at line 82 of file usd_hook.cc.

References hook_list().

◆ visit_bones() [1/2]

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 96 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() [1/2]

void blender::io::usd::world_material_to_dome_light ( const Scene * scene,
WorldToDomeLight & res )

◆ world_material_to_dome_light() [2/2]

◆ write_to_path()

bool blender::io::usd::write_to_path ( const void * data,
size_t size,
const std::string & 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 429 of file usd_asset_utils.cc.

References BKE_reportf(), BLI_assert, data, RPT_ERROR, and size().

Referenced by export_packed_texture().

Variable Documentation

◆ materials_filename

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

Definition at line 44 of file usd_export_test.cc.

Referenced by TEST_F().

◆ output_filename

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

Definition at line 45 of file usd_export_test.cc.

Referenced by blender::io::usd::UsdExportTest::TearDown(), TEST_F(), and TEST_F().

◆ simple_scene_filename

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

Definition at line 43 of file usd_export_test.cc.

Referenced by TEST_F().

◆ TempBlendShapeWeightsPrimvarName

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

◆ UDIM_END_TILE

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

Definition at line 39 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 32 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 38 of file usd_asset_utils.cc.

Referenced by copy_udim_asset_to_directory().