SlideShare a Scribd company logo
1 of 32
캐릭터 애니메이션
박민근
[KGC2010] M2 프로젝트의 절차적 리깅 시스템
애니메이션
1.Vertex Animation
2.Hierarchical Animation (계층적 애니메이션)
3.Bone Animation, Skeletal Animation
4.Skinning
5.Inverse Kinematics
Vertex Animation
각각의 버텍스를 직접 이동 = 모핑(morphing)
Hierarchy Animation
계층 구조를 만들어, 부모의 이동이 자식 노드에게 영향을 준다
모든 애니메이션 구조의 기본이 된다.
Skeletal Animation
뼈대(Bone)을 중심으로 각 버텍스가 어느 뼈대에 붙어있는지(가중치) 정의 되어 있고,
뼈대를 움직여서 애니메이션을 한다.
뼈대는 렌더링 되지 않는 모델링에 정의 되어 있는 계층적 자료 구조이다.
Skeletal Animation
Bone이 애니메이션 하면, Bone에 영향을 받는 Vertex들도 따라서 이동 한다.
Skeletal Animation
본의 계층 구조가 같으면, 다른 모델에도 동일한 애니메이션을 적용 가능
Skinning
http://cybershin.tistory.com/category/API.%20Programming/DirectX9
정점에 서로 다른 Bone에 대한 가중치를 주고 보간 한다.
Skinning
예를 들어, 영향을 받는 본의 개수가 2개일 때
Vertex[39] : Bone 7(0.3), Bone 8(0.7)
이런식으로 Mesh에 저장되어 있다.
Inverse Kinematic
Leaf Bone의 위치가 결정됨에 따라서,
역으로 부모 본들의 위치가 실시간으로 변경되는 애니메이션
애니메이션 블렌딩
2개 이상의 애니메이션을 섞는 것(블렌딩)
상하체 애니메이션 블렌딩 애니메이션 전환 블렌딩
[KGC2010] M2 프로젝트의 절차적 리깅 시스템
[KGC2010] M2 프로젝트의 절차적 리깅 시스템
DirectX Skinned Mesh
Skinning Animation 구현
1.SW 계산으로 구현 (CPU)
2.Fixed-Pipeline 사용
3.Fixed-Pipeline Index 사용 (매트릭스 팔레트)
4.셰이더 사용
D3DXFRAME
Skeletal의 Bone 구조체
D3DXMESHCONTAINER
Skinned Mesh의 정보를 담는 구조체
ID3DXAllocateHierarchy
각 Frame과 MeshContainer를 할당하고 해제하는 인터페이스 구현
1. Shader File 로딩
2. Mesh Hierarchy 로딩
D3DXLoadMeshHierarchyFromX
위 함수를 호출하면, CAllocateHierarchy 에 구현된 함수들이 호출 된다.
SetupBoneMatrixPointers
Mesh에 정의된 BoneMatrix들을 세팅한다
3. CreateMeshContainer
Mesh Data를 로딩하고, 생성하는 함수
4. GenerateSkinnedMesh
5. OnFrameMove
6. UpdateFrameMatrices
7. OnFrameRender
셰이더에 ViewProj Matrix 세팅
8. DrawMeshContainer
8. DrawMeshContainer
9. SkinnedMesh.fx
Skinning
예를 들어, 영향을 받는 본의 개수가 2개일 때
Vertex[39] : Bone 7(0.3), Bone 8(0.7)
이런식으로 Mesh에 저장되어 있다.
10. SkinnedMesh.fx
참고자료
3D 게임 프로그래밍 – 애니메이션 챕터
DX9 게임 프로그래밍 – 애니메이션 챕터
게임 프로그래밍의 정석 – 애니메이션 챕터

More Related Content

What's hot

조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
devCAT Studio, NEXON
 
노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)
QooJuice
 
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
devCAT Studio, NEXON
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
devCAT Studio, NEXON
 

What's hot (20)

