|
HDK
|
#include <velocityMotionResolvingSceneIndex.h>
Inheritance diagram for HdsiVelocityMotionResolvingSceneIndex:Public Member Functions | |
| HDSI_API HdSceneIndexPrim | GetPrim (const SdfPath &primPath) const override |
| HDSI_API SdfPathVector | GetChildPrimPaths (const SdfPath &primPath) const override |
Public Member Functions inherited from HdSingleInputFilteringSceneIndexBase | |
| HD_API std::vector < HdSceneIndexBaseRefPtr > | GetInputScenes () const final |
Public Member Functions inherited from HdSceneIndexBase | |
| HD_API | HdSceneIndexBase () |
| HD_API | ~HdSceneIndexBase () override |
| HD_API void | AddObserver (const HdSceneIndexObserverPtr &observer) |
| HD_API void | RemoveObserver (const HdSceneIndexObserverPtr &observer) |
| HdDataSourceBaseHandle | GetDataSource (const SdfPath &primPath, const HdDataSourceLocator &locator) const |
| HD_API void | SystemMessage (const TfToken &messageType, const HdDataSourceBaseHandle &args) |
| HD_API std::string | GetDisplayName () const |
| HD_API void | SetDisplayName (const std::string &n) |
| HD_API void | AddTag (const TfToken &tag) |
| HD_API void | RemoveTag (const TfToken &tag) |
| HD_API bool | HasTag (const TfToken &tag) const |
| HD_API TfTokenVector | GetTags () const |
Public Member Functions inherited from TfRefBase | |
| TfRefBase () | |
| TfRefBase (TfRefBase const &) | |
| TfRefBase & | operator= (TfRefBase const &) |
| size_t | GetCurrentCount () const |
| Return the current reference count of this object. More... | |
| bool | IsUnique () const |
Return true if only one TfRefPtr points to this object. More... | |
| void | SetShouldInvokeUniqueChangedListener (bool shouldCall) |
Public Member Functions inherited from TfWeakBase | |
| TfWeakBase () | |
| TfWeakBase (const TfWeakBase &) | |
| const TfWeakBase & | __GetTfWeakBase__ () const |
| const TfWeakBase & | operator= (const TfWeakBase &) |
| void | EnableNotification2 () const |
| TF_API void const * | GetUniqueIdentifier () const |
Static Public Member Functions | |
| static HDSI_API HdsiVelocityMotionResolvingSceneIndexRefPtr | New (const HdSceneIndexBaseRefPtr &inputSceneIndex, const HdContainerDataSourceHandle &inputArgs=nullptr) |
| static HDSI_API bool | PrimTypeSupportsVelocityMotion (const TfToken &primType) |
Static Public Member Functions inherited from TfRefBase | |
| static TF_API void | SetUniqueChangedListener (UniqueChangedListener listener) |
Additional Inherited Members | |
Public Types inherited from TfRefBase | |
| typedef void(* | UniqueChangedFuncPtr )(TfRefBase const *, bool) |
Scene index that resolves velocity-based motion for all prims that support it. For a complete discussion of how velocity-based motion works, when it is valid, and how it is resolved, see the UsdGeom documentation here: https://openusd.org/dev/api/usd_geom_page_front.html#UsdGeom_VelocityInterpolation
This scene index performs all the necessary calculations so that downstream consumers do not need to worry about velocity-based motion. Downstream consumers need only make the usual call to GetContributingSampleTimesForInterval() for an affected primvar, then sample the primvar's value at the given times.
Affected primvars are: For points-based geometry:
There is no need for downstream consumers to query velocities, accelerations, or angularVelocities; their effects have already been applied to the sampled values when appropriate. Downstream consumers will only see motion (or none), again, as appropriate for the sampled primvar. Any distinction between motion due to velocities and motion due to USD value interpolation is intentionally lost.
Note that, where non-linear motion has been applied (i.e., points or instancePositions with accelerations, or instance rotations with angularVelocities), GetContributingSampleTimesForInterval() will provide the correct number of sample times for non-linear motion, taking UsdGeomMotionAPI's nonlinearSampleCount into consideration. (Downstream consumers should still check nonlinearSampleCount in the case of instanceRotations.)
Additionally, to support certain established workflows, the behavior of the scene index may be controlled by the prim-level Hydra parameter "__velocityMotionMode". This is never read from usd and must instead be authored in a preceding filtering scene index. It is a token with one of the following recognized values:
In all cases (except 'ignore'), __velocityMotionMode has no effect unless the authored velocity data is valid (see link above for what counts as valid). (In the case of 'ignore', validity is not evaluated.) Where the velocity data is not valid, the scene index makes no changes to the incoming scene data, which may indicate motion due to USD value interpolation where appropriate.
Definition at line 95 of file velocityMotionResolvingSceneIndex.h.
|
protected |
|
overrideprotectedvirtual |
Implements HdSingleInputFilteringSceneIndexBase.
|
overrideprotectedvirtual |
Implements HdSingleInputFilteringSceneIndexBase.
|
overrideprotectedvirtual |
Implements HdSingleInputFilteringSceneIndexBase.
|
overridevirtual |
Returns the paths of all scene index prims located immediately below primPath. This function can be used to traverse the scene by recursing from SdfPath::AbsoluteRootPath(); such a traversal is expected to give the same set of prims as the flattening of the scene index's PrimsAdded and PrimsRemoved messages. This function is expected to be threadsafe.
Implements HdSceneIndexBase.
|
overridevirtual |
Returns a pair of (prim type, datasource) for the object at primPath. If no such object exists, the type will be the empty token and the datasource will be null. This function is expected to be threadsafe.
Implements HdSceneIndexBase.
|
static |
|
static |