PXR_NAMESPACE_USING_DIRECTIVE PXRUSDKATANA_USDIN_PLUGIN_DEFINE(PxrUsdInCore_PointsOp, privateData, opArgs, interface) { PxrUsdKatanaAttrMap attrs; PxrUsdKatanaReadPoints( UsdGeomPoints(privateData.GetUsdPrim()), privateData, attrs); attrs.toInterface(interface); }
PXR_NAMESPACE_USING_DIRECTIVE PXRUSDKATANA_USDIN_PLUGIN_DEFINE(PxrUsdInCore_LightFilterOp, privateData, interface) { PxrUsdKatanaAttrMap attrs; PxrUsdKatanaReadLightFilter( UsdLuxLightFilter(privateData.GetUsdPrim()), privateData, attrs); attrs.toInterface(interface); }
PXRUSDKATANA_USDIN_PLUGIN_DEFINE(PxrUsdInCore_MeshOp, privateData, interface) { PxrUsdKatanaAttrMap attrs; const UsdPrim& prim = privateData.GetUsdPrim(); PxrUsdKatanaReadMesh( UsdGeomMesh(prim), privateData, attrs); attrs.toInterface(interface); if (TfGetEnvSetting(USD_KATANA_IMPORT_FACESET_API) and UsdShadeMaterial::HasMaterialFaceSet(prim)) { _CreateFaceSetsFromFaceSetAPI(prim, privateData, interface); } }
PXR_NAMESPACE_USING_DIRECTIVE PXRUSDKATANA_USDIN_PLUGIN_DEFINE(PxrUsdInCore_LookOp, privateData, interface) { PxrUsdKatanaAttrMap attrs; PxrUsdKatanaReadMaterial( UsdShadeMaterial(privateData.GetUsdPrim()), /* flatten */ true, privateData, attrs); attrs.toInterface(interface); // tell the op handling the traversal to skip all children interface.setAttr("__UsdIn.skipAllChildren", FnAttribute::IntAttribute(1)); }
PXR_NAMESPACE_USING_DIRECTIVE PXRUSDKATANA_USDIN_PLUGIN_DEFINE(PxrUsdInCore_LookOp, privateData, opArgs, interface) { PxrUsdKatanaAttrMap attrs; // always flatten individual materials bool flatten = true; UsdShadeMaterial materialSchema(privateData.GetUsdPrim()); PxrUsdKatanaReadMaterial( materialSchema, flatten, privateData, attrs); // Read blind data. PxrUsdKatanaReadBlindData( UsdKatanaBlindDataObject(materialSchema), attrs); attrs.toInterface(interface); // tell the op handling the traversal to skip all children interface.setAttr("__UsdIn.skipAllChildren", FnAttribute::IntAttribute(1)); }
PXRUSDKATANA_USDIN_PLUGIN_DEFINE(PxrUsdInCore_ModelOp, privateData, interface) { PxrUsdKatanaAttrMap attrs; const UsdPrim& prim = privateData.GetUsdPrim(); if (prim.HasAssetInfo()) { PxrUsdKatanaReadModel(prim, privateData, attrs); } // If 'type' has been set to something other than 'group' by // a different PxrUsdIn plugin, leave it alone. It means a // more specific USD type applied. Otherwise, set 'type' here // based on the model kind. // if (FnKat::StringAttribute(interface.getOutputAttr("type") ).getValue("", false) == "group") { if (prim.IsGroup()) { if (PxrUsdKatanaUtils::ModelGroupIsAssembly(prim)) { interface.setAttr("type", FnKat::StringAttribute("assembly")); } } else { TfToken kind; UsdModelAPI(prim).GetKind(&kind); if (kind == KindTokens->subcomponent) { interface.setAttr("type", FnKat::StringAttribute("subcomponent")); } else { interface.setAttr("type", FnKat::StringAttribute("component")); } } } else { // XXX Katana 2.1v2: If 'type' has already been set to // something other than 'group', strip off the proxies // attribute because Katana crashes if it has both a // proxies attribute and a vmp for the type. attrs.del("proxies"); } attrs.toInterface(interface); // when checking for a looks group, swap in the master if the prim is an instance UsdPrim lookPrim = (prim.IsInstance() and not privateData.GetMasterPath().IsEmpty()) ? prim.GetMaster().GetChild(TfToken(UsdKatanaTokens->katanaLooksScopeName)) : prim.GetChild(TfToken(UsdKatanaTokens->katanaLooksScopeName)); if (lookPrim) { interface.setAttr(UsdKatanaTokens->katanaLooksChildNameExclusionAttrName, FnKat::IntAttribute(1)); interface.createChild(TfToken(UsdKatanaTokens->katanaLooksScopeName), "UsdInCore_LooksGroupOp", FnKat::GroupAttribute(), FnKat::GeolibCookInterface::ResetRootTrue, new PxrUsdKatanaUsdInPrivateData( lookPrim, privateData.GetUsdInArgs(), &privateData), PxrUsdKatanaUsdInPrivateData::Delete); } // early exit for models that are groups if (prim.IsGroup()) { return; } interface.createChild("ConstraintTargets", "UsdInCore_ConstraintsOp", FnKat::GroupAttribute(), FnKat::GeolibCookInterface::ResetRootTrue, new PxrUsdKatanaUsdInPrivateData( prim, privateData.GetUsdInArgs(), &privateData), PxrUsdKatanaUsdInPrivateData::Delete); }