50 material_network_map_ = pxr::VtValue();
53 pxr::UsdStageRefPtr stage = pxr::UsdStage::CreateInMemory();
54 pxr::UsdTimeCode time = pxr::UsdTimeCode::Default();
55 auto get_time_code = [time]() {
return time; };
56 pxr::SdfPath material_library_path(
"/_materials");
57 pxr::SdfPath material_path = material_library_path.AppendChild(
58 pxr::TfToken(
prim_id.GetElementString()));
69 material_library_path,
75 pxr::UsdShadeMaterial usd_material;
78 std::string material_name = pxr::TfMakeValidIdentifier(
id->name);
83 pxr::UsdMtlxRead(doc, stage);
87 auto stage_str = [&stage]() {
89 stage->ExportToString(&
str);
92 ID_LOGN(
"Stage:\n%s", stage_str().c_str());
94 if (pxr::UsdPrim materials = stage->GetPrimAtPath(pxr::SdfPath(
"/MaterialX/Materials"))) {
95 pxr::UsdPrimSiblingRange children = materials.GetChildren();
96 if (!children.empty()) {
97 usd_material = pxr::UsdShadeMaterial(*children.begin());
105 export_context, material_path, (
Material *)
id,
"st",
nullptr);
109 const pxr::HdRenderDelegate *render_delegate =
111 const pxr::TfTokenVector contextVector = render_delegate->GetMaterialRenderContexts();
112 pxr::TfTokenVector shaderSourceTypes = render_delegate->GetShaderSourceTypes();
114 pxr::HdMaterialNetworkMap network_map;
116 if (pxr::UsdShadeShader surface = usd_material.ComputeSurfaceSource(contextVector)) {
117 pxr::UsdImagingBuildHdMaterialNetworkFromTerminal(surface.GetPrim(),
118 pxr::HdMaterialTerminalTokens->surface,
125 material_network_map_ = pxr::VtValue(network_map);
btAlignedObjectArray< btScalar > m_data