SlideShare a Scribd company logo
1 of 80
Download to read offline
cos
𝐴𝐵
𝐴
𝐵
𝐶 𝐴𝐶
𝐴𝐵
𝐴
𝐵
𝐶
𝐴𝐶
𝐴𝐵 ∙ 𝐴𝐶 > 0
𝐴𝐵 ∙ 𝐴𝐶 < 0
𝑂𝐵 𝑂𝐴
𝑂𝐴′
𝐴
𝐵
𝑂 𝐴′
𝑂𝐴 ∙ 𝑂𝐵 𝑂𝐴 𝑂𝐵 cos𝜃
𝐴
𝐵
𝑂 𝐴′
𝑂𝐴′ 𝑂𝐴 cos𝜃
𝑂𝐵 ෢
𝑂𝐵
𝐴
𝐵
𝑂 𝐴′
𝑂𝐴′ 𝑂𝐴 cos𝜃
෢
𝑂𝐵
𝑂𝐵
||𝑂𝐵||
𝑎 = (𝑎𝑥, 𝑎𝑦, 𝑎𝑧) b = 𝑏𝑥, 𝑏𝑦, 𝑏𝑧
𝑎 × 𝑏 = (𝑎𝑦 ∙ 𝑏𝑧 − 𝑏𝑦 ∙ 𝑎𝑧, 𝑎𝑧 ∙ 𝑏𝑥 − 𝑏𝑧 ∙ 𝑎𝑥, 𝑎𝑥 ∙ 𝑏𝑦 − 𝑏𝑥 ∙ 𝑎𝑦)
𝑎 × 𝑏 × 𝑐
𝑎 × 𝑏 × 𝑐
𝑂𝐴 × 𝑂𝐴 × 𝑂𝐵
𝑂
𝐴
𝐵
𝑂𝐴 × 𝑂𝐵
𝑂𝐴 × 𝑂𝐴 × 𝑂𝐵
𝑆1이 𝑆2일
𝑆1𝑚𝑎𝑥 𝑆2𝑚𝑖𝑛 고 𝑆2𝑚𝑎𝑥 𝑆1𝑚𝑖𝑛
𝑆1
𝑆2
𝑆1𝑚𝑖𝑛 𝑆1𝑚𝑎𝑥
𝑆2𝑚𝑎𝑥
𝑆2𝑚𝑖𝑛
3D AABB Algorithm - YouTube
AABB 정밀 충돌 감지 - YouTube
𝑆1𝑚𝑖𝑛 𝑆1𝑚𝑎𝑥
𝑆2𝑚𝑎𝑥
𝑆2𝑚𝑖𝑛
(𝑆2𝑚𝑎𝑥 − 𝑆1min) ∙ Ԧ
𝑣 (𝑆1𝑚𝑎𝑥 − 𝑆2m𝑖𝑛) ∙ Ԧ
𝑣
Ԧ
𝑣
(𝑆2𝑚𝑎𝑥 − 𝑆1min) ∙ Ԧ
𝑣
𝑆1 𝑆2
Ԧ
𝑑 Ԧ
𝑣
𝑆1𝑚𝑖𝑛 𝑆1𝑚𝑎𝑥
𝑆2𝑚𝑎𝑥
𝑆2𝑚𝑖𝑛
(𝑆2𝑚𝑎𝑥 − 𝑆1min) ∙ Ԧ
𝑣 (𝑆1𝑚𝑎𝑥 − 𝑆2m𝑖𝑛) ∙ Ԧ
𝑣
Ԧ
𝑣
(𝑆2𝑚𝑎𝑥 − 𝑆1min) ∙ Ԧ
𝑣
𝑆1min 𝑆2𝑚𝑎𝑥 Ԧ
𝑣
𝑆1𝑚𝑖𝑛 𝑆1𝑚𝑎𝑥
𝑆2𝑚𝑎𝑥
𝑆2𝑚𝑖𝑛
(𝑆2𝑚𝑎𝑥 − 𝑆1min) ∙ Ԧ
𝑣 (𝑆1𝑚𝑎𝑥 − 𝑆2m𝑖𝑛) ∙ Ԧ
𝑣
Ԧ
𝑣
𝑆1𝑚𝑖𝑛 𝑆1𝑚𝑎𝑥
𝑆2𝑚𝑎𝑥
𝑆2𝑚𝑖𝑛
(𝑆2𝑚𝑎𝑥 − 𝑆1min) ∙ Ԧ
𝑣 (𝑆1𝑚𝑎𝑥 − 𝑆2m𝑖𝑛) ∙ Ԧ
𝑣
(𝑆1𝑚𝑎𝑥 − 𝑆2m𝑖𝑛) ∙ Ԧ
𝑣
𝑆1𝑚𝑎𝑥 𝑆2m𝑖𝑛 Ԧ
𝑣
Ԧ
𝑣
𝑆1𝑚𝑖𝑛 𝑆1𝑚𝑎𝑥
𝑆2𝑚𝑎𝑥
𝑆2𝑚𝑖𝑛
(𝑆2𝑚𝑎𝑥 − 𝑆1min) ∙ Ԧ
𝑣 (𝑆1𝑚𝑎𝑥 − 𝑆2m𝑖𝑛) ∙ Ԧ
𝑣
𝑆1min 𝑆2𝑚𝑎𝑥 Ԧ
𝑣
𝑆2m𝑖𝑛 𝑆1𝑚𝑎𝑥 Ԧ
𝑣
Ԧ
𝑣
𝑆1𝑚𝑖𝑛 𝑆1𝑚𝑎𝑥
𝑆2𝑚𝑎𝑥
𝑆2𝑚𝑖𝑛
(𝑆2𝑚𝑎𝑥 − 𝑆1min) ∙ Ԧ
𝑣 (𝑆1𝑚𝑎𝑥 − 𝑆2m𝑖𝑛) ∙ Ԧ
𝑣
𝑆1min 𝑆2𝑚𝑎𝑥 Ԧ
𝑣
𝑆2m𝑖𝑛 𝑆1𝑚𝑎𝑥 Ԧ
𝑣
Ԧ
𝑣
𝑆1𝑚𝑖𝑛 𝑆1𝑚𝑎𝑥
𝑆2𝑚𝑎𝑥
𝑆2𝑚𝑖𝑛
(𝑆2𝑚𝑎𝑥 − 𝑆1min) ∙ Ԧ
𝑣 (𝑆1𝑚𝑎𝑥 − 𝑆2m𝑖𝑛) ∙ Ԧ
𝑣
𝑆1min 𝑆2𝑚𝑎𝑥 Ԧ
𝑣
𝑆2m𝑖𝑛 𝑆1𝑚𝑎𝑥 Ԧ
𝑣
Ԧ
𝑣
𝑆1𝑚𝑖𝑛 𝑆1𝑚𝑎𝑥
𝑆2𝑚𝑎𝑥
𝑆2𝑚𝑖𝑛
(𝑆2𝑚𝑎𝑥 − 𝑆1min) ∙ Ԧ
𝑣 (𝑆1𝑚𝑎𝑥 − 𝑆2m𝑖𝑛) ∙ Ԧ
𝑣
𝑆1 𝑆2
𝑆1min 𝑆2𝑚𝑎𝑥 Ԧ
𝑣
𝑆2m𝑖𝑛 𝑆1𝑚𝑎𝑥 Ԧ
𝑣
Ԧ
𝑣
OBB Algorithm - YouTube
⊕ ∈ ∈
⊖ ∈ ∈
–
→
→
𝑆𝐶
Ԧ
𝑑 = 𝑆𝐴 ( Ԧ
𝑑) 𝑆𝐵 (− Ԧ
𝑑)
GJK Algorithm - Minkowski Different - YouTube
Ԧ
𝑑
𝑆𝑠3
Ԧ
𝑑 = 𝑆𝑠1 ( Ԧ
𝑑) 𝑆𝑠2 (− Ԧ
𝑑)
𝐴𝑂
𝑆𝑠3 𝐴𝑂 = 𝑆𝑠1 (𝐴𝑂) 𝑆𝑠2 (−𝐴𝑂)
𝐴𝑂
𝐴𝑂
𝑂𝐵 𝐴𝑂
𝑂𝐵 ∙ 𝐴𝑂
𝐴𝑂
∙
𝑂𝐵
𝑂𝐵 𝐴𝑂
𝐴𝑂
𝑂𝐵
𝑂𝐵 ∙ 𝐴𝑂
𝐴𝑂
𝑂𝐵
𝑂𝐵 ∙ 𝐴𝑂
𝐴𝐵
Ԧ
𝑑 𝐴𝐵 × 𝐴𝑂 × 𝐴𝐵
𝐴𝐵
𝐴𝑂
×
Ԧ
𝑑
Ԧ
𝑑
𝐴𝐵 × 𝐴𝑂
𝐴𝐵 𝐴𝑂
𝐴𝐵 𝐴𝑂
𝐴𝐵
𝐴𝑂
𝐴𝐵 × 𝐴𝑂 × 𝐴𝐵
𝐴𝐵
Ԧ
𝑑
𝐴𝐵
𝐴𝑂
Ԧ
𝑑
Ԧ
𝑑
𝑂𝐶 ∙ Ԧ
𝑑
𝑂𝐶
𝑅𝐴𝐵𝐶
𝑅𝐴𝐶
𝑅𝐵𝐶
𝑅𝐴𝐵
𝑅𝐴
𝑅𝐵
𝑅𝐶
𝑅𝐴𝐵𝐶
𝑅𝐴𝐶
𝑅𝐵𝐶
𝑅𝐴𝐵
𝑅𝐴
𝑅𝐵
𝑅𝐶
𝑅𝐴𝐵𝐶
𝐴𝑂
𝑅𝐴
𝑅𝐴𝐶
𝑅𝐵𝐶
𝑅𝐴𝐵
𝑅𝐴
𝑅𝐵
𝑅𝐶
𝐴𝑂
𝑅𝐴𝐵𝐶
𝑅𝐵
𝑅𝐴𝐶
𝑅𝐵𝐶
𝑅𝐴𝐵
𝑅𝐵
𝑅𝐶
𝑅𝐴𝐵𝐶
𝐴𝐵
𝑅𝐴𝐵
𝑅𝐴𝐶
𝑅𝐵𝐶
𝑅𝐴𝐵
𝑅𝐶
𝑅𝐴𝐵𝐶
𝑅𝐶
𝑅𝐴𝐶
𝑅𝐵𝐶
𝑅𝐶
𝑅𝐴𝐵𝐶
𝑅𝐵𝐶 𝑅𝐴𝐶 𝑅𝐴𝐵𝐶
𝑅𝐵𝐶
((𝐶𝐴 × 𝐶𝐵 × 𝐶𝐵 ∙ 𝐶𝑂
𝑅𝐴𝐶
𝑅𝐵𝐶
𝐶𝐴 × 𝐶𝐵
(𝐶𝐴 × 𝐶𝐵 × 𝐶𝐵
𝐶𝐵
𝑅𝐴𝐶
𝑅𝐵𝐶
(𝐶𝐴 × 𝐶𝐵 × 𝐶𝐵
𝑅𝐴𝐵𝐶
𝐶𝑂
𝑅𝐴𝐶
𝑅𝐵𝐶
𝑅𝐴𝐵𝐶
Ԧ
𝑑 𝐶𝑂
𝑅𝐵𝐶
𝑅𝐵𝐶
𝑅𝐴𝐶
𝑅𝐵𝐶
𝑅𝐴𝐵𝐶
𝑅𝐴𝐶
(𝐶𝐵 × 𝐶𝐴 × 𝐶𝐴
𝐶𝑂
𝑅𝐴𝐶
𝑅𝐵𝐶
𝑅𝐴𝐵𝐶
((𝐶𝐴 × 𝐶𝐵 × 𝐶𝐵 ∙ 𝐶𝑂 ((𝐶𝐵 × 𝐶𝐴 × 𝐶𝐴 ∙ 𝐶𝑂
𝑅𝐴𝐶
𝑅𝐵𝐶
GJK Algorithm - YouTube
the GJK Collision detection algorithm — Harold Serrano - Game Engine Developer
Separating Axis Theorem (SAT) Explanation. – YouTube
https://developer.mozilla.org/en-US/docs/Games/Techniques/3D_collision_detection
https://justicehui.github.io/other-algorithm/2018/06/23/OBB/
여러 가지 물체 충돌 감지 알고리즘 속 수학적 원리 : 네이버 블로그 (naver.com)

More Related Content

What's hot

C++20에서 리플렉션 기능 구현
C++20에서 리플렉션 기능 구현C++20에서 리플렉션 기능 구현
C++20에서 리플렉션 기능 구현Bongseok Cho
 
[0821 박민근] 렌즈 플레어(lens flare)
[0821 박민근] 렌즈 플레어(lens flare)[0821 박민근] 렌즈 플레어(lens flare)
[0821 박민근] 렌즈 플레어(lens flare)MinGeun Park
 
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기강 민우
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)Bongseok Cho
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019devCAT Studio, NEXON
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리KyeongWon Koo
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPUYEONG-CHEON YOU
 
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기강 민우
 
빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술YEONG-CHEON YOU
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가Seungmo Koo
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지강 민우
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012devCAT Studio, NEXON
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shadingMinGeun Park
 
노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)QooJuice
 
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)포프 김
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremSeungmo Koo
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션QooJuice
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현MinGeun Park
 

What's hot (20)

C++20에서 리플렉션 기능 구현
C++20에서 리플렉션 기능 구현C++20에서 리플렉션 기능 구현
C++20에서 리플렉션 기능 구현
 
[0821 박민근] 렌즈 플레어(lens flare)
[0821 박민근] 렌즈 플레어(lens flare)[0821 박민근] 렌즈 플레어(lens flare)
[0821 박민근] 렌즈 플레어(lens flare)
 
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리[0122 구경원]게임에서의 충돌처리
[0122 구경원]게임에서의 충돌처리
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU
 
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
 
빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
 
노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)
 
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
 

충돌 알고리즘(collision detection algorithms)