bool PxrUsdKatana_AreRelTargetsFromBaseMaterial(const UsdRelationship &rel) { // Find the strongest opinion about the relationship targets. SdfRelationshipSpecHandle strongestRelSpec; SdfPropertySpecHandleVector propStack = rel.GetPropertyStack(); for (const SdfPropertySpecHandle &prop: propStack) { if (SdfRelationshipSpecHandle relSpec = TfDynamic_cast<SdfRelationshipSpecHandle>(prop)) { if (relSpec->HasTargetPathList()) { strongestRelSpec = relSpec; break; } } } // Find which prim node introduced that opinion. if (strongestRelSpec) { for(const PcpNodeRef &node: rel.GetPrim().GetPrimIndex().GetNodeRange()) { if (node.GetPath() == strongestRelSpec->GetPath().GetPrimPath() && node.GetLayerStack()->HasLayer(strongestRelSpec->GetLayer())) { return _NodeRepresentsLiveBaseMaterial(node); } } } return false; }
static string __repr__(const UsdRelationship &self) { if (self) { return TfStringPrintf("%s.GetRelationship(%s)", TfPyRepr(self.GetPrim()).c_str(), TfPyRepr(self.GetName()).c_str()); } else { return "invalid " + self.GetDescription(); } }