Package physx.physics

Class PxArticulationCache

java.lang.Object
physx.NativeObject
physx.physics.PxArticulationCache

public class PxArticulationCache extends NativeObject
Data structure used to read and write internal articulation data.

PxArticulationReducedCoordinate::copyInternalStateToCache

  • Field Details

    • SIZEOF

      public static final int SIZEOF
    • ALIGNOF

      public static final int ALIGNOF
      See Also:
  • Constructor Details

    • PxArticulationCache

      protected PxArticulationCache()
    • PxArticulationCache

      protected PxArticulationCache(long address)
  • Method Details

    • wrapPointer

      public static PxArticulationCache wrapPointer(long address)
    • arrayGet

      public static PxArticulationCache arrayGet(long baseAddress, int index)
    • destroy

      public void destroy()
    • getExternalForces

      public PxSpatialForce getExternalForces()
      External forces acting on the articulation links for inverse dynamics computation.

      - N = getNbLinks(). - Indexing follows the low-level link indices, see PxArticulationLink::getLinkIndex. - The forces are with respect to the center of mass of the link. - This field cannot be used to apply forces to links during the next PxScene::simulate() call. Use PxRigidBody::addForce and related functions instead.

    • setExternalForces

      public void setExternalForces(PxSpatialForce value)
      External forces acting on the articulation links for inverse dynamics computation.

      - N = getNbLinks(). - Indexing follows the low-level link indices, see PxArticulationLink::getLinkIndex. - The forces are with respect to the center of mass of the link. - This field cannot be used to apply forces to links during the next PxScene::simulate() call. Use PxRigidBody::addForce and related functions instead.

    • getDenseJacobian

      public PxRealPtr getDenseJacobian()
      Dense Jacobian data.

      - N = nbRows * nbCols = (6 * getNbLinks()) * (6 + getDofs()) -> size includes possible floating-base DOFs regardless of PxArticulationFlag::eFIX_BASE flag. - The links, i.e. rows are in order of the low-level link indices (minus one if PxArticulationFlag::eFIX_BASE is true), see PxArticulationLink::getLinkIndex. The corresponding spatial velocities are stacked [vx; vy; vz; wx; wy; wz], where vx and wx refer to the linear and rotational velocity in world X. - The DOFs, i.e. column indices correspond to the low-level DOF indices, see PxArticulationCache::jointVelocity.

    • setDenseJacobian

      public void setDenseJacobian(PxRealPtr value)
      Dense Jacobian data.

      - N = nbRows * nbCols = (6 * getNbLinks()) * (6 + getDofs()) -> size includes possible floating-base DOFs regardless of PxArticulationFlag::eFIX_BASE flag. - The links, i.e. rows are in order of the low-level link indices (minus one if PxArticulationFlag::eFIX_BASE is true), see PxArticulationLink::getLinkIndex. The corresponding spatial velocities are stacked [vx; vy; vz; wx; wy; wz], where vx and wx refer to the linear and rotational velocity in world X. - The DOFs, i.e. column indices correspond to the low-level DOF indices, see PxArticulationCache::jointVelocity.

    • getMassMatrix

      public PxRealPtr getMassMatrix()
      The generalized mass matrix that maps joint accelerations to joint forces.

      - N = getDofs() * getDofs(). - The indexing follows the internal DOF index order, see PxArticulationCache::jointVelocity.

    • setMassMatrix

      public void setMassMatrix(PxRealPtr value)
      The generalized mass matrix that maps joint accelerations to joint forces.

      - N = getDofs() * getDofs(). - The indexing follows the internal DOF index order, see PxArticulationCache::jointVelocity.

    • getJointVelocity

      public PxRealPtr getJointVelocity()
      The articulation joint DOF velocities.

      - N = getDofs(). - Read/write using PxArticulationCacheFlag::eVELOCITY. - The indexing follows the internal DOF index order. Therefore, the application should calculate the DOF data indices by summing the joint DOFs in the order of the links' low-level indices (see the manual Section "Cache Indexing" for a snippet for this calculation): \verbatim Low-level link index: | link 0 | link 1 | link 2 | link 3 | ... | <- PxArticulationLink::getLinkIndex() \endverbatim \verbatim Link inbound joint DOF: | 0 | 1 | 2 | 1 | ... | <- PxArticulationLink::getInboundJointDof() \endverbatim \verbatim Low-level DOF index: | - | 0 | 1, 2 | 3 | ... | \endverbatim The root link always has low-level index 0 and always has zero inbound joint DOFs. The link DOF indexing follows the order in PxArticulationAxis::Enum. For example, assume that low-level link 2 has an inbound spherical joint with two DOFs: eSWING1 and eSWING2. The corresponding low-level joint DOF indices are therefore 1 for eSWING1 and 2 for eSWING2.

    • setJointVelocity

      public void setJointVelocity(PxRealPtr value)
      The articulation joint DOF velocities.

      - N = getDofs(). - Read/write using PxArticulationCacheFlag::eVELOCITY. - The indexing follows the internal DOF index order. Therefore, the application should calculate the DOF data indices by summing the joint DOFs in the order of the links' low-level indices (see the manual Section "Cache Indexing" for a snippet for this calculation): \verbatim Low-level link index: | link 0 | link 1 | link 2 | link 3 | ... | <- PxArticulationLink::getLinkIndex() \endverbatim \verbatim Link inbound joint DOF: | 0 | 1 | 2 | 1 | ... | <- PxArticulationLink::getInboundJointDof() \endverbatim \verbatim Low-level DOF index: | - | 0 | 1, 2 | 3 | ... | \endverbatim The root link always has low-level index 0 and always has zero inbound joint DOFs. The link DOF indexing follows the order in PxArticulationAxis::Enum. For example, assume that low-level link 2 has an inbound spherical joint with two DOFs: eSWING1 and eSWING2. The corresponding low-level joint DOF indices are therefore 1 for eSWING1 and 2 for eSWING2.

    • getJointAcceleration

      public PxRealPtr getJointAcceleration()
      The articulation joint DOF accelerations.

      - N = getDofs(). - Read using PxArticulationCacheFlag::eACCELERATION. - The indexing follows the internal DOF index order, see PxArticulationCache::jointVelocity. - Delta joint DOF velocities can be computed from acceleration * dt.

    • setJointAcceleration

      public void setJointAcceleration(PxRealPtr value)
      The articulation joint DOF accelerations.

      - N = getDofs(). - Read using PxArticulationCacheFlag::eACCELERATION. - The indexing follows the internal DOF index order, see PxArticulationCache::jointVelocity. - Delta joint DOF velocities can be computed from acceleration * dt.

    • getJointPosition

      public PxRealPtr getJointPosition()
      The articulation joint DOF positions.

      - N = getDofs(). - Read/write using PxArticulationCacheFlag::ePOSITION. - The indexing follows the internal DOF index order, see PxArticulationCache::jointVelocity. - For spherical joints, the joint position for each axis on the joint must be in range [-Pi, Pi].

    • setJointPosition

      public void setJointPosition(PxRealPtr value)
      The articulation joint DOF positions.

      - N = getDofs(). - Read/write using PxArticulationCacheFlag::ePOSITION. - The indexing follows the internal DOF index order, see PxArticulationCache::jointVelocity. - For spherical joints, the joint position for each axis on the joint must be in range [-Pi, Pi].

    • getJointForce

      public PxRealPtr getJointForce()
      The articulation joint DOF forces.

      - N = getDofs(). - Read/Write using PxArticulationCacheFlag::eFORCE. - The indexing follows the internal DOF index order, see PxArticulationCache::jointVelocity. - Applied joint forces persist and are applied each frame until changed.

    • setJointForce

      public void setJointForce(PxRealPtr value)
      The articulation joint DOF forces.

      - N = getDofs(). - Read/Write using PxArticulationCacheFlag::eFORCE. - The indexing follows the internal DOF index order, see PxArticulationCache::jointVelocity. - Applied joint forces persist and are applied each frame until changed.

    • getLinkVelocity

      public PxSpatialVelocity getLinkVelocity()
      Link spatial velocity.

      - N = getNbLinks(). - Read using PxArticulationCacheFlag::eLINK_VELOCITY. - The indexing follows the internal link indexing, see PxArticulationLink::getLinkIndex. - The velocity is with respect to the link's center of mass but represented in world space.

    • setLinkVelocity

      public void setLinkVelocity(PxSpatialVelocity value)
      Link spatial velocity.

      - N = getNbLinks(). - Read using PxArticulationCacheFlag::eLINK_VELOCITY. - The indexing follows the internal link indexing, see PxArticulationLink::getLinkIndex. - The velocity is with respect to the link's center of mass but represented in world space.

    • getLinkAcceleration

      public PxSpatialVelocity getLinkAcceleration()
      Link classical acceleration.

      - N = getNbLinks(). - Read using PxArticulationCacheFlag::eLINK_ACCELERATION. - The indexing follows the internal link indexing, see PxArticulationLink::getLinkIndex. - The acceleration is with respect to the link's center of mass.

    • setLinkAcceleration

      public void setLinkAcceleration(PxSpatialVelocity value)
      Link classical acceleration.

      - N = getNbLinks(). - Read using PxArticulationCacheFlag::eLINK_ACCELERATION. - The indexing follows the internal link indexing, see PxArticulationLink::getLinkIndex. - The acceleration is with respect to the link's center of mass.

    • getLinkIncomingJointForce

      public PxSpatialForce getLinkIncomingJointForce()
      Link incoming joint force, i.e. the total force transmitted from the parent link to this link.

      - N = getNbLinks(). - Read using PxArticulationCacheFlag::eLINK_INCOMING_JOINT_FORCE. - The indexing follows the internal link indexing, see PxArticulationLink::getLinkIndex. - The force is reported in the child joint frame of the link's incoming joint.

      Note: The root link reports a zero spatial force.

    • setLinkIncomingJointForce

      public void setLinkIncomingJointForce(PxSpatialForce value)
      Link incoming joint force, i.e. the total force transmitted from the parent link to this link.

      - N = getNbLinks(). - Read using PxArticulationCacheFlag::eLINK_INCOMING_JOINT_FORCE. - The indexing follows the internal link indexing, see PxArticulationLink::getLinkIndex. - The force is reported in the child joint frame of the link's incoming joint.

      Note: The root link reports a zero spatial force.

    • getRootLinkData

      public PxArticulationRootLinkData getRootLinkData()
      Root link transform, velocities, and accelerations.

      - N = 1. - Read/write using PxArticulationCacheFlag::eROOT_TRANSFORM and PxArticulationCacheFlag::eROOT_VELOCITIES (accelerations are read-only).

      See Also:
    • setRootLinkData

      public void setRootLinkData(PxArticulationRootLinkData value)
      Root link transform, velocities, and accelerations.

      - N = 1. - Read/write using PxArticulationCacheFlag::eROOT_TRANSFORM and PxArticulationCacheFlag::eROOT_VELOCITIES (accelerations are read-only).

      See Also:
    • getCoefficientMatrix

      @Deprecated public PxRealPtr getCoefficientMatrix()
      Deprecated.
      The API related to loop joints will be removed in a future version once a replacement is made available.

      Constraint coefficient matrix.

      - N = getCoefficentMatrixSize(). - The user needs to allocate memory and set this member to the allocated memory.

    • setCoefficientMatrix

      @Deprecated public void setCoefficientMatrix(PxRealPtr value)
      Deprecated.
      The API related to loop joints will be removed in a future version once a replacement is made available.

      Constraint coefficient matrix.

      - N = getCoefficentMatrixSize(). - The user needs to allocate memory and set this member to the allocated memory.

    • getLambda

      @Deprecated public PxRealPtr getLambda()
      Deprecated.
      The API related to loop joints will be removed in a future version once a replacement is made available.

      Constraint lambda values (impulses applied by the respective constraints).

      - N = getNbLoopJoints(). - The user needs to allocate memory and set this member to the allocated memory.

    • setLambda

      @Deprecated public void setLambda(PxRealPtr value)
      Deprecated.
      The API related to loop joints will be removed in a future version once a replacement is made available.

      Constraint lambda values (impulses applied by the respective constraints).

      - N = getNbLoopJoints(). - The user needs to allocate memory and set this member to the allocated memory.

    • getScratchMemory

      public NativeObject getScratchMemory()
      The scratch memory is used for internal calculations.
    • setScratchMemory

      public void setScratchMemory(NativeObject value)
      The scratch memory is used for internal calculations.
    • getScratchAllocator

      public NativeObject getScratchAllocator()
      The scratch allocator is used for internal calculations.
    • setScratchAllocator

      public void setScratchAllocator(NativeObject value)
      The scratch allocator is used for internal calculations.
    • getVersion

      public int getVersion()
      The cache version used internally to check compatibility with the articulation, i.e. detect if the articulation configuration changed after the cache was created.
    • setVersion

      public void setVersion(int value)
      The cache version used internally to check compatibility with the articulation, i.e. detect if the articulation configuration changed after the cache was created.
    • release

      public void release()
      Releases an articulation cache.

      PxArticulationReducedCoordinate::copyInternalStateToCache