Loading...
Searching...
No Matches
pointInstancerAdapter.h
Go to the documentation of this file.
1//
2// Copyright 2016 Pixar
3//
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
5// with the following modification; you may not use this file except in
6// compliance with the Apache License and the following modification to it:
7// Section 6. Trademarks. is deleted and replaced with:
8//
9// 6. Trademarks. This License does not grant permission to use the trade
10// names, trademarks, service marks, or product names of the Licensor
11// and its affiliates, except as required to comply with Section 4(c) of
12// the License and to reproduce the content of the NOTICE file.
13//
14// You may obtain a copy of the Apache License at
15//
16// http://www.apache.org/licenses/LICENSE-2.0
17//
18// Unless required by applicable law or agreed to in writing, software
19// distributed under the Apache License with the above modification is
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21// KIND, either express or implied. See the Apache License for the specific
22// language governing permissions and limitations under the Apache License.
23//
24#ifndef PXR_USD_IMAGING_USD_IMAGING_POINT_INSTANCER_ADAPTER_H
25#define PXR_USD_IMAGING_USD_IMAGING_POINT_INSTANCER_ADAPTER_H
26
28
29#include "pxr/usdImaging/usdImaging/api.h"
30#include "pxr/usdImaging/usdImaging/instanceablePrimAdapter.h"
31
32#include "pxr/usd/sdf/path.h"
33
35
36#include "pxr/pxr.h"
37
38#include <atomic>
39#include <mutex>
40
41PXR_NAMESPACE_OPEN_SCOPE
42
46{
47public:
49
50 USDIMAGING_API
52 UsdPrim const& prim,
54 UsdImagingInstancerContext const* instancerContext = nullptr) override;
55
56 USDIMAGING_API
57 bool ShouldCullChildren() const override;
58
59 USDIMAGING_API
60 bool IsInstancerAdapter() const override;
61
62 // ---------------------------------------------------------------------- //
64 // ---------------------------------------------------------------------- //
65
66 USDIMAGING_API
67 TfTokenVector GetImagingSubprims(UsdPrim const& prim) override;
68
69 USDIMAGING_API
70 TfToken GetImagingSubprimType(
71 UsdPrim const& prim,
72 TfToken const& subprim) override;
73
74 USDIMAGING_API
75 HdContainerDataSourceHandle GetImagingSubprimData(
76 UsdPrim const& prim,
77 TfToken const& subprim,
78 const UsdImagingDataSourceStageGlobals &stageGlobals) override;
79
80 USDIMAGING_API
81 HdDataSourceLocatorSet InvalidateImagingSubprim(
82 UsdPrim const& prim,
83 TfToken const& subprim,
84 TfTokenVector const& properties,
85 UsdImagingPropertyInvalidationType invalidationType) override;
86
87 // ---------------------------------------------------------------------- //
89 // ---------------------------------------------------------------------- //
90
91 USDIMAGING_API
92 void TrackVariability(UsdPrim const& prim,
93 SdfPath const& cachePath,
94 HdDirtyBits* timeVaryingBits,
96 instancerContext = NULL) const override;
97
98 USDIMAGING_API
99 void UpdateForTime(UsdPrim const& prim,
100 SdfPath const& cachePath,
101 UsdTimeCode time,
102 HdDirtyBits requestedBits,
104 instancerContext = NULL) const override;
105
106 // ---------------------------------------------------------------------- //
108 // ---------------------------------------------------------------------- //
109
110 USDIMAGING_API
111 HdDirtyBits ProcessPropertyChange(UsdPrim const& prim,
112 SdfPath const& cachePath,
113 TfToken const& propertyName)
114 override;
115
116 USDIMAGING_API
117 void ProcessPrimResync(SdfPath const& cachePath,
118 UsdImagingIndexProxy* index) override;
119
120 USDIMAGING_API
121 void ProcessPrimRemoval(SdfPath const& cachePath,
122 UsdImagingIndexProxy* index) override;
123
124 USDIMAGING_API
125 void MarkDirty(UsdPrim const& prim,
126 SdfPath const& cachePath,
127 HdDirtyBits dirty,
128 UsdImagingIndexProxy* index) override;
129
130 USDIMAGING_API
131 void MarkRefineLevelDirty(UsdPrim const& prim,
132 SdfPath const& cachePath,
133 UsdImagingIndexProxy* index) override;
134
135 USDIMAGING_API
136 void MarkReprDirty(UsdPrim const& prim,
137 SdfPath const& cachePath,
138 UsdImagingIndexProxy* index) override;
139
140 USDIMAGING_API
141 void MarkCullStyleDirty(UsdPrim const& prim,
142 SdfPath const& cachePath,
143 UsdImagingIndexProxy* index) override;
144
145 USDIMAGING_API
146 void MarkRenderTagDirty(UsdPrim const& prim,
147 SdfPath const& cachePath,
148 UsdImagingIndexProxy* index) override;
149
150 USDIMAGING_API
151 void MarkTransformDirty(UsdPrim const& prim,
152 SdfPath const& cachePath,
153 UsdImagingIndexProxy* index) override;
154
155 USDIMAGING_API
156 void MarkVisibilityDirty(UsdPrim const& prim,
157 SdfPath const& cachePath,
158 UsdImagingIndexProxy* index) override;
159
160 USDIMAGING_API
161 void MarkLightParamsDirty(
162 const UsdPrim& prim,
163 const SdfPath& cachePath,
164 UsdImagingIndexProxy* index) override;
165
166 USDIMAGING_API
167 void MarkCollectionsDirty(
168 const UsdPrim& prim,
169 const SdfPath& cachePath,
170 UsdImagingIndexProxy* index) override;
171
172 // ---------------------------------------------------------------------- //
174 // ---------------------------------------------------------------------- //
175
176 USDIMAGING_API
178 SdfPath const& instancerPath,
179 UsdTimeCode time) const override;
180
181 USDIMAGING_API
182 size_t SampleInstancerTransform(UsdPrim const& instancerPrim,
183 SdfPath const& instancerPath,
184 UsdTimeCode time,
185 size_t maxNumSamples,
186 float *sampleTimes,
187 GfMatrix4d *sampleValues) override;
188
189 USDIMAGING_API
191 UsdPrim const& usdPrim,
192 SdfPath const& cachePath) const override;
193
194 USDIMAGING_API
196 UsdPrim const& usdPrim,
197 SdfPath const& cachePath) const override;
198
199 USDIMAGING_API
201 SdfPath const& cachePath,
202 UsdTimeCode time,
203 bool ignoreRootTransform = false) const override;
204
205 USDIMAGING_API
206 size_t SampleTransform(UsdPrim const& prim,
207 SdfPath const& cachePath,
208 UsdTimeCode time,
209 size_t maxNumSamples,
210 float *sampleTimes,
211 GfMatrix4d *sampleValues) override;
212
213 USDIMAGING_API
214 size_t SamplePrimvar(UsdPrim const& usdPrim,
215 SdfPath const& cachePath,
216 TfToken const& key,
217 UsdTimeCode time,
218 size_t maxNumSamples,
219 float *sampleTimes,
220 VtValue *sampleValues,
221 VtIntArray *sampleIndices) override;
222
223 USDIMAGING_API
225 SdfPath const& cachePath,
226 UsdTimeCode time) const override;
227
228 USDIMAGING_API
229 bool GetVisible(UsdPrim const& prim,
230 SdfPath const& cachePath,
231 UsdTimeCode time) const override;
232
233 USDIMAGING_API
235 UsdPrim const& usdPrim,
236 SdfPath const& cachePath,
237 TfToken const& instanceInheritablePurpose) const override;
238
239 USDIMAGING_API
241 SdfPath const& cachePath,
242 UsdTimeCode time) const override;
243
244 USDIMAGING_API
245 HdCullStyle GetCullStyle(UsdPrim const& prim,
246 SdfPath const& cachePath,
247 UsdTimeCode time) const override;
248
249 USDIMAGING_API
250 GfRange3d GetExtent(UsdPrim const& usdPrim,
251 SdfPath const& cachePath,
252 UsdTimeCode time) const override;
253
254 USDIMAGING_API
255 bool GetDoubleSided(UsdPrim const& usdPrim,
256 SdfPath const& cachePath,
257 UsdTimeCode time) const override;
258
259
260 USDIMAGING_API
261 SdfPath GetMaterialId(UsdPrim const& prim,
262 SdfPath const& cachePath,
263 UsdTimeCode time) const override;
264
265 USDIMAGING_API
266 VtValue GetLightParamValue(
267 const UsdPrim& prim,
268 const SdfPath& cachePath,
269 const TfToken& paramName,
270 UsdTimeCode time) const override;
271
272 USDIMAGING_API
273 VtValue GetMaterialResource(
274 const UsdPrim& prim,
275 const SdfPath& cachePath,
276 UsdTimeCode time) const override;
277
278 USDIMAGING_API
279 HdExtComputationInputDescriptorVector
280 GetExtComputationInputs(UsdPrim const& prim,
281 SdfPath const& cachePath,
282 const UsdImagingInstancerContext* instancerContext)
283 const override;
284
285 USDIMAGING_API
286 HdExtComputationOutputDescriptorVector
287 GetExtComputationOutputs(UsdPrim const& prim,
288 SdfPath const& cachePath,
289 const UsdImagingInstancerContext* instancerContext)
290 const override;
291
292 USDIMAGING_API
293 HdExtComputationPrimvarDescriptorVector
294 GetExtComputationPrimvars(
295 UsdPrim const& prim,
296 SdfPath const& cachePath,
297 HdInterpolation interpolation,
298 const UsdImagingInstancerContext* instancerContext) const override;
299
300 USDIMAGING_API
301 VtValue
302 GetExtComputationInput(
303 UsdPrim const& prim,
304 SdfPath const& cachePath,
305 TfToken const& name,
306 UsdTimeCode time,
307 const UsdImagingInstancerContext* instancerContext) const override;
308
309 USDIMAGING_API
310 std::string
311 GetExtComputationKernel(
312 UsdPrim const& prim,
313 SdfPath const& cachePath,
314 const UsdImagingInstancerContext* instancerContext) const override;
315
316 USDIMAGING_API
317 VtValue
318 GetInstanceIndices(UsdPrim const& instancerPrim,
319 SdfPath const& instancerCachePath,
320 SdfPath const& prototypeCachePath,
321 UsdTimeCode time) const override;
322
323 USDIMAGING_API
324 VtValue Get(UsdPrim const& prim,
325 SdfPath const& cachePath,
326 TfToken const& key,
327 UsdTimeCode time,
328 VtIntArray *outIndices) const override;
329
330 // ---------------------------------------------------------------------- //
332 // ---------------------------------------------------------------------- //
333
334 USDIMAGING_API
336 SdfPath const &instancerPath,
337 SdfPath const &protoInstancerPath,
338 UsdTimeCode time) const override;
339
340 // ---------------------------------------------------------------------- //
342 // ---------------------------------------------------------------------- //
343
344 USDIMAGING_API
346 SdfPath const& cachePath,
347 int instanceIndex,
348 HdInstancerContext *instancerContext) const override;
349
350 USDIMAGING_API
351 SdfPathVector GetScenePrimPaths(
352 SdfPath const& cachePath,
353 std::vector<int> const& instanceIndices,
354 std::vector<HdInstancerContext> *instancerCtxs) const override;
355
356 USDIMAGING_API
357 bool PopulateSelection(
358 HdSelection::HighlightMode const& highlightMode,
359 SdfPath const &cachePath,
360 UsdPrim const &usdPrim,
361 int const hydraInstanceIndex,
362 VtIntArray const &parentInstanceIndices,
363 HdSelectionSharedPtr const &result) const override;
364
365 // ---------------------------------------------------------------------- //
367 // ---------------------------------------------------------------------- //
368
369 USDIMAGING_API
370 HdVolumeFieldDescriptorVector
371 GetVolumeFieldDescriptors(UsdPrim const& usdPrim, SdfPath const &id,
372 UsdTimeCode time) const override;
373
374protected:
375 friend class UsdImagingInstanceAdapter;
376 // ---------------------------------------------------------------------- //
378 // ---------------------------------------------------------------------- //
379
380 // Given the USD path for a prim of this adapter's type, returns
381 // the prim's Hydra cache path. This version will reserve a path in
382 // the adapter's instancer data map for the given point instancer USD
383 // path, including any necessary variant selection path.
384 //
385 // This method is marked const, but it is not const! If called with the
386 // path of a populated point instancer, it will modify the instancer data
387 // cache and return a new path.
388 USDIMAGING_API
389 SdfPath
390 ResolveCachePath(
391 const SdfPath& usdPath,
392 const UsdImagingInstancerContext* ctx = nullptr) const override;
393
394 USDIMAGING_API
395 void _RemovePrim(SdfPath const& cachePath,
396 UsdImagingIndexProxy* index) override final;
397
398private:
399 struct _ProtoPrim;
400 struct _InstancerData;
401
402 SdfPath _Populate(UsdPrim const& prim,
404 UsdImagingInstancerContext const* instancerContext);
405
406 void _PopulatePrototype(int protoIndex,
407 _InstancerData& instrData,
408 UsdPrim const& protoRootPrim,
410 UsdImagingInstancerContext const *instancerContext);
411
412 // Process prim removal and output a set of affected instancer paths is
413 // provided.
414 void _ProcessPrimRemoval(SdfPath const& cachePath,
416 SdfPathVector* instancersToReload);
417
418 // Removes all instancer data, both locally and from the render index.
419 void _UnloadInstancer(SdfPath const& instancerPath,
420 UsdImagingIndexProxy* index);
421
422 // Updates per-frame instancer visibility.
423 void _UpdateInstancerVisibility(SdfPath const& instancerPath,
424 _InstancerData const& instrData,
425 UsdTimeCode time) const;
426
427 // Returns true if the instancer is visible, taking into account all
428 // parent instancers visibilities.
429 bool _GetInstancerVisible(SdfPath const &instancerPath, UsdTimeCode time)
430 const;
431
432 // Gets the associated _ProtoPrim for the given instancer and cache path.
433 _ProtoPrim const& _GetProtoPrim(SdfPath const& instancerPath,
434 SdfPath const& cachePath) const;
435
436 // Gets the associated _ProtoPrim and instancerContext if cachePath is a
437 // child path and returns \c true, otherwise returns \c false.
438 //
439 // Note that the returned instancer context may not be as fully featured as
440 // your needs may be.
441 bool _GetProtoPrimForChild(
442 UsdPrim const& usdPrim,
443 SdfPath const& cachePath,
444 _ProtoPrim const** proto,
445 UsdImagingInstancerContext* ctx) const;
446
447 // Gets the UsdPrim to use from the given _ProtoPrim.
448 const UsdPrim _GetProtoUsdPrim(_ProtoPrim const& proto) const;
449
450 // Takes the transform applies a corrective transform to 1) remove any
451 // transforms above the model root (root proto path) and 2) apply the
452 // instancer transform.
453 GfMatrix4d _CorrectTransform(UsdPrim const& instancer,
454 UsdPrim const& proto,
455 SdfPath const& cachePath,
456 SdfPathVector const& protoPathChain,
457 GfMatrix4d const& inTransform,
458 UsdTimeCode time) const;
459
460 // Similar to CorrectTransform, requires a visibility value exist in the
461 // ValueCache, removes any visibility opinions above the model root (proto
462 // root path) and applies the instancer visibility.
463 void _ComputeProtoVisibility(UsdPrim const& protoRoot,
464 UsdPrim const& protoGprim,
465 UsdTimeCode time,
466 bool* vis) const;
467
468 /*
469 PointInstancer (InstancerData)
470 |
471 +-- Prototype[0]------+-- ProtoRprim (mesh, curve, ...)
472 | +-- ProtoRprim
473 | +-- ProtoRprim
474 |
475 +-- Prototype[1]------+-- ProtoRprim
476 | +-- ProtoRprim
477 .
478 .
479 */
480
481 // A proto prim represents a single populated prim under a prototype root
482 // declared on the instancer. For example, a character may be targeted
483 // by the prototypes relationship; it will have many meshes, and each
484 // mesh is represented as a separate proto prim.
485 struct _ProtoPrim {
486 _ProtoPrim() : variabilityBits(0), visible(true) {}
487 // Each prim will become a prototype "child" under the instancer.
488 // paths is a list of paths we had to hop across when resolving native
489 // USD instances.
490 SdfPathVector paths;
491 // The prim adapter for the actual prototype prim.
492 UsdImagingPrimAdapterSharedPtr adapter;
493 // The root prototype path, typically the model root, which is a subtree
494 // and might contain several imageable prims.
495 SdfPath protoRootPath;
496 // Tracks the variability of the underlying adapter to avoid
497 // redundantly reading data. This value is stored as
498 // HdDirtyBits bit flags.
499 // XXX: This is mutable so we can set it in TrackVariability.
500 mutable HdDirtyBits variabilityBits;
501 // When variabilityBits does not include HdChangeTracker::DirtyVisibility
502 // the visible field is the unvarying value for visibility.
503 // XXX: This is mutable so we can set it in TrackVariability.
504 mutable bool visible;
505 };
506
507 // Indexed by cachePath (each prim has one entry)
508 typedef std::unordered_map<SdfPath, _ProtoPrim, SdfPath::Hash> _ProtoPrimMap;
509
510 // All data associated with a given Instancer prim. PrimMap could
511 // technically be split out to avoid two lookups, however it seems cleaner
512 // to keep everything bundled up under the instancer path.
513 struct _InstancerData {
514 _InstancerData() {}
515 SdfPath parentInstancerCachePath;
516 _ProtoPrimMap protoPrimMap;
517 SdfPathVector prototypePaths;
518
520 PathToIndexMap prototypePathIndices;
521
522
523 // XXX: We keep a bunch of state around visibility that's set in
524 // TrackVariability and UpdateForTime. "visible", and "visibleTime"
525 // (the cache key for visible) are set in UpdateForTime and guarded
526 // by "mutex".
527 mutable std::mutex mutex;
528 mutable bool variableVisibility;
529 mutable bool visible;
530 mutable UsdTimeCode visibleTime;
531 mutable std::atomic_bool initialized = std::atomic_bool(false);
532 };
533
534 // A map of instancer data, one entry per instancer prim that has been
535 // populated. This must be mutable so we can modify it in ResolveCachePath.
536 // Note: this is accessed in multithreaded code paths and must be protected
537 typedef std::unordered_map<SdfPath /*instancerPath*/,
538 _InstancerData,
539 SdfPath::Hash> _InstancerDataMap;
540 mutable _InstancerDataMap _instancerData;
541
542 inline static std::atomic_int _globalVariantCounter = std::atomic_int(0);
543};
544
545PXR_NAMESPACE_CLOSE_SCOPE
546
547#endif // PXR_USD_IMAGING_USD_IMAGING_POINT_INSTANCER_ADAPTER_H
Stores a 4x4 matrix of double elements.
Definition: matrix4d.h:88
Basic type: 3-dimensional floating point range.
Definition: range3d.h:64
Represents a set of data source locators closed under descendancy.
HighlightMode
Selection modes allow differentiation in selection highlight behavior.
Definition: selection.h:56
Tags for non-hierarchial subdiv surfaces.
Definition: subdivTags.h:43
A path value used to locate objects in layers or scenegraphs.
Definition: path.h:290
This is a space efficient container that mimics the TfHashMap API that uses a vector for storage when...
Definition: denseHashMap.h:58
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:88
This class is used as a context object with global stage information, that gets passed down to dataso...
This proxy class exposes a subset of the private Delegate API to PrimAdapters.
Definition: indexProxy.h:47
Delegate support for instanced prims.
An abstract adapter class for prims that are instanceable.
Delegate support for UsdGeomPointInstancer.
USDIMAGING_API bool GetVisible(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
Returns true if the given prim is visible, taking into account inherited visibility values.
USDIMAGING_API size_t SamplePrimvar(UsdPrim const &usdPrim, SdfPath const &cachePath, TfToken const &key, UsdTimeCode time, size_t maxNumSamples, float *sampleTimes, VtValue *sampleValues, VtIntArray *sampleIndices) override
Sample the primvar for the given prim.
USDIMAGING_API SdfPathVector GetInstancerPrototypes(UsdPrim const &usdPrim, SdfPath const &cachePath) const override
Return the list of known prototypes of this prim.
USDIMAGING_API size_t SampleInstancerTransform(UsdPrim const &instancerPrim, SdfPath const &instancerPath, UsdTimeCode time, size_t maxNumSamples, float *sampleTimes, GfMatrix4d *sampleValues) override
Sample the instancer transform for the given prim.
USDIMAGING_API SdfPath GetScenePrimPath(SdfPath const &cachePath, int instanceIndex, HdInstancerContext *instancerContext) const override
USDIMAGING_API VtValue GetTopology(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
Gets the topology object of a specific Usd prim.
USDIMAGING_API void ProcessPrimResync(SdfPath const &cachePath, UsdImagingIndexProxy *index) override
When a PrimResync event occurs, the prim may have been deleted entirely, adapter plug-ins should over...
USDIMAGING_API SdfPath Populate(UsdPrim const &prim, UsdImagingIndexProxy *index, UsdImagingInstancerContext const *instancerContext=nullptr) override
Called to populate the RenderIndex for this UsdPrim.
USDIMAGING_API HdCullStyle GetCullStyle(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time) const override
Gets the cullstyle of a specific path in the scene graph.
USDIMAGING_API void UpdateForTime(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, HdDirtyBits requestedBits, UsdImagingInstancerContext const *instancerContext=NULL) const override
Populates the cache for the given prim, time and requestedBits.
USDIMAGING_API bool GetDoubleSided(UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
Reads double-sided from the given prim. If not authored, returns false.
USDIMAGING_API GfMatrix4d GetRelativeInstancerTransform(SdfPath const &instancerPath, SdfPath const &protoInstancerPath, UsdTimeCode time) const override
Returns the transform of protoInstancerPath relative to instancerPath.
USDIMAGING_API GfRange3d GetExtent(UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
Reads the extent from the given prim.
USDIMAGING_API PxOsdSubdivTags GetSubdivTags(UsdPrim const &usdPrim, SdfPath const &cachePath, UsdTimeCode time) const override
Get the subdiv tags for this prim.
USDIMAGING_API HdDirtyBits ProcessPropertyChange(UsdPrim const &prim, SdfPath const &cachePath, TfToken const &propertyName) override
Returns a bit mask of attributes to be updated, or HdChangeTracker::AllDirty if the entire prim must ...
USDIMAGING_API void TrackVariability(UsdPrim const &prim, SdfPath const &cachePath, HdDirtyBits *timeVaryingBits, UsdImagingInstancerContext const *instancerContext=NULL) const override
For the given prim, variability is detected and stored in timeVaryingBits.
USDIMAGING_API GfMatrix4d GetInstancerTransform(UsdPrim const &instancerPrim, SdfPath const &instancerPath, UsdTimeCode time) const override
Get the instancer transform for the given prim.
USDIMAGING_API size_t SampleTransform(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, size_t maxNumSamples, float *sampleTimes, GfMatrix4d *sampleValues) override
Samples the transform for the given prim.
USDIMAGING_API VtValue Get(UsdPrim const &prim, SdfPath const &cachePath, TfToken const &key, UsdTimeCode time, VtIntArray *outIndices) const override
Gets the value of the parameter named key for the given prim (which has the given cache path) and giv...
USDIMAGING_API void ProcessPrimRemoval(SdfPath const &cachePath, UsdImagingIndexProxy *index) override
Removes all associated Rprims and dependencies from the render index without scheduling them for repo...
USDIMAGING_API TfToken GetPurpose(UsdPrim const &usdPrim, SdfPath const &cachePath, TfToken const &instanceInheritablePurpose) const override
Returns the purpose token for prim.
USDIMAGING_API SdfPath GetInstancerId(UsdPrim const &usdPrim, SdfPath const &cachePath) const override
Return the instancerId for this prim.
USDIMAGING_API GfMatrix4d GetTransform(UsdPrim const &prim, SdfPath const &cachePath, UsdTimeCode time, bool ignoreRootTransform=false) const override
Fetches the transform for the given prim at the given time from a pre-computed cache of prim transfor...
UsdPrim is the sole persistent scenegraph object on a UsdStage, and is the embodiment of a "Prim" as ...
Definition: prim.h:134
Represent a time value, which may be either numeric, holding a double value, or a sentinel value UsdT...
Definition: timeCode.h:84
Provides a container which may hold any type, and provides introspection and iteration over array typ...
Definition: value.h:164
Object used by instancer prim adapters to pass along context about the instancer and instance prim to...
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:457