[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기
 
[0821 박민근] 렌즈 플레어(lens flare)
[0821 박민근] 렌즈 플레어(lens flare)[0821 박민근] 렌즈 플레어(lens flare)
[0821 박민근] 렌즈 플레어(lens flare)
 
카툰 렌더링
카툰 렌더링카툰 렌더링
카툰 렌더링
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correction
 
Motion blur
Motion blurMotion blur
Motion blur
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
 
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
 
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
 

Viewers also liked

[0326 박민근] deferred shading
[0326 박민근] deferred shading[0326 박민근] deferred shading
[0326 박민근] deferred shading
MinGeun Park
 
역동적인 애니메이션 Ik
역동적인 애니메이션 Ik역동적인 애니메이션 Ik
역동적인 애니메이션 Ik
KyeongWon Koo
 
[NHN_NEXT] DirectX Tutorial 강의 자료
[NHN_NEXT] DirectX Tutorial 강의 자료[NHN_NEXT] DirectX Tutorial 강의 자료
[NHN_NEXT] DirectX Tutorial 강의 자료
MinGeun Park
 
한상원, 친아티스트 3D 캐릭터 리깅, NDC2010
한상원, 친아티스트 3D 캐릭터 리깅, NDC2010한상원, 친아티스트 3D 캐릭터 리깅, NDC2010
한상원, 친아티스트 3D 캐릭터 리깅, NDC2010
devCAT Studio, NEXON
 

Viewers also liked (20)

[0326 박민근] deferred shading
[0326 박민근] deferred shading[0326 박민근] deferred shading
[0326 박민근] deferred shading
 
[대구] Contz 홍보자료
[대구] Contz 홍보자료[대구] Contz 홍보자료
[대구] Contz 홍보자료
 
Character Rigging Animation Tutorial with Custom Rigg Controller
Character Rigging Animation Tutorial with Custom Rigg ControllerCharacter Rigging Animation Tutorial with Custom Rigg Controller
Character Rigging Animation Tutorial with Custom Rigg Controller
 
역동적인 애니메이션 Ik
역동적인 애니메이션 Ik역동적인 애니메이션 Ik
역동적인 애니메이션 Ik
 
Lego case
Lego caseLego case
Lego case
 
NDC2015 김기용, 온라인 게임 애니메이터의 모바일 적응기(프로젝트 Fm 사례를 통해 보는 애니메이션 감성 표현 기법)
NDC2015 김기용, 온라인 게임 애니메이터의 모바일 적응기(프로젝트 Fm 사례를 통해 보는 애니메이션 감성 표현 기법)NDC2015 김기용, 온라인 게임 애니메이터의 모바일 적응기(프로젝트 Fm 사례를 통해 보는 애니메이션 감성 표현 기법)
NDC2015 김기용, 온라인 게임 애니메이터의 모바일 적응기(프로젝트 Fm 사례를 통해 보는 애니메이션 감성 표현 기법)
 
[NHN_NEXT] DirectX Tutorial 강의 자료
[NHN_NEXT] DirectX Tutorial 강의 자료[NHN_NEXT] DirectX Tutorial 강의 자료
[NHN_NEXT] DirectX Tutorial 강의 자료
 
How to start a simple animation.
How to start a simple animation.How to start a simple animation.
How to start a simple animation.
 
How to live_as_game_qa_by_seokjun_jin_20130925
How to live_as_game_qa_by_seokjun_jin_20130925How to live_as_game_qa_by_seokjun_jin_20130925
How to live_as_game_qa_by_seokjun_jin_20130925
 
김기용, 캐릭터 애니메이션 제작기, NDC2011
김기용, 캐릭터 애니메이션 제작기, NDC2011김기용, 캐릭터 애니메이션 제작기, NDC2011
김기용, 캐릭터 애니메이션 제작기, NDC2011
 
Project-E Demo 리소스 사례 발표
Project-E Demo 리소스 사례 발표Project-E Demo 리소스 사례 발표
Project-E Demo 리소스 사례 발표
 
Lego serious play 소개 2014.7.7
Lego serious play 소개 2014.7.7Lego serious play 소개 2014.7.7
Lego serious play 소개 2014.7.7
 
Momentum3D
Momentum3DMomentum3D
Momentum3D
 
한상원, 친아티스트 3D 캐릭터 리깅, NDC2010
한상원, 친아티스트 3D 캐릭터 리깅, NDC2010한상원, 친아티스트 3D 캐릭터 리깅, NDC2010
한상원, 친아티스트 3D 캐릭터 리깅, NDC2010
 
KAP 업종별기술세미나 14년 3월 #01
KAP 업종별기술세미나 14년 3월 #01KAP 업종별기술세미나 14년 3월 #01
KAP 업종별기술세미나 14년 3월 #01
 
Credit allocation slide
Credit allocation slideCredit allocation slide
Credit allocation slide
 
KAP 업종별기술세미나 13년 10월 #02
KAP 업종별기술세미나 13년 10월 #02KAP 업종별기술세미나 13년 10월 #02
KAP 업종별기술세미나 13년 10월 #02
 
KAP 업종별기술세미나 13년 08월 #03
KAP 업종별기술세미나 13년 08월 #03KAP 업종별기술세미나 13년 08월 #03
KAP 업종별기술세미나 13년 08월 #03
 
KAP 업종별기술세미나 13년 10월 #01
KAP 업종별기술세미나 13년 10월 #01KAP 업종별기술세미나 13년 10월 #01
KAP 업종별기술세미나 13년 10월 #01
 
[6차]WiFi의 현재와 미래(151120)
[6차]WiFi의 현재와 미래(151120)[6차]WiFi의 현재와 미래(151120)
[6차]WiFi의 현재와 미래(151120)
 

More from MinGeun Park

More from MinGeun Park (20)

[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
 
[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6
 
[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5
 
[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3
 
[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2
 
[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석
 
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
 
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐
 
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR
 
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT
 
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법
 
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 [Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개
 
[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
 
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
 

4. 캐릭터 애니메이션