SlideShare uma empresa Scribd logo
1 de 155
Baixar para ler offline
강연자 소개
박민근           (@agebreak)
네오위즈 게임즈 (야구의 신 개발중)
NTL-inc - 드래곤볼 온라인 개발
엔씨소프트 – PlayNC 빌링 서버 개발



(http://agebreak.blog.me)


(cafe.naver.com/devrookie)
Diablo 3 Ragdolls
     How to smack a demon

             Erin Catto
I wanted to give Diablo the most
awesome ragdolls ever!
Ragdolls in 3 steps


      1. Content pipeline
      2. Animation pipeline
      3. Tuning
We need a content pipeline to author
and tune ragdolls


        Artist Tool   Game Editor
A ragdoll is a collection of collision
shapes connected to bones
Physics joints connect two bones

   Cone Joint                     Revolute Joint




Spherical Joint                       Weld Joint
The ragdoll data is exported with the
model

       Maya      export        Intermediate File


              (Maya Plug-in)
Ragdoll data is imported by the game
editor (called Axe)


    Intermediate File         cook          Run-time File


                        (Axe Game Editor)
Bones are sorted in parent-child order

  struct   Bone
  {
     int   parent;
     int   child;
     int   sibling;
  };

  #define NULL_BONE (-1)
Here’s how we compute model space
bone transforms
// MS: model space
// PS: parent space
for (int i = 0; i < boneCount; ++i)
{
    int parent = bones[i].parent;
    if (parent != NULL_BONE)
         transformMS[i] = transformMS[parent] * transformPS[i];
    else
         transformMS[i] = transformPS[i];
}
Bones with bodies are active, the rest
 are leaf or intermediate bones


#define LEAF (-1)
#define INTERMEDIATE (-2)

int boneToBodyMap[BONE_COUNT];
Building the bone to body map
Ragdolls are tested and tuned in
the Axe game editor
The model viewer has a mouse
joint
Parameters and collision flags can
be tuned
Animation triggers create ragdoll
events
Ragdolls are a form of procedural
animation
                              Ragdolls
      Interpolation



                        Inverse          Cloth
       Blending       Kinematics


     Parent Space             World Space
We use the ragdoll bodies to adjust
the pose




model space keyed animation   world space ragdoll
Leaf bones retain their relative pose




keyed animation               ragdoll
Intermediate bones go to the bind
pose


B in bind pose               B in animated pose
                              stretching




                 |A-C| = constant
Update the actor bounding sphere
using the bone transforms




actor transform
Ragdolls are spawned with care
Spawning in-place causes joints to
stretch
Obtain the initial velocity from
two world-space bone poses
                            𝑝2 − 𝑝1
                         𝑣=
                              ∆𝑡

                            2 𝑞2 − 𝑞1 𝑞1
                         𝜔=
                                 ∆𝑡


                       check the polarity!!!
Help, my foot is stuck in the floor!
Using sequential ray casts to get
unstuck
Tune your ragdolls to improve quality
Don’t support heavy bodies with small
bodies


                        failure point
Don’t overlap siblings
                         ackkk!




                           ouch!
Avoid long skinny bodies
Ragdoll effects add variety
Explosions are physically motivated


                      radial




                      linear
Explosions account for distance and
facing
Gibbing never gets old
Partial ragdolls add flavor to living
characters
Partial ragdolls are stabilized with
partial teleportation
                                                          2

 partial transform:   𝑥1𝑎 = 𝑥1 + 𝛼 𝑥2 − 𝑥1
                                                 1a
                                                              𝑣
                              𝑥2 − 𝑥1𝑎
 velocity command:       𝑣=
                                 ∆𝑡
                                             1
                                                      𝛼
풀버전 PT 들은 제 블로그에 올라와 있습니다.
      (agebreak.blog.me)

Mais conteúdo relacionado

Mais de MinGeun Park

[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이MinGeun Park
 
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐MinGeun Park
 
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBRMinGeun Park
 
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OTMinGeun Park
 
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.MinGeun Park
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correctionMinGeun Park
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & TrickMinGeun Park
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)MinGeun Park
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법MinGeun Park
 
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 [Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 MinGeun Park
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현MinGeun Park
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기MinGeun Park
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기MinGeun Park
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개MinGeun Park
 
[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술MinGeun Park
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기MinGeun Park
 
[141217 박민근] Visual Studio 2013의 (잘모르는) 유용한 기능들
[141217 박민근] Visual Studio 2013의 (잘모르는) 유용한 기능들[141217 박민근] Visual Studio 2013의 (잘모르는) 유용한 기능들
[141217 박민근] Visual Studio 2013의 (잘모르는) 유용한 기능들MinGeun Park
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
[141015] cedec 2014 참관기 & 강연 리뷰 #2
[141015] cedec 2014 참관기 & 강연 리뷰 #2[141015] cedec 2014 참관기 & 강연 리뷰 #2
[141015] cedec 2014 참관기 & 강연 리뷰 #2MinGeun Park
 

Mais de MinGeun Park (20)

[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
 
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐
 
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR
 
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT
 
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correction
 
유니티 팁&트릭 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 소개 및 활용
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] 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 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
 
[141217 박민근] Visual Studio 2013의 (잘모르는) 유용한 기능들
[141217 박민근] Visual Studio 2013의 (잘모르는) 유용한 기능들[141217 박민근] Visual Studio 2013의 (잘모르는) 유용한 기능들
[141217 박민근] Visual Studio 2013의 (잘모르는) 유용한 기능들
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 
[141015] cedec 2014 참관기 & 강연 리뷰 #2
[141015] cedec 2014 참관기 & 강연 리뷰 #2[141015] cedec 2014 참관기 & 강연 리뷰 #2
[141015] cedec 2014 참관기 & 강연 리뷰 #2
 

Último

Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

[Gdc12] 언차티드3, 배틀필드3의 그래픽과 디아블로 3의 물리를 만들어낸 테크닉들

  • 1.
  • 2. 강연자 소개 박민근 (@agebreak) 네오위즈 게임즈 (야구의 신 개발중) NTL-inc - 드래곤볼 온라인 개발 엔씨소프트 – PlayNC 빌링 서버 개발 (http://agebreak.blog.me) (cafe.naver.com/devrookie)
  • 3. Diablo 3 Ragdolls How to smack a demon Erin Catto
  • 4. I wanted to give Diablo the most awesome ragdolls ever!
  • 5. Ragdolls in 3 steps 1. Content pipeline 2. Animation pipeline 3. Tuning
  • 6. We need a content pipeline to author and tune ragdolls Artist Tool Game Editor
  • 7. A ragdoll is a collection of collision shapes connected to bones
  • 8.
  • 9. Physics joints connect two bones Cone Joint Revolute Joint Spherical Joint Weld Joint
  • 10. The ragdoll data is exported with the model Maya export Intermediate File (Maya Plug-in)
  • 11. Ragdoll data is imported by the game editor (called Axe) Intermediate File cook Run-time File (Axe Game Editor)
  • 12. Bones are sorted in parent-child order struct Bone { int parent; int child; int sibling; }; #define NULL_BONE (-1)
  • 13. Here’s how we compute model space bone transforms // MS: model space // PS: parent space for (int i = 0; i < boneCount; ++i) { int parent = bones[i].parent; if (parent != NULL_BONE) transformMS[i] = transformMS[parent] * transformPS[i]; else transformMS[i] = transformPS[i]; }
  • 14. Bones with bodies are active, the rest are leaf or intermediate bones #define LEAF (-1) #define INTERMEDIATE (-2) int boneToBodyMap[BONE_COUNT];
  • 15. Building the bone to body map
  • 16. Ragdolls are tested and tuned in the Axe game editor
  • 17.
  • 18. The model viewer has a mouse joint
  • 19.
  • 20. Parameters and collision flags can be tuned
  • 21. Animation triggers create ragdoll events
  • 22. Ragdolls are a form of procedural animation Ragdolls Interpolation Inverse Cloth Blending Kinematics Parent Space World Space
  • 23. We use the ragdoll bodies to adjust the pose model space keyed animation world space ragdoll
  • 24. Leaf bones retain their relative pose keyed animation ragdoll
  • 25. Intermediate bones go to the bind pose B in bind pose B in animated pose  stretching |A-C| = constant
  • 26. Update the actor bounding sphere using the bone transforms actor transform
  • 27. Ragdolls are spawned with care
  • 28. Spawning in-place causes joints to stretch
  • 29. Obtain the initial velocity from two world-space bone poses 𝑝2 − 𝑝1 𝑣= ∆𝑡 2 𝑞2 − 𝑞1 𝑞1 𝜔= ∆𝑡 check the polarity!!!
  • 30.
  • 31.
  • 32. Help, my foot is stuck in the floor!
  • 33. Using sequential ray casts to get unstuck
  • 34. Tune your ragdolls to improve quality
  • 35.
  • 36.
  • 37. Don’t support heavy bodies with small bodies failure point
  • 38. Don’t overlap siblings ackkk! ouch!
  • 40.
  • 41.
  • 43. Explosions are physically motivated radial linear
  • 44. Explosions account for distance and facing
  • 45.
  • 46.
  • 47.
  • 48.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55. Partial ragdolls add flavor to living characters
  • 56. Partial ragdolls are stabilized with partial teleportation 2 partial transform: 𝑥1𝑎 = 𝑥1 + 𝛼 𝑥2 − 𝑥1 1a 𝑣 𝑥2 − 𝑥1𝑎 velocity command: 𝑣= ∆𝑡 1 𝛼
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
  • 123.
  • 124.
  • 125.
  • 126.
  • 127.
  • 128.
  • 129.
  • 130.
  • 131.
  • 132.
  • 133.
  • 134.
  • 135.
  • 136.
  • 137.
  • 138.
  • 139.
  • 140.
  • 141.
  • 142.
  • 143.
  • 144.
  • 145.
  • 146.
  • 147.
  • 148.
  • 149.
  • 150.
  • 151.
  • 152.
  • 153.
  • 154.
  • 155. 풀버전 PT 들은 제 블로그에 올라와 있습니다. (agebreak.blog.me)