本文整理汇总了C++中UsdPrim类的典型用法代码示例。如果您正苦于以下问题:C++ UsdPrim类的具体用法?C++ UsdPrim怎么用?C++ UsdPrim使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了UsdPrim类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: UsdSkelAnimQuery
UsdSkelAnimQuery
UsdSkel_CacheImpl::ReadScope::FindOrCreateAnimQuery(const UsdPrim& prim)
{
TRACE_FUNCTION();
if(ARCH_UNLIKELY(!prim || !prim.IsActive()))
return UsdSkelAnimQuery();
if(prim.IsInstanceProxy())
return FindOrCreateAnimQuery(prim.GetPrimInMaster());
{
_PrimToAnimMap::const_accessor a;
if(_cache->_animQueryCache.find(a, prim))
return UsdSkelAnimQuery(a->second);
}
if (UsdSkelIsSkelAnimationPrim(prim)) {
_PrimToAnimMap::accessor a;
if(_cache->_animQueryCache.insert(a, prim)) {
a->second = UsdSkel_AnimQueryImpl::New(prim);
}
return UsdSkelAnimQuery(a->second);
}
return UsdSkelAnimQuery();
}
开发者ID:PixarAnimationStudios,项目名称:USD,代码行数:26,代码来源:cacheImpl.cpp
示例2: getUsdPrim
UT_StringHolder
GusdGU_PackedUSD::intrinsicType() const
{
// Return the USD prim type so it can be displayed in the spreadsheet.
UsdPrim prim = getUsdPrim();
return GusdUSD_Utils::TokenToStringHolder( prim.GetTypeName() );
}
开发者ID:PixarAnimationStudios,项目名称:USD,代码行数:7,代码来源:GU_PackedUSD.cpp
示例3: shared_from_this
SdfPath
UsdImagingMaterialAdapter::Populate(UsdPrim const& prim,
UsdImagingIndexProxy* index,
UsdImagingInstancerContext const* instancerContext)
{
// Since material are populated by reference, they need to take care not to
// be populated multiple times.
SdfPath cachePath = prim.GetPath();
if (index->IsPopulated(cachePath)) {
return cachePath;
}
index->InsertSprim(HdPrimTypeTokens->material,
cachePath,
prim, shared_from_this());
HD_PERF_COUNTER_INCR(UsdImagingTokens->usdPopulatedPrimCount);
// Also register this adapter on behalf of any descendent
// UsdShadeShader prims, since they are consumed to
// create the material network.
for (UsdPrim const& child: prim.GetDescendants()) {
if (child.IsA<UsdShadeShader>()) {
index->AddPrimInfo(child.GetPath(), child, shared_from_this());
}
}
return prim.GetPath();
}
开发者ID:PixarAnimationStudios,项目名称:USD,代码行数:28,代码来源:materialAdapter.cpp
示例4: FindOrCreateSkelDefinition
UsdSkel_SkelDefinitionRefPtr
UsdSkel_CacheImpl::ReadScope::FindOrCreateSkelDefinition(const UsdPrim& prim)
{
TRACE_FUNCTION();
if(ARCH_UNLIKELY(!prim || !prim.IsActive()))
return nullptr;
if(prim.IsInstanceProxy())
return FindOrCreateSkelDefinition(prim.GetPrimInMaster());
{
_PrimToSkelDefinitionMap::const_accessor a;
if(_cache->_skelDefinitionCache.find(a, prim))
return a->second;
}
if(prim.IsA<UsdSkelSkeleton>()) {
_PrimToSkelDefinitionMap::accessor a;
if(_cache->_skelDefinitionCache.insert(a, prim)) {
a->second = UsdSkel_SkelDefinition::New(UsdSkelSkeleton(prim));
}
return a->second;
}
return nullptr;
}
开发者ID:PixarAnimationStudios,项目名称:USD,代码行数:26,代码来源:cacheImpl.cpp
示例5: TRACE_FUNCTION
bool
UsdGeomPrimvarsAPI::HasPossiblyInheritedPrimvar(const TfToken &name) const
{
TRACE_FUNCTION();
UsdPrim prim = GetPrim();
if (!prim) {
TF_CODING_ERROR("HasPossiblyInheritedPrimvar called on invalid prim: %s",
UsdDescribe(prim).c_str());
return false;
}
UsdGeomPrimvar pv = GetPrimvar(name);
if (pv.HasAuthoredValue()){
return true;
}
const TfToken attrName = UsdGeomPrimvar::_MakeNamespaced(name);
if (attrName.IsEmpty()) {
return false;
}
for (prim = prim.GetParent(); prim && !prim.IsPseudoRoot();
prim = prim.GetParent()) {
UsdAttribute attr = prim.GetAttribute(attrName);
if (attr.HasAuthoredValue() && UsdGeomPrimvar::IsPrimvar(attr)) {
// Only constant primvars can be inherited.
// Non-constant interpolation blocks inheritance.
return UsdGeomPrimvar(attr).GetInterpolation()
== UsdGeomTokens->constant;
}
}
return false;
}
开发者ID:PixarAnimationStudios,项目名称:USD,代码行数:32,代码来源:primvarsAPI.cpp
示例6: if
/* static */
GfMatrix4d
GusdPrimWrapper::computeTransform(
const UsdPrim& prim,
UsdTimeCode time,
const UT_Matrix4D& houXform,
const GusdSimpleXformCache& xformCache ) {
// We need the transform into the prims space.
// If the prim is in a hierarchy that we have written on this frame,
// its transform will be in the xformCache. Otherwise, we can read it
// from the global cache.
//
// The transform cache is necessary because the gobal cache
// will only contain transform that we read from the stage and
// not anything that we have modified.
UT_Matrix4D primXform;
auto it = xformCache.find( prim.GetPath() );
if( it != xformCache.end() ) {
primXform = it->second;
}
else if( !GusdUSD_XformCache::GetInstance().GetLocalToWorldTransform(
prim,
time,
primXform )) {
TF_WARN( "Failed to get transform for %s.", prim.GetPath().GetText() );
primXform.identity();
}
return GusdUT_Gf::Cast( houXform ) / GusdUT_Gf::Cast( primXform );
}
开发者ID:mplanck,项目名称:USD,代码行数:31,代码来源:primWrapper.cpp
示例7: getUsdPrim
bool
GusdGU_PackedUSD::unpackGeometry(GU_Detail &destgdp,
const char* primvarPattern) const
{
UsdPrim usdPrim = getUsdPrim();
if( !usdPrim )
{
TF_WARN( "Invalid prim found" );
return false;
}
UT_Matrix4D xform(1);
const GU_PrimPacked *prim = getPrim();
if( prim ) {
prim->getFullTransform4(xform);
}
GT_RefineParms rparms;
// Need to manually force polysoup to be turned off.
rparms.setAllowPolySoup( false );
if (primvarPattern) {
rparms.set("usd:primvarPattern", primvarPattern);
}
GT_PrimitiveHandle gtPrim;
DBG( cerr << "GusdGU_PackedUSD::unpackGeometry: " << usdPrim.GetTypeName() << ", " << usdPrim.GetPath() << endl; )
开发者ID:lvxejay,项目名称:USD,代码行数:29,代码来源:GU_PackedUSD.cpp
示例8: initUsdPrim
bool GusdXformWrapper::
initUsdPrim(const UsdStagePtr& stage,
const SdfPath& path,
bool asOverride)
{
bool newPrim = true;
if( asOverride ) {
UsdPrim existing = stage->GetPrimAtPath( path );
if( existing ) {
// Note that we are creating a Xformable rather than a Xform.
// If we are writing an overlay and the ROP sees a geometry packed prim,
// we want to write just the xform. In that case we can use a xform
// wrapper to write the xform on any prim type.
m_usdXformForWrite = UsdGeomXformable(stage->OverridePrim( path ));
newPrim = false;
}
else {
m_usdXformForWrite = UsdGeomXform::Define( stage, path );
// Make sure our ancestors have proper types.
UsdPrim p = m_usdXformForWrite.GetPrim().GetParent();
while( p && p.GetTypeName().IsEmpty() ) {
UsdGeomXform::Define( stage, p.GetPath() );
p = p.GetParent();
}
}
}
else {
m_usdXformForWrite = UsdGeomXform::Define( stage, path );
}
if( !m_usdXformForWrite || !m_usdXformForWrite.GetPrim().IsValid() ) {
TF_WARN( "Unable to create %s xform '%s'.", newPrim ? "new" : "override", path.GetText() );
}
return bool(m_usdXformForWrite);
}
开发者ID:mplanck,项目名称:USD,代码行数:35,代码来源:xformWrapper.cpp
示例9: attrObj
UsdAttribute
PxrUsdMayaWriteUtil::GetOrCreateUsdAttr(
const MPlug& plg,
const UsdPrim& usdPrim,
const std::string &attrName,
bool custom)
{
MObject attrObj(plg.attribute());
TfToken usdAttrName(attrName);
if (usdAttrName.IsEmpty()) {
printf("Invalid attrName '%s' for %s\n",
attrName.c_str(),
plg.name().asChar());
return UsdAttribute();
}
// See if usdAttr already exists. If so, return.
UsdAttribute usdAttr = usdPrim.GetAttribute(usdAttrName);
if (usdAttr) {
return usdAttr;
}
SdfValueTypeName attrType = PxrUsdMayaWriteUtil::GetUsdTypeName(plg);
// ---------------------
// CreateAttribute on USD Prim if specified above
if (attrType) {
usdAttr = usdPrim.CreateAttribute(usdAttrName, attrType, custom);
}
else {
// Skipping. Unsupported type.
}
return usdAttr;
}
开发者ID:ZeroCrunch,项目名称:USD,代码行数:35,代码来源:writeUtil.cpp
示例10: _GatherRibAttributes
static bool
_GatherRibAttributes(
const UsdPrim &prim,
double currentTime,
FnKat::GroupBuilder& attrsBuilder)
{
bool hasAttrs = false;
// USD SHADING STYLE ATTRIBUTES
UsdRiStatements riStatements(prim);
if (riStatements) {
const std::vector<UsdProperty> props =
riStatements.GetRiAttributes();
std::string attrName;
TF_FOR_ALL(propItr, props) {
UsdProperty prop = *propItr;
if (!prop) continue;
std::string nameSpace =
riStatements.GetRiAttributeNameSpace(prop).GetString();
nameSpace = TfStringReplace(nameSpace, ":", ".") + ".";
attrName = nameSpace +
riStatements.GetRiAttributeName(prop).GetString();
VtValue vtValue;
UsdAttribute usdAttr = prim.GetAttribute(prop.GetName());
if (usdAttr) {
if (not usdAttr.Get(&vtValue, currentTime))
continue;
// XXX asShaderParam really means:
// "For arrays, as a single attr vs a type/value pair group"
// The type/value pair group is meaningful for attrs who don't
// have a formal type definition -- like a "user" RiAttribute.
//
// However, other array values (such as two-element shadingrate)
// are not expecting the type/value pair form and will not
// generate rib correctly. As such, we'll handle the "user"
// attribute as a special case.
bool asShaderParam = true;
if (nameSpace == "user.")
{
asShaderParam = false;
}
attrsBuilder.set(attrName, PxrUsdKatanaUtils::ConvertVtValueToKatAttr(vtValue,
asShaderParam) );
}
else {
UsdRelationship usdRel = prim.GetRelationship(prop.GetName());
attrsBuilder.set(attrName, PxrUsdKatanaUtils::ConvertRelTargetsToKatAttr(usdRel,
/* asShaderParam */ false) );
}
hasAttrs = true;
}
}
开发者ID:400dama,项目名称:USD,代码行数:58,代码来源:readPrim.cpp
示例11: endJob
void usdWriteJob::endJob()
{
mJobCtx.processInstances();
UsdPrimSiblingRange usdRootPrims = mJobCtx.mStage->GetPseudoRoot().GetChildren();
// Write Variants (to first root prim path)
UsdPrim usdRootPrim;
TfToken defaultPrim;
if (!usdRootPrims.empty()) {
usdRootPrim = *usdRootPrims.begin();
defaultPrim = usdRootPrim.GetName();
}
if (usdRootPrim && mRenderLayerObjs.length() > 1 &&
!mJobCtx.mArgs.usdModelRootOverridePath.IsEmpty()) {
// Get RenderLayers
// mArgs.usdModelRootOverridePath:
// Require mArgs.usdModelRootOverridePath to be set so that
// the variants are put under a UsdPrim that references a BaseModel
// prim that has all of the geometry, transforms, and other details.
// This needs to be done since "local" values have stronger precedence
// than "variant" values, but "referencing" will cause the variant values
// to take precedence.
defaultPrim = writeVariants(usdRootPrim);
}
// Restoring the currentRenderLayer
MFnRenderLayer currentLayer(MFnRenderLayer::currentLayer());
if (currentLayer.name() != mCurrentRenderLayerName) {
MGlobal::executeCommand(MString("editRenderLayerGlobals -currentRenderLayer ")+
mCurrentRenderLayerName, false, false);
}
postCallback();
// Unfortunately, MGlobal::isZAxisUp() is merely session state that does
// not get recorded in Maya files, so we cannot rely on it being set
// properly. Since "Y" is the more common upAxis, we'll just use
// isZAxisUp as an override to whatever our pipeline is configured for.
TfToken upAxis = UsdGeomGetFallbackUpAxis();
if (MGlobal::isZAxisUp()){
upAxis = UsdGeomTokens->z;
}
UsdGeomSetStageUpAxis(mJobCtx.mStage, upAxis);
if (usdRootPrim){
// We have already decided above that 'usdRootPrim' is the important
// prim for the export... usdVariantRootPrimPath
mJobCtx.mStage->GetRootLayer()->SetDefaultPrim(defaultPrim);
}
if (mJobCtx.mStage->GetRootLayer()->PermissionToSave()) {
mJobCtx.mStage->GetRootLayer()->Save();
}
mJobCtx.mStage->Close();
mJobCtx.mMayaPrimWriterList.clear(); // clear this so that no stage references are left around
MGlobal::displayInfo("usdWriteJob::endJob Saving Stage");
}
开发者ID:JT-a,项目名称:USD,代码行数:57,代码来源:usdWriteJob.cpp
示例12:
SdfPath
UsdImagingSphereLightAdapter::Populate(UsdPrim const& prim,
UsdImagingIndexProxy* index,
UsdImagingInstancerContext const* instancerContext)
{
index->InsertSprim(HdPrimTypeTokens->sphereLight, prim.GetPath(), prim);
HD_PERF_COUNTER_INCR(UsdImagingTokens->usdPopulatedPrimCount);
return prim.GetPath();
}
开发者ID:PixarAnimationStudios,项目名称:USD,代码行数:10,代码来源:sphereLightAdapter.cpp
示例13:
UsdShadeInterfaceAttribute::UsdShadeInterfaceAttribute(
const UsdPrim& prim,
TfToken const& interfaceAttrName,
SdfValueTypeName const& typeName)
: _name(interfaceAttrName)
{
TfToken attrName = _GetName(interfaceAttrName);
_attr = prim.GetAttribute(attrName);
if (not _attr) {
_attr = prim.CreateAttribute(attrName, typeName, /* custom = */ false);
}
}
开发者ID:400dama,项目名称:USD,代码行数:12,代码来源:interfaceAttribute.cpp
示例14:
UsdShadeOutput::UsdShadeOutput(
UsdPrim prim,
TfToken const &name,
SdfValueTypeName const &typeName)
{
// XXX what do we do if the type name doesn't match and it exists already?
TfToken attrName = _GetOutputAttrName(name);
_prop = prim.GetAttribute(attrName);
if (!_prop) {
_prop = prim.CreateAttribute(attrName, typeName, /* custom = */ false);
}
}
开发者ID:JT-a,项目名称:USD,代码行数:12,代码来源:output.cpp
示例15: GetShaderBinding
SdfPath
UsdImagingPointsAdapter::Populate(UsdPrim const& prim,
UsdImagingIndexProxy* index,
UsdImagingInstancerContext const* instancerContext)
{
index->InsertPoints(prim.GetPath(),
GetShaderBinding(prim),
instancerContext);
HD_PERF_COUNTER_INCR(UsdImagingTokens->usdPopulatedPrimCount);
return prim.GetPath();
}
开发者ID:MWDD,项目名称:USD,代码行数:12,代码来源:pointsAdapter.cpp
示例16:
UsdShadeParameter::UsdShadeParameter(
UsdPrim prim,
TfToken const &name,
SdfValueTypeName const &typeName)
{
// XXX what do we do if the type name doesn't match and it exists already?
_attr = prim.GetAttribute(name);
if (!_attr) {
_attr = prim.CreateAttribute(name, typeName, /* custom = */ false);
}
}
开发者ID:davidgyu,项目名称:USD,代码行数:12,代码来源:parameter.cpp
示例17: _RecurseForInheritablePrimvars
static
void
_RecurseForInheritablePrimvars(const UsdPrim &prim, const TfToken &pvPrefix,
std::vector<UsdGeomPrimvar> *primvars,
bool acceptAll = false)
{
if (prim.IsPseudoRoot())
return;
// The `acceptAll` override is only useful for the prim we are actually
// querying, i.e. the *first* prim on which this function is called
_RecurseForInheritablePrimvars(prim.GetParent(), pvPrefix, primvars);
_AddPrimToInheritedPrimvars(prim, pvPrefix, primvars, primvars, acceptAll);
}
开发者ID:PixarAnimationStudios,项目名称:USD,代码行数:14,代码来源:primvarsAPI.cpp
示例18: UsdSkelSkeletonQuery
UsdSkelSkeletonQuery
UsdSkel_CacheImpl::ReadScope::GetInheritedSkelQuery(const UsdPrim& prim) const
{
_PrimToSkelQueryMap::const_accessor a;
for(UsdPrim p = prim; p; p = p.GetParent()) {
if(_cache->_skelQueryCache.find(a, p)) {
return a->second;
}
if(prim.IsA<UsdSkelRoot>()) {
break;
}
}
return UsdSkelSkeletonQuery();
}
开发者ID:lvxejay,项目名称:USD,代码行数:14,代码来源:cacheImpl.cpp
示例19: getUsdPrimForWrite
void
GusdPrimWrapper::updateActiveFromGTPrim(
const GT_PrimitiveHandle& sourcePrim,
UsdTimeCode time)
{
UsdPrim prim = getUsdPrimForWrite().GetPrim();
GT_Owner attrOwner;
GT_DataArrayHandle houAttr
= sourcePrim->findAttribute(GUSD_ACTIVE_ATTR, attrOwner, 0);
if (houAttr) {
int active = houAttr->getI32(0);
prim.SetActive((bool)active);
}
}
开发者ID:mplanck,项目名称:USD,代码行数:15,代码来源:primWrapper.cpp
示例20: _FindRootmostXformOrSkelRoot
/// Finds the rootmost ancestor of the prim at \p path that is an Xform
/// or SkelRoot type prim. The result may be the prim itself.
static UsdPrim
_FindRootmostXformOrSkelRoot(const UsdStagePtr& stage, const SdfPath& path)
{
UsdPrim currentPrim = stage->GetPrimAtPath(path);
UsdPrim rootmost;
while (currentPrim) {
if (currentPrim.IsA<UsdGeomXform>()) {
rootmost = currentPrim;
} else if (currentPrim.IsA<UsdSkelRoot>()) {
rootmost = currentPrim;
}
currentPrim = currentPrim.GetParent();
}
return rootmost;
}
开发者ID:PixarAnimationStudios,项目名称:USD,代码行数:18,代码来源:skelBindingsProcessor.cpp
注:本文中的UsdPrim类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论