Original Post
#ifndef _IK_
#define _IK_
#include <d3dx9.h>
#include "..\Objects\Objects.h"
typedef struct D3DXFRAME_DERIVED Bone;
class SkinnedMesh;
class InverseKinematics
{
public:
InverseKinematics (Objects *pSkinnedMesh, const D3DXVECTOR3& targetPos, const D3DXMATRIX& world);
private:
void SetWorldTarget(const D3DXVECTOR3& targetPos) { m_vWorldTarget = targetPos; }
void CalculateWorldObjectTransform(const D3DXMATRIX& world) { D3DXMatrixInverse(&m_matWorldObjectTransform, NULL, &world); }
public:
//void UpdateHeadIK();
//void UpdateArmIK();
void ApplyLookAtIK(D3DXVECTOR3 &lookAtTarget, float maxAngle);
void ApplyArmIK(Bone *pBone, D3DXVECTOR3 &hingeAxis, D3DXVECTOR3 ⌖);
private:
void CalculateObjectSpaceTarget() { D3DXVec3TransformCoord(&m_vObjectTarget, &m_vWorldTarget, &m_matWorldObjectTransform); }
// world transform of the target
D3DXVECTOR3 m_vWorldTarget;
D3DXMATRIX m_matWorldObjectTransform;
D3DXVECTOR3 m_vObjectTarget;
Objects *m_pObjects;
D3DXVECTOR3 m_headForward;
Bone *m_pHeadBone;
Bone *m_pLShoulderBone;
Bone *m_pLElbowBone;
Bone *m_pLHandBone;
Bone *m_pRShoulderBone;
Bone *m_pRElbowBone;
Bone *m_pRHandBone;
};
#endif There is 1 Arm IK method, while has to apply to both arms, I don't want to repeat the ArmIK method,
However, I also don't want to pass a parameter to ArmIK as a local member attribute.
How would I change that?
Thanks
Jack