29#ifndef DY_FEATHERSTONE_ARTICULATION_JOINT_DATA_H
30#define DY_FEATHERSTONE_ARTICULATION_JOINT_DATA_H
32#include "foundation/PxVec3.h"
33#include "foundation/PxQuat.h"
34#include "foundation/PxTransform.h"
35#include "foundation/PxVecMath.h"
37#include "CmSpatialVector.h"
38#include "DyVArticulation.h"
39#include "DyFeatherstoneArticulationUtils.h"
40#include "DyArticulationJointCore.h"
61 const PxVec3 childOffset = -joint->childPose.p;
65 switch (joint->jointType)
70 const PxVec3 u = (joint->childPose.rotate(jJointAxis.bottom)).getNormalized();
82 const PxVec3 u = (joint->childPose.rotate(jJointAxis.top)).getNormalized();
92 for (PxU32 ind = 0; ind <dof; ++ind)
95 const PxVec3 u = (joint->childPose.rotate(jJointAxis.top)).getNormalized();
117 for (PxU32 i = 0; i < DY_MAX_DOF; ++i)
130 for (PxU32 i = 0; i < dof; ++i)
132 PxU32 ind = joint->dofIds[i];
145 if (joint->jointDirtyFlag & ArticulationJointCoreDirtyFlag::eMOTION || forceRecompute)
154 for (PxU8 i = 0; i < DY_MAX_DOF; ++i)
162 jointAxis[dof] = axis;
164 joint->invDofIds[i] = dof;
165 joint->dofIds[dof] = i;
168 limitMask |= 1 << dof;
182 PxU8 dofInternalConstraintMask;
191 PxReal targetJointVelocity[3];
192 PxReal targetJointPosition[3];
198 for (PxU32 i = 0; i < 3; ++i)
200 targetJointPosition[i] = 0.f;
201 targetJointVelocity[i] = 0.f;
210 if (joint->jointDirtyFlag & ArticulationJointCoreDirtyFlag::eTARGETVELOCITY)
212 for (PxU32 i = 0; i < dof; ++i)
214 PxU32 ind = joint->dofIds[i];
216 targetJointVelocity[i] = joint->targetV[ind];
225 if (joint->jointDirtyFlag & ArticulationJointCoreDirtyFlag::eTARGETPOSE)
227 for (PxU32 i = 0; i < dof; ++i)
229 PxU32 ind = joint->dofIds[i];
231 targetJointPosition[i] = joint->targetP[ind];
240 if (joint->jointDirtyFlag & ArticulationJointCoreDirtyFlag::eARMATURE)
243 for (PxU32 i = 0; i < dof; ++i)
245 PxU32 ind = joint->dofIds[i];
247 armature[i] = joint->armature[ind];
Definition DyFeatherstoneArticulationJointData.h:50
3 Element vector class.
Definition PxVec3.h:50
PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 cross(const PxVec3 &v) const
cross product
Definition PxVec3.h:284
#define PX_FORCE_INLINE
Definition PxPreprocessor.h:335
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
Definition CmSpatialVector.h:310
Definition DyArticulationCore.h:62
Definition DyArticulationJointCore.h:44
Definition DyFeatherstoneArticulationJointData.h:190
@ eREVOLUTE_UNWRAPPED
Single rotational DOF, e.g. an elbow joint or a rotational motor, position not wrapped.
Definition PxSolverDefs.h:285
@ ePRISMATIC
Single linear DOF, e.g. cart on a rail.
Definition PxSolverDefs.h:283
@ eREVOLUTE
Single rotational DOF, e.g. an elbow joint or a rotational motor, position wrapped at 2pi radians.
Definition PxSolverDefs.h:284
@ eFIX
All joint axes, i.e. degrees of freedom (DOFs) locked.
Definition PxSolverDefs.h:282
@ eSPHERICAL
Ball and socket joint with two or three DOFs.
Definition PxSolverDefs.h:286
@ eLIMITED
Limited DOF - set limits of joint DOF together with this flag, see PxArticulationJointReducedCoordina...
Definition PxSolverDefs.h:270
@ eLOCKED
Locked axis, i.e. degree of freedom (DOF)
Definition PxSolverDefs.h:269