Skip to main content
gamedev.net
🔒 Locked 🎮 Unity

Cohesion problem

Started by lucky6969b 0 replies 1.2k views
Original Post
lucky6969b
lucky6969b

#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

ApochPiQ
ApochPiQ
Just have the actual IK routine be an internal (i.e. private) method, and invoke it twice from the public method:
void ApplyArmIk (/* stuff */) {
    ApplyArmIkInternal(LeftArm, /* stuff */);
    ApplyArmIkInternal(RightArm, /* stuff */);
}

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.