62 material_network_map_ = pxr::VtValue();
65 pxr::UsdStageRefPtr
stage = pxr::UsdStage::CreateInMemory();
66 pxr::UsdTimeCode time = pxr::UsdTimeCode::Default();
67 auto get_time_code = [
time]() {
return time; };
68 pxr::SdfPath material_library_path(
"/_materials");
69 pxr::SdfPath material_path = material_library_path.AppendChild(
70 pxr::TfToken(
prim_id.GetElementString()));
81 material_library_path,
87 pxr::UsdShadeMaterial usd_material;
92 std::string material_name = pxr::TfMakeValidIdentifier(id->name);
95 pxr::UsdMtlxRead(doc,
stage);
99 auto stage_str = [&
stage]() {
104 ID_LOGN(2,
"Stage:\n%s", stage_str().c_str());
106 if (pxr::UsdPrim materials =
stage->GetPrimAtPath(pxr::SdfPath(
"/MaterialX/Materials"))) {
107 pxr::UsdPrimSiblingRange children = materials.GetChildren();
108 if (!children.empty()) {
109 usd_material = pxr::UsdShadeMaterial(*children.begin());
117 export_context, material_path, (
Material *)
id,
"st",
nullptr);
121 const pxr::HdRenderDelegate *render_delegate =
123 const pxr::TfTokenVector contextVector = render_delegate->GetMaterialRenderContexts();
124 pxr::TfTokenVector shaderSourceTypes = render_delegate->GetShaderSourceTypes();
126 pxr::HdMaterialNetworkMap network_map;
128 if (pxr::UsdShadeShader surface = usd_material.ComputeSurfaceSource(contextVector)) {
129 pxr::UsdImagingBuildHdMaterialNetworkFromTerminal(surface.GetPrim(),
130 pxr::HdMaterialTerminalTokens->surface,
137 material_network_map_ = pxr::VtValue(network_map);
btAlignedObjectArray< btScalar > m_data