SlideShare a Scribd company logo
1 of 13
카메라 제어기법
GPG STUDY 4.3
기본적인 카메라 1
기본적인 카메라 2
1인칭 카메라 제어
1인칭 카메라 제어
• 마우스가 움직이면 시야전환
• 마우스 위치값에 따라 Yaw / Pitch를 회전
• 키보드의 입력에 따라 카메라(=플레이어) 이동
• Forward 벡터 방향을 기준으로 앞/뒤/좌/우로 이동
• deltaTime에 의한 물리적 이동을 하는 것이 자연스럽다.
미리 경로가 정해진 카메라 제어
B-Spline 곡선상에서 카메라 이동
• B – Spline 곡선
• 함수에 제어점을 집어넣으면 곡선 나옴 
• 적당히 분할하여 동적으로 계산
• 카메라를 3차원 B-Spline 선상으로 이동
• 카메라의 위치는 OK
• 카메라의 시선 방향은 ??
B-Spline 곡선상에서 카메라 방향제어
• View Vector
• 1. 다음 이동 위치 – 현재 위치 = View Vector
• 2. Spline함수를 미분하여 접선을 구하는 방법
• Up Vector
• 구해진 두 개의 View Vector를 외적하여 right vector를 구하고 다시 외적 OK?
Catmull-Rom 곡선
• Spline 그림을 보면 알겠지만 안타깝게도 제어점에 카메라가 도달할 수는 없다.
• 제어점을 반드시 지나가는 곡선이동을 하고 싶다면 다른 방법이 필요하다.
• 그 방법이 Catmull-Rom 곡선
• 곡선 품질은 좀 떨어져도 반드시 제어점을 지나간다.
카메라 줌업
• 시야각(fov)을 줄여야 한다.
탄력있는 카메라이동
• 카메라가 대상과 밀당
• 가까우면 느리게 따라가고, 멀면 빠르게 따라가고
• 탄성력(용수철 공식)을 활용한다.
• F = ma = - k* dx
3인칭 카메라
사원수(Quaternion)
• 오일러 회전 변환에서 Gimbal Lock 현상 발생 (구글링 요망)
• http://skmagic.tistory.com/entry/%EC%A7%90%EB%B2%8C%EB%9D%BDgimbal-lock
• 이상한 수학자가 허수 표현식을 사용해서 회전을 표현한 것이 사원수
• 짐벌락 없음
• 이론적/수학적 이해가 잘 안되면 걍 시키는대로 가져다 쓰자.

More Related Content

Viewers also liked

