• Home
  • About
    • 게임 개발자 유정룡 photo

      게임 개발자 유정룡

      포트폴리오

    • Learn More
    • Email
    • Github
    • Bitbucket
  • Projects
    • All Projects
    • All Tags

Direct3D11 공부 27일차(Instanceing - Model)

05 Jul 2021

Reading time ~1 minute

저번엔 버그때매 짜증났는데 이번엔 인텔리센스가 작동을 안한다 헣헣…

Instance Animation

지금까지 했던것 처럼 Animation을 인스턴싱 하는데

각 모델들이 다른 애니메이션을 취해야 자연스럽기 때문에 그렇게 한다.

MoadelAnimator.h

Transform* GetTransform(UINT index) { return transforms[index]; }

void PlayTweenMode(UINT index, UINT clip, float speed = 1.0f, float takeTime = 1.0f);
void PlayBlendMode(UINT index, UINT clip, UINT clip1, UINT clip2);
void SetBlendAlpha(UINT index, float alpha);

tweenDesc[MAX_MODEL_INSTANCE];
blendDesc[MAX_MODEL_INSTANCE];

인스턴스를 위해 배열로 받고 각 index마다 업데이트 해주기 위해 매개변수를 받아온다.

ModelAnimator.cpp

딱히 달라진것은 없다. 다만, 위에 수정한 함수에 따라 원하는 인덱스를 변경 해준다.

Shader

이 전에 Aniamtion에서 사용한 것들을 갖고오고, Tween과 Blend에서 사용한 것들은 전부 input.InstanceID를 사용한 것으로 변경해준다.

MeshOutput VS_Animation(VertexModel input)
{
    MeshOutput output;
    
    if (BlendFrames[input.InstanceID].Mode == 0)
    {
        SetTweenWorld(World, input);
    }
    else
    {
        SetBlendWorld(World, input);
    }
        
    VS_GENERATE
    
    return output;
}

그리고 VertexOuput을 MeshOutput으로 변경해준다.

그리고 변경된 내용으로 실행하면,

잘 나온다…



DirectX Share Tweet +1