HDK
|
#include <mapFunction.h>
Public Types | |
typedef std::map< SdfPath, SdfPath, SdfPath::FastLessThan > | PathMap |
A mapping from path to path. More... | |
typedef std::pair< SdfPath, SdfPath > | PathPair |
typedef std::vector< PathPair > | PathPairVector |
Public Member Functions | |
PcpMapFunction ()=default | |
Construct a null function. More... | |
PCP_API void | Swap (PcpMapFunction &map) |
Swap the contents of this map function with map . More... | |
void | swap (PcpMapFunction &map) |
PCP_API bool | operator== (const PcpMapFunction &map) const |
Equality. More... | |
PCP_API bool | operator!= (const PcpMapFunction &map) const |
Inequality. More... | |
PCP_API bool | IsNull () const |
PCP_API bool | IsIdentity () const |
PCP_API bool | IsIdentityPathMapping () const |
bool | HasRootIdentity () const |
PCP_API SdfPath | MapSourceToTarget (const SdfPath &path) const |
PCP_API SdfPath | MapTargetToSource (const SdfPath &path) const |
PCP_API SdfPathExpression | MapSourceToTarget (const SdfPathExpression &pathExpr, std::vector< SdfPathExpression::PathPattern > *unmappedPatterns=nullptr, std::vector< SdfPathExpression::ExpressionReference > *unmappedRefs=nullptr) const |
PCP_API SdfPathExpression | MapTargetToSource (const SdfPathExpression &pathExpr, std::vector< SdfPathExpression::PathPattern > *unmappedPatterns=nullptr, std::vector< SdfPathExpression::ExpressionReference > *unmappedRefs=nullptr) const |
PCP_API PcpMapFunction | Compose (const PcpMapFunction &f) const |
PCP_API PcpMapFunction | ComposeOffset (const SdfLayerOffset &newOffset) const |
PCP_API PcpMapFunction | GetInverse () const |
PCP_API PathMap | GetSourceToTargetMap () const |
The set of path mappings, from source to target. More... | |
const SdfLayerOffset & | GetTimeOffset () const |
The time offset of the mapping. More... | |
PCP_API std::string | GetString () const |
PCP_API size_t | Hash () const |
Return a size_t hash for this map function. More... | |
Static Public Member Functions | |
static PCP_API PcpMapFunction | Create (const PathMap &sourceToTargetMap, const SdfLayerOffset &offset) |
static PCP_API const PcpMapFunction & | Identity () |
Construct an identity map function. More... | |
static PCP_API const PathMap & | IdentityPathMap () |
Returns an identity path mapping. More... | |
Friends | |
PcpMapFunction * | Pcp_MakeIdentity () |
template<typename HashState > | |
void | TfHashAppend (HashState &h, const PcpMapFunction &x) |
A function that maps values from one namespace (and time domain) to another. It represents the transformation that an arc such as a reference arc applies as it incorporates values across the arc.
Take the example of a reference arc, where a source path </Model> is referenced as a target path, </Model_1>. The source path </Model> is the source of the opinions; the target path </Model_1> is where they are incorporated in the scene. Values in the model that refer to paths relative to </Model> must be transformed to be relative to </Model_1> instead. The PcpMapFunction for the arc provides this service.
Map functions have a specific domain, or set of values they can operate on. Any values outside the domain cannot be mapped. The domain precisely tracks what areas of namespace can be referred to across various forms of arcs.
Map functions can be chained to represent a series of map operations applied in sequence. The map function represent the cumulative effect as efficiently as possible. For example, in the case of a chained reference from </Model> to </Model> to </Model> to </Model_1>, this is effectively the same as a mapping directly from </Model> to </Model_1>. Representing the cumulative effect of arcs in this way is important for handling larger scenes efficiently.
Map functions can be inverted. Formally, map functions are bijections (one-to-one and onto), which ensures that they can be inverted. Put differently, no information is lost by applying a map function to set of values within its domain; they retain their distinct identities and can always be mapped back.
One analogy that may or may not be helpful: In the same way a geometric transform maps a model's points in its rest space into the world coordinates for a particular instance, a PcpMapFunction maps values about a referenced model into the composed scene for a particular instance of that model. But rather than translating and rotating points, the map function shifts the values in namespace (and time).
Definition at line 81 of file mapFunction.h.
typedef std::map<SdfPath, SdfPath, SdfPath::FastLessThan> PcpMapFunction::PathMap |
A mapping from path to path.
Definition at line 85 of file mapFunction.h.
typedef std::pair<SdfPath, SdfPath> PcpMapFunction::PathPair |
Definition at line 86 of file mapFunction.h.
typedef std::vector<PathPair> PcpMapFunction::PathPairVector |
Definition at line 87 of file mapFunction.h.
|
default |
Construct a null function.
PCP_API PcpMapFunction PcpMapFunction::Compose | ( | const PcpMapFunction & | f | ) | const |
Compose this map over the given map function. The result will represent the application of f followed by the application of this function.
PCP_API PcpMapFunction PcpMapFunction::ComposeOffset | ( | const SdfLayerOffset & | newOffset | ) | const |
Compose this map function over a hypothetical map function that has an identity path mapping and offset
. This is equivalent to building such a map function and invoking Compose(), but is faster.
|
static |
Constructs a map function with the given arguments. Returns a null map function on error (see IsNull()).
sourceToTargetMap | The map from source paths to target paths. |
offset | The time offset to apply from source to target. |
PCP_API PcpMapFunction PcpMapFunction::GetInverse | ( | ) | const |
Return the inverse of this map function. This returns a true inverse inv:
for any path p in this function's domain that it maps to p', inv(p') -> p.
The set of path mappings, from source to target.
PCP_API std::string PcpMapFunction::GetString | ( | ) | const |
Returns a string representation of this mapping for debugging purposes.
|
inline |
The time offset of the mapping.
Definition at line 223 of file mapFunction.h.
PCP_API size_t PcpMapFunction::Hash | ( | ) | const |
Return a size_t hash for this map function.
|
inline |
Return true if the map function maps the absolute root path to the absolute root path, false otherwise.
Definition at line 142 of file mapFunction.h.
|
static |
Construct an identity map function.
Returns an identity path mapping.
PCP_API bool PcpMapFunction::IsIdentity | ( | ) | const |
Return true if the map function is the identity function. The identity function has an identity path mapping and time offset.
PCP_API bool PcpMapFunction::IsIdentityPathMapping | ( | ) | const |
Return true if the map function uses the identity path mapping. If true, MapSourceToTarget() always returns the path unchanged. However, this map function may have a non-identity time offset.
PCP_API bool PcpMapFunction::IsNull | ( | ) | const |
Return true if this map function is the null function. For a null function, MapSourceToTarget() always returns an empty path.
Map a path in the source namespace to the target. If the path is not in the domain, returns an empty path.
PCP_API SdfPathExpression PcpMapFunction::MapSourceToTarget | ( | const SdfPathExpression & | pathExpr, |
std::vector< SdfPathExpression::PathPattern > * | unmappedPatterns = nullptr , |
||
std::vector< SdfPathExpression::ExpressionReference > * | unmappedRefs = nullptr |
||
) | const |
Map all path pattern prefix paths and expression reference paths in the source namespace to the target. For any references or patterns with prefix paths that are not in the domain, replace with an SdfPathPattern::Nothing() subexpression, to be simplified.
For example, if the mapping specifies /Foo -> /World/Foo_1, and the expression is '/Foo/Bar//Baz + /Something/Else//Entirely', the resulting expression will be '/World/Foo_1/Bar//Baz', since the /Something/Else prefix is outside the domain.
If excludedPatterns
and/or excludedReferences
are supplied, they are populated with those patterns & references that could not be translated and were replaced with SdfPathPattern::Nothing().
Map a path in the target namespace to the source. If the path is not in the co-domain, returns an empty path.
PCP_API SdfPathExpression PcpMapFunction::MapTargetToSource | ( | const SdfPathExpression & | pathExpr, |
std::vector< SdfPathExpression::PathPattern > * | unmappedPatterns = nullptr , |
||
std::vector< SdfPathExpression::ExpressionReference > * | unmappedRefs = nullptr |
||
) | const |
Map all path pattern prefix paths and expression reference paths in the target namespace to the source. For any references or patterns with prefix paths that are not in the co-domain, replace with an SdfPathPattern::Nothing() subexpression, to be simplified.
For example, if the mapping specifies /World/Foo_1 -> /Foo, and the expression is '/World/Foo_1/Bar//Baz + /World/Bar//', the resulting expression will be '/Foo/Bar//Baz', since the /World/Bar prefix is outside the co-domain.
If excludedPatterns
and/or excludedReferences
are supplied, they are populated with those patterns & references that could not be translated and were replaced with SdfPathPattern::Nothing().
PCP_API bool PcpMapFunction::operator!= | ( | const PcpMapFunction & | map | ) | const |
Inequality.
PCP_API bool PcpMapFunction::operator== | ( | const PcpMapFunction & | map | ) | const |
Equality.
PCP_API void PcpMapFunction::Swap | ( | PcpMapFunction & | map | ) |
Swap the contents of this map function with map
.
|
inline |
Definition at line 114 of file mapFunction.h.
|
friend |
|
friend |
Definition at line 368 of file mapFunction.h.