IXformDataView#

Fully qualified name: isaacsim::core::experimental::prims::IXformDataView

struct IXformDataView#

Read-only view for XformPrim data (positions, orientations, scales).

Engine-agnostic transform data read via IFabricHierarchy. All getters use lazy fetch with step-based staleness detection via ISimulationManager::getNumPhysicsSteps(). Safe to call from multiple onPhysicsStep callbacks.

Subclassed by isaacsim::core::experimental::prims::IArticulationDataView, isaacsim::core::experimental::prims::IRigidBodyDataView

Transform getters (native device pointers)

virtual const float *getWorldPositions(int *outCount) = 0#

Get world positions (float[3] per prim, device memory).

virtual const float *getWorldOrientations(int *outCount) = 0#

Get world orientations (quaternion float[4] per prim, device memory).

virtual const float *getLocalTranslations(int *outCount) = 0#

Get local translations (float[3] per prim, device memory).

virtual const float *getLocalOrientations(int *outCount) = 0#

Get local orientations (quaternion float[4] per prim, device memory).

virtual const float *getLocalScales(int *outCount) = 0#

Get local scales (float[3] per prim, device memory).

Host-memory transform getters (always CPU pointers, copied from GPU if needed)

virtual const float *getWorldPositionsHost(int *outCount) = 0#

Get world positions (float[3] per prim, host memory).

virtual const float *getWorldOrientationsHost(int *outCount) = 0#

Get world orientations (quaternion float[4] per prim, host memory).

virtual const float *getLocalTranslationsHost(int *outCount) = 0#

Get local translations (float[3] per prim, host memory).

virtual const float *getLocalOrientationsHost(int *outCount) = 0#

Get local orientations (quaternion float[4] per prim, host memory).

virtual const float *getLocalScalesHost(int *outCount) = 0#

Get local scales (float[3] per prim, host memory).

Combined pose getters

virtual Poses getWorldPoses() = 0#

Get combined world positions and orientations (device memory). Prefer this over calling getWorldPositions + getWorldOrientations separately as it invokes the shared fill callback only once instead of twice.

virtual Poses getWorldPosesHost() = 0#

Get combined world positions and orientations (host memory). Prefer this over calling getWorldPositionsHost + getWorldOrientationsHost separately as it invokes the shared fill callback only once instead of twice.

Buffer and callback management (used by Python during setup)

virtual bool allocateBufferFloat(
const char *fieldName,
size_t count,
) = 0#

Allocate a named float buffer of the given element count.

virtual bool allocateBufferUint8(
const char *fieldName,
size_t count,
) = 0#

Allocate a named uint8 buffer of the given element count.

virtual uintptr_t getBufferPtr(const char *fieldName) = 0#

Get the raw pointer to a named buffer.

virtual size_t getBufferSize(const char *fieldName) = 0#

Get the byte size of a named buffer.

virtual int getBufferDevice() = 0#

Get the CUDA device ordinal of the data buffers (-1 for CPU).

virtual void registerFieldCallback(
const char *fieldName,
std::function<void()> callback,
) = 0#

Register a callback invoked when the named field is updated.

Public Functions

virtual ~IXformDataView() = default#
virtual bool update() = 0#

Batch pre-fetch all fields for this view.

virtual bool getPrimFrameName(
const char *primPath,
char *outName,
size_t maxLen,
) = 0#

Resolve frame name for any prim in the stage: checks isaac:nameOverride, falls back to prim name. outName: caller buffer of maxLen bytes. Returns false if prim not found or stage unavailable.

virtual bool getPrimWorldTransform(
const char *primPath,
float *outPos3,
float *outOri4,
) = 0#

World transform of any prim in the stage via Fabric (no physics required). outPos3: float[3] (x,y,z). outOri4: float[4] (qw,qx,qy,qz). Returns false if prim not found or stage unavailable.