[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자 [GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자 Sehyeon Nam
 
[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)
[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)
[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)SeungMin Yang
 
[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)
[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)
[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)SeungMin Yang
 
[GPG 스터디] 1.3 자동적인 단일체 유틸리티
[GPG 스터디] 1.3 자동적인 단일체 유틸리티[GPG 스터디] 1.3 자동적인 단일체 유틸리티
[GPG 스터디] 1.3 자동적인 단일체 유틸리티Sehyeon Nam
 
[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)
[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)
[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)SeungMin Yang
 
[0604 석재호]광택성사전필터링
[0604 석재호]광택성사전필터링[0604 석재호]광택성사전필터링
[0604 석재호]광택성사전필터링Jaeho Seok
 
[12 0210] gpg 2.3.7 전략적 판단 기법
[12 0210] gpg 2.3.7 전략적 판단 기법[12 0210] gpg 2.3.7 전략적 판단 기법
[12 0210] gpg 2.3.7 전략적 판단 기법SeungMin Yang
 
Effective C++ Chaper 1
Effective C++ Chaper 1Effective C++ Chaper 1
Effective C++ Chaper 1연우 김
 
The Binding of Isaac (아이작의 구속) 포스트모템
The Binding of Isaac (아이작의 구속) 포스트모템The Binding of Isaac (아이작의 구속) 포스트모템
The Binding of Isaac (아이작의 구속) 포스트모템연우 김
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규ChangKyu Song
 
2nd ignite masan 이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이
2nd ignite masan   이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이2nd ignite masan   이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이
2nd ignite masan 이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이Ignite Masan
 
스크래치와 역사
스크래치와 역사스크래치와 역사
스크래치와 역사Seung Joon Choi
 
[0611 박민근] 신입 게임 개발자가 알아야 할 것들
[0611 박민근] 신입 게임 개발자가 알아야 할 것들[0611 박민근] 신입 게임 개발자가 알아야 할 것들
[0611 박민근] 신입 게임 개발자가 알아야 할 것들MinGeun Park
 

Viewers also liked (20)

[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자 [GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
[GPG 스터디] 1.6 범용 핸들 기반 자원 관리자
 
[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)
[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)
[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)
 
[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)
[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)
[11 0723] gpg 2.1.9 c++를 위한 폐기 매커니즘 구현(공개)
 
[GPG 스터디] 1.3 자동적인 단일체 유틸리티
[GPG 스터디] 1.3 자동적인 단일체 유틸리티[GPG 스터디] 1.3 자동적인 단일체 유틸리티
[GPG 스터디] 1.3 자동적인 단일체 유틸리티
 
Gpg study1.8
Gpg study1.8Gpg study1.8
Gpg study1.8
 
Gpg study3.7
Gpg study3.7Gpg study3.7
Gpg study3.7
 
Gpg study 01
Gpg study 01Gpg study 01
Gpg study 01
 
[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)
[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)
[11 0730] gpg 2.1.11 게임에 내장되는 프로파일링 모듈(공개)
 
[0604 석재호]광택성사전필터링
[0604 석재호]광택성사전필터링[0604 석재호]광택성사전필터링
[0604 석재호]광택성사전필터링
 
[12 0210] gpg 2.3.7 전략적 판단 기법
[12 0210] gpg 2.3.7 전략적 판단 기법[12 0210] gpg 2.3.7 전략적 판단 기법
[12 0210] gpg 2.3.7 전략적 판단 기법
 
Effective C++ Chaper 1
Effective C++ Chaper 1Effective C++ Chaper 1
Effective C++ Chaper 1
 
GPG 1권 4.12 VIPM
GPG 1권 4.12 VIPMGPG 1권 4.12 VIPM
GPG 1권 4.12 VIPM
 
The Binding of Isaac (아이작의 구속) 포스트모템
The Binding of Isaac (아이작의 구속) 포스트모템The Binding of Isaac (아이작의 구속) 포스트모템
The Binding of Isaac (아이작의 구속) 포스트모템
 
Id142 plan
Id142 planId142 plan
Id142 plan
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
 
2nd ignite masan 이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이
2nd ignite masan   이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이2nd ignite masan   이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이
2nd ignite masan 이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이
 
스크래치와 역사
스크래치와 역사스크래치와 역사
스크래치와 역사
 
Shader Driven
Shader DrivenShader Driven
Shader Driven
 
Mesh slice 1
Mesh slice 1Mesh slice 1
Mesh slice 1
 
[0611 박민근] 신입 게임 개발자가 알아야 할 것들
[0611 박민근] 신입 게임 개발자가 알아야 할 것들[0611 박민근] 신입 게임 개발자가 알아야 할 것들
[0611 박민근] 신입 게임 개발자가 알아야 할 것들
 

More from 연우 김

GPG 3.8 퍼지 논리
GPG 3.8 퍼지 논리GPG 3.8 퍼지 논리
GPG 3.8 퍼지 논리연우 김
 
Effective c++ 정리 chapter 8
Effective c++ 정리 chapter 8Effective c++ 정리 chapter 8
Effective c++ 정리 chapter 8연우 김
 
Effective c++ 정리 chapter 6
Effective c++ 정리 chapter 6Effective c++ 정리 chapter 6
Effective c++ 정리 chapter 6연우 김
 
Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4연우 김
 
Effective C++ 정리 chapter 3
Effective C++ 정리 chapter 3Effective C++ 정리 chapter 3
Effective C++ 정리 chapter 3연우 김
 
Effective c++ 챕터 2 정리
Effective c++ 챕터 2 정리Effective c++ 챕터 2 정리
Effective c++ 챕터 2 정리연우 김
 

More from 연우 김 (6)

GPG 3.8 퍼지 논리
GPG 3.8 퍼지 논리GPG 3.8 퍼지 논리
GPG 3.8 퍼지 논리
 
Effective c++ 정리 chapter 8
Effective c++ 정리 chapter 8Effective c++ 정리 chapter 8
Effective c++ 정리 chapter 8
 
Effective c++ 정리 chapter 6
Effective c++ 정리 chapter 6Effective c++ 정리 chapter 6
Effective c++ 정리 chapter 6
 
Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4
 
Effective C++ 정리 chapter 3
Effective C++ 정리 chapter 3Effective C++ 정리 chapter 3
Effective C++ 정리 chapter 3
 
Effective c++ 챕터 2 정리
Effective c++ 챕터 2 정리Effective c++ 챕터 2 정리
Effective c++ 챕터 2 정리
 

GPG Study 4.3 카메라 제어기법

  • 5. 1인칭 카메라 제어 • 마우스가 움직이면 시야전환 • 마우스 위치값에 따라 Yaw / Pitch를 회전 • 키보드의 입력에 따라 카메라(=플레이어) 이동 • Forward 벡터 방향을 기준으로 앞/뒤/좌/우로 이동 • deltaTime에 의한 물리적 이동을 하는 것이 자연스럽다.
  • 6. 미리 경로가 정해진 카메라 제어
  • 7. B-Spline 곡선상에서 카메라 이동 • B – Spline 곡선 • 함수에 제어점을 집어넣으면 곡선 나옴  • 적당히 분할하여 동적으로 계산 • 카메라를 3차원 B-Spline 선상으로 이동 • 카메라의 위치는 OK • 카메라의 시선 방향은 ??
  • 8. B-Spline 곡선상에서 카메라 방향제어 • View Vector • 1. 다음 이동 위치 – 현재 위치 = View Vector • 2. Spline함수를 미분하여 접선을 구하는 방법 • Up Vector • 구해진 두 개의 View Vector를 외적하여 right vector를 구하고 다시 외적 OK?
  • 9. Catmull-Rom 곡선 • Spline 그림을 보면 알겠지만 안타깝게도 제어점에 카메라가 도달할 수는 없다. • 제어점을 반드시 지나가는 곡선이동을 하고 싶다면 다른 방법이 필요하다. • 그 방법이 Catmull-Rom 곡선 • 곡선 품질은 좀 떨어져도 반드시 제어점을 지나간다.
  • 11. 탄력있는 카메라이동 • 카메라가 대상과 밀당 • 가까우면 느리게 따라가고, 멀면 빠르게 따라가고 • 탄성력(용수철 공식)을 활용한다. • F = ma = - k* dx
  • 13. 사원수(Quaternion) • 오일러 회전 변환에서 Gimbal Lock 현상 발생 (구글링 요망) • http://skmagic.tistory.com/entry/%EC%A7%90%EB%B2%8C%EB%9D%BDgimbal-lock • 이상한 수학자가 허수 표현식을 사용해서 회전을 표현한 것이 사원수 • 짐벌락 없음 • 이론적/수학적 이해가 잘 안되면 걍 시키는대로 가져다 쓰자.