7 #include <pxr/base/tf/stringUtils.h>
17 static const pxr::TfToken
diffuse_color(
"diffuseColor", pxr::TfToken::Immortal);
18 static const pxr::TfToken
metallic(
"metallic", pxr::TfToken::Immortal);
19 static const pxr::TfToken
preview_shader(
"previewShader", pxr::TfToken::Immortal);
20 static const pxr::TfToken
preview_surface(
"UsdPreviewSurface", pxr::TfToken::Immortal);
21 static const pxr::TfToken
roughness(
"roughness", pxr::TfToken::Immortal);
22 static const pxr::TfToken
surface(
"surface", pxr::TfToken::Immortal);
35 return name ? name :
"";
41 : usd_export_context_(usd_export_context), frame_has_been_written_(false), is_animated_(false)
62 static pxr::UsdTimeCode default_timecode = pxr::UsdTimeCode::Default();
63 return default_timecode;
90 static pxr::SdfPath material_library_path(
"/_materials");
95 pxr::SdfPath
usd_path = material_library_path.AppendChild(material_name);
96 pxr::UsdShadeMaterial usd_material = pxr::UsdShadeMaterial::Get(
stage,
usd_path);
100 usd_material = pxr::UsdShadeMaterial::Define(
stage,
usd_path);
102 if (
material->
use_nodes && this->usd_export_context_.export_params.generate_preview_surface) {
115 const pxr::UsdTimeCode timecode,
116 pxr::UsdGeomImageable &usd_geometry)
118 pxr::UsdAttribute attr_visibility = usd_geometry.CreateVisibilityAttr(pxr::VtValue(),
true);
120 const bool is_visible =
context.is_object_visible(
122 const pxr::TfToken visibility = is_visible ? pxr::UsdGeomTokens->inherited :
123 pxr::UsdGeomTokens->invisible;
125 usd_value_writer_.SetAttribute(attr_visibility, pxr::VtValue(visibility), timecode);
133 printf(
"USD ref error: export path is reference path: %s\n",
context.export_path.c_str());
138 pxr::SdfPath ref_path(
context.original_export_path);
139 if (!prim.GetReferences().AddInternalReference(ref_path)) {
143 printf(
"USD Export warning: unable to add reference from %s to %s, not instancing object\n",
145 context.original_export_path.c_str());
CustomData interface, see also DNA_customdata_types.h.
const char * CustomData_get_active_layer_name(const struct CustomData *data, int type)
#define BLI_assert_msg(a, msg)
virtual std::string get_id_name(const ID *id) const
virtual bool check_is_animated(const HierarchyContext &context) const
pxr::UsdShadeMaterial ensure_usd_material(const HierarchyContext &context, Material *material)
virtual void do_write(HierarchyContext &context)=0
bool frame_has_been_written_
const pxr::SdfPath & usd_path() const
void write_visibility(const HierarchyContext &context, const pxr::UsdTimeCode timecode, pxr::UsdGeomImageable &usd_geometry)
virtual bool mark_as_instance(const HierarchyContext &context, const pxr::UsdPrim &prim)
pxr::UsdTimeCode get_export_time_code() const
pxr::UsdUtilsSparseValueWriter usd_value_writer_
USDAbstractWriter(const USDExporterContext &usd_export_context)
virtual void write(HierarchyContext &context) override
virtual bool is_supported(const HierarchyContext *context) const
std::string get_export_file_path() const
const USDExporterContext usd_export_context_
std::string get_export_file_path() const
const pxr::UsdTimeCode & get_export_time_code() const
void create_usd_preview_surface_material(const USDExporterContext &usd_export_context, Material *material, pxr::UsdShadeMaterial &usd_material, const std::string &default_uv)
void create_usd_viewport_material(const USDExporterContext &usd_export_context, Material *material, pxr::UsdShadeMaterial &usd_material)
static const pxr::TfToken preview_shader("previewShader", pxr::TfToken::Immortal)
static const pxr::TfToken surface("surface", pxr::TfToken::Immortal)
static const pxr::TfToken roughness("roughness", pxr::TfToken::Immortal)
static const pxr::TfToken metallic("metallic", pxr::TfToken::Immortal)
static const pxr::TfToken diffuse_color("diffuseColor", pxr::TfToken::Immortal)
static const pxr::TfToken preview_surface("UsdPreviewSurface", pxr::TfToken::Immortal)
enum eEvaluationMode evaluation_mode
const USDExportParams & export_params
const pxr::SdfPath usd_path
const pxr::UsdStageRefPtr stage
const USDHierarchyIterator * hierarchy_iterator
static std::string get_mesh_active_uvlayer_name(const Object *ob)