示例#1
0
PXR_NAMESPACE_USING_DIRECTIVE

PXRUSDKATANA_USDIN_PLUGIN_DEFINE(PxrUsdInCore_PointsOp, privateData, opArgs, interface)
{
    PxrUsdKatanaAttrMap attrs;

    PxrUsdKatanaReadPoints(
        UsdGeomPoints(privateData.GetUsdPrim()), privateData, attrs);

    attrs.toInterface(interface);
}
示例#2
0
文件: lightFilter.cpp 项目: JT-a/USD
PXR_NAMESPACE_USING_DIRECTIVE

PXRUSDKATANA_USDIN_PLUGIN_DEFINE(PxrUsdInCore_LightFilterOp, privateData, interface)
{
    PxrUsdKatanaAttrMap attrs;
    
    PxrUsdKatanaReadLightFilter(
        UsdLuxLightFilter(privateData.GetUsdPrim()),
        privateData,
        attrs);

    attrs.toInterface(interface);
}
示例#3
0
文件: mesh.cpp 项目: mplanck/USD
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);
    }
}
示例#4
0
文件: material.cpp 项目: MWDD/USD
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));
}
示例#5
0
文件: material.cpp 项目: lvxejay/USD
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));
}
示例#6
0
文件: model.cpp 项目: 400dama/USD
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);
}