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 used in inverse dynamics algorithms.

      - N = (getDofs() + 6) * (getDofs() + 6) -> size includes possible floating-base DOFs regardless of PxArticulationFlag::eFIX_BASE flag. - If PxArticulationFlag::eFIX_BASE is true, the terms corresponding to the root DoFs are included in the top left block of the matrix. For these terms, column indices correspond to linear acceleration first then angular acceleration, row indices correspond to force first then torque. The bottom right block of the matrix corresponds to the joint DoFs terms, column indices correspond to joint acceleration, row indices correspond to joint force. - If PxArticulationFlag::eFIX_BASE is false, only the terms corresponding to the joint DoFs are included, column indices correspond to joint acceleration, row indices correspond to joint force. - The indexing follows the internal DOF index order, see PxArticulationCache::jointVelocity. - The mass matrix is indexed [nCols * row + column].

    • setMassMatrix

      public void setMassMatrix(PxRealPtr value)
      The generalized mass matrix used in inverse dynamics algorithms.

      - N = (getDofs() + 6) * (getDofs() + 6) -> size includes possible floating-base DOFs regardless of PxArticulationFlag::eFIX_BASE flag. - If PxArticulationFlag::eFIX_BASE is true, the terms corresponding to the root DoFs are included in the top left block of the matrix. For these terms, column indices correspond to linear acceleration first then angular acceleration, row indices correspond to force first then torque. The bottom right block of the matrix corresponds to the joint DoFs terms, column indices correspond to joint acceleration, row indices correspond to joint force. - If PxArticulationFlag::eFIX_BASE is false, only the terms corresponding to the joint DoFs are included, column indices correspond to joint acceleration, row indices correspond to joint force. - The indexing follows the internal DOF index order, see PxArticulationCache::jointVelocity. - The mass matrix is indexed [nCols * row + column].

    • 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