本文整理汇总了C++中UsdPrim::GetChildren方法的典型用法代码示例。如果您正苦于以下问题:C++ UsdPrim::GetChildren方法的具体用法?C++ UsdPrim::GetChildren怎么用?C++ UsdPrim::GetChildren使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UsdPrim
的用法示例。
在下文中一共展示了UsdPrim::GetChildren方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: binding
void
UsdSkel_CacheImpl::ReadScope::_RecursivePopulate(const UsdPrim& prim,
SkinningQueryKey key,
UsdSkelAnimQuery animQuery,
size_t depth)
{
if(!prim.IsA<UsdGeomImageable>()) {
TF_DEBUG(USDSKEL_CACHE).Msg(
"[UsdSkelCache]: %sPruning traversal at <%s> "
"(prim types is not a UsdGeomImageable)\n",
_MakeIndent(depth).c_str(), prim.GetPath().GetText());
return;
}
TF_DEBUG(USDSKEL_CACHE).Msg("[UsdSkelCache]: %sVisiting <%s>\n",
_MakeIndent(depth).c_str(),
prim.GetPath().GetText());
UsdSkelBindingAPI binding(prim);
if(UsdRelationship rel = binding.GetAnimationSourceRel()) {
SdfPathVector targets;
if(rel.GetForwardedTargets(&targets)) {
animQuery = FindOrCreateAnimQuery(_GetFirstTarget(rel, targets));
}
}
if(UsdRelationship rel = binding.GetSkeletonRel()) {
SdfPathVector targets;
if(rel.GetForwardedTargets(&targets)) {
_PrimToSkelQueryMap::accessor a;
if(_cache->_skelQueryCache.insert(a, prim)) {
a->second = _FindOrCreateSkelQuery(
_GetFirstTarget(rel, targets), animQuery);
}
key.skelQuery = a->second;
TF_DEBUG(USDSKEL_CACHE).Msg(
"[UsdSkelCache]: %sNew skeleton bound at <%s>: %s\n",
_MakeIndent(depth).c_str(), prim.GetPath().GetText(),
key.skelQuery.GetDescription().c_str());
}
}
if(UsdAttribute attr = binding.GetJointIndicesAttr())
key.jointIndicesAttr = attr;
if(UsdAttribute attr = binding.GetJointWeightsAttr())
key.jointWeightsAttr = attr;
if(UsdAttribute attr = binding.GetGeomBindTransformAttr())
key.geomBindTransformAttr = attr;
if(UsdAttribute attr = binding.GetJointsAttr()) {
VtTokenArray jointOrder;
if(attr.Get(&jointOrder)) {
key.jointOrder = jointOrder;
}
}
if(prim.IsA<UsdGeomBoundable>() &&
(key.jointIndicesAttr && key.jointWeightsAttr)) {
_PrimToSkinningQueryMap::accessor a;
if(_cache->_primSkinningQueryCache.insert(a, prim)) {
a->second = _FindOrCreateSkinningQuery(prim, key);
}
TF_DEBUG(USDSKEL_CACHE).Msg(
"[UsdSkelCache]: %sFound skinnable prim <%s> (valid? %d)\n",
_MakeIndent(depth).c_str(), prim.GetPath().GetText(),
a->second.IsValid());
// Skinnable prims cannot be nested.
return;
}
UsdPrim traversalPrim = !prim.IsInstance() ? prim : prim.GetMaster();
for(const auto& child : prim.GetChildren()) {
_RecursivePopulate(child, key, animQuery, depth+1);
}
}