Upcoming SlideShare
×

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

1,110

Published on

3 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

Views
Total Views
1,110
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
17
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

1. 1. 강연자 소개박민근 (@agebreak)네오위즈 게임즈 (야구의 신 개발중)NTL-inc - 드래곤볼 온라인 개발엔씨소프트 – PlayNC 빌링 서버 개발(http://agebreak.blog.me)(cafe.naver.com/devrookie)
2. 2. Diablo 3 Ragdolls How to smack a demon Erin Catto
3. 3. I wanted to give Diablo the mostawesome ragdolls ever!
4. 4. Ragdolls in 3 steps 1. Content pipeline 2. Animation pipeline 3. Tuning
5. 5. We need a content pipeline to authorand tune ragdolls Artist Tool Game Editor
6. 6. A ragdoll is a collection of collisionshapes connected to bones
7. 7. Physics joints connect two bones Cone Joint Revolute JointSpherical Joint Weld Joint
8. 8. The ragdoll data is exported with themodel Maya export Intermediate File (Maya Plug-in)
9. 9. Ragdoll data is imported by the gameeditor (called Axe) Intermediate File cook Run-time File (Axe Game Editor)
10. 10. Bones are sorted in parent-child order struct Bone { int parent; int child; int sibling; }; #define NULL_BONE (-1)
11. 11. Here’s how we compute model spacebone transforms// MS: model space// PS: parent spacefor (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];}
12. 12. Bones with bodies are active, the rest are leaf or intermediate bones#define LEAF (-1)#define INTERMEDIATE (-2)int boneToBodyMap[BONE_COUNT];
13. 13. Building the bone to body map
14. 14. Ragdolls are tested and tuned inthe Axe game editor
15. 15. The model viewer has a mousejoint
16. 16. Parameters and collision flags canbe tuned
17. 17. Animation triggers create ragdollevents
18. 18. Ragdolls are a form of proceduralanimation Ragdolls Interpolation Inverse Cloth Blending Kinematics Parent Space World Space
19. 19. We use the ragdoll bodies to adjustthe posemodel space keyed animation world space ragdoll
20. 20. Leaf bones retain their relative posekeyed animation ragdoll
21. 21. Intermediate bones go to the bindposeB in bind pose B in animated pose  stretching |A-C| = constant
22. 22. Update the actor bounding sphereusing the bone transformsactor transform
23. 23. Ragdolls are spawned with care
24. 24. Spawning in-place causes joints tostretch
25. 25. Obtain the initial velocity fromtwo world-space bone poses 𝑝2 − 𝑝1 𝑣= ∆𝑡 2 𝑞2 − 𝑞1 𝑞1 𝜔= ∆𝑡 check the polarity!!!
26. 26. Help, my foot is stuck in the floor!
27. 27. Using sequential ray casts to getunstuck
28. 28. Tune your ragdolls to improve quality
29. 29. Don’t support heavy bodies with smallbodies failure point
30. 30. Don’t overlap siblings ackkk! ouch!
31. 31. Avoid long skinny bodies
32. 32. Ragdoll effects add variety
33. 33. Explosions are physically motivated radial linear
34. 34. Explosions account for distance andfacing
35. 35. Gibbing never gets old
36. 36. Partial ragdolls add flavor to livingcharacters
37. 37. Partial ragdolls are stabilized withpartial teleportation 2 partial transform: 𝑥1𝑎 = 𝑥1 + 𝛼 𝑥2 − 𝑥1 1a 𝑣 𝑥2 − 𝑥1𝑎 velocity command: 𝑣= ∆𝑡 1 𝛼
38. 38. 풀버전 PT 들은 제 블로그에 올라와 있습니다. (agebreak.blog.me)
1. A particular slide catching your eye?

Clipping is a handy way to collect important slides you want to go back to later.