SlideShare a Scribd company logo
1 of 38
유니티 고급 과정
1. 왜 유니티인가?
- 학생들의 이해 수준에 따라 C# 문법 강의를 할 예정
2. 3차원 좌표계
3. 게임에서 쓰이는 수학
- 벡터, 행렬
4. 유니티에서 제공하는 기능들
Kiyoung Moon(문기영)
왜 유니티인가?
크로스 플랫폼
C#언어의 채용
개발 컨셉
- 콤포넌트 프로그래밍
크로스 플랫폼
한번만 만들면 최소한의 작업으로 여러 플랫폼에 동시에 출시가 가능하다.
급변하는 모바일 시대에 시간은 ‘금’ 최소한의 작업으로 여러 플랫폼 출시는 대단한 경쟁력
자체 엔진의 경우 플랫폼 별로 하드웨어에 밀접한 부분들은 플랫폼에 맞게 재
작성 해야 함. 예를 들어 Windows에서 렌더링을 위해 DirectX를 사용해야 하
고 Mac에서는 OpenGL을 사용 해야 함.
유니티를 사용하면 이런 내부적인 작업들은 건드리지 않아도 됨. (물론 유니티
에서 제공하지 않는 기능들을 사용하려면 직접 구현하거나 유니티에서 만들
어 줄 때 까지 기다려야 함. 이것이 단점이라면 단점.)
C#의 채용
Java와 비슷하게 만들었으나 자바는 아님.
델파이를 개발한 프로그래머가 마이크로소프트로 옮기면서
만든 언어. (Anders Hejlsberg)
터보 파스칼, 델파이, C# 모두 이 사람이 만들었음.
C# 문법 강의
필요에 따라서 할 예정. 책은 강연자가 저술한 책을 기본으로 하여 강의.
3차원 좌표계
좌표계란?
좌표계가 왜 필요한가?
벡터
벡터(Vecctor)는 크기와 방향을 모두 가진 수량을 가리키는 말.
크기(Magnitude)
방향(Direction)
벡터로 위치를 표기
벡터의 꼬리를 원점으로 만들고 위치를 머리로 표현한다.
3차원에서 표현되는 벡터의 요소
v = (x,y,z)
왼손 좌표계, 오른손 좌표계
x축에 네 손가락을 향하고 y축 방향으로 쥐었을 때 엄지 손가락의 방향이 z
벡터 연산들
1. 상등
벡터 u, v가 있을 때 각각의 요소들이 모두 같을 때 상등이라 한다.
2. 벡터 덧셈
u + v = (ux + vx, uy + vy)
3. 벡터의 스칼라 곱
ku = (kux, kuy)
4. 벡터 뺄셈
u - v = u + (-1 * v) = u + (-v) = (ux - vx, uy - vy)
예제>
u = (1,2,3), v = (1,2,3), w = (3,0,-2), k = 2일 때
1. u + w = (1,2,3) + (3,0,-2) = (4, 2, 1)
2. u = v
3. u - v = u + (-v) = (1,2,3) + (-1, -2, -3) = (0, 0, 0) = 0
4. kw = 2(3,0,-2) = (6, 0, -4)
벡터의 길이, 단위벡터
길이와 단위벡터
벡터 u가 있고 길이는 ||u||로 표기한다.
3차원 벡터의 길이는?
단위 벡터(Unit Vector)란?
길이가 1인 벡터
길이가 중요하지 않고 방향만 중요할 때
길이가 있는 벡터를 단위 벡터화 시키면 방향만 남는다.
방법은?
단위 벡터화.
단위 벡터화
증명?
내적(Dot Product)
벡터의 내적은 결과로 스칼라값을 얻는다.
벡터 u, v가 있을 때 u ● v = (uxvx + uyvy + uzvz)
요소들끼리 곱하고 모두 더하는 것이 내적.
내적이 무슨 의미인가?
내적 값의 의미
u ● v = ||u|| ||v || cos θ
1. u ● v = 0이면 u와 v는 직교한다.
2. u ● v > 0이면 두 벡터 사이의 각도는 90도 보다 작다.
3. u ● v < 0이면 두 벡터 사이의 각도는 90보다 크다.
벡터의 외적
w = u x v = (UyVz - UzVy, UzVx - UxVz, UxVy - UyVx)
벡터의 외적의 결과는 내적과는 다르게 벡터.
이때 w의 방향은 왼손 좌표계, 오른손 좌표계에 따라서 방향이 달라짐.
그러므로 벡터의 외적에 교환법칙은 성립하지 않는다.
u x v != v x u
선형 결합
v = a0v0 + a1v1 + … + an-1vn-1
a는 스칼라, v는 벡터
표준 기저 벡터
e0 = (1,0,...,0)
e1 = (0,1,...,0)
en-1 = (0,0,...,1)
예를 들어 3차원 R^3에서 기저 벡터 e0, e1, e2를 이용하면 모든 벡터 표현 이 가능하다. 그리고 벡터는 다음과 같이
v = a0e0 + a1e1 + a2e2
로 모든 3차원 좌표계에서 벡터 표현이 가능하다. 보통 3차원을 다룬 책에서는 e0, e1, e2를 i, j, k로 표현해서 다음과
같이 모든 벡터 v는
v = xi + yj + zk로 표현한다. 이때 i, j, k는 스칼라 값이 아니라. 벡터이고 선형 결합을 이용해서 표현하고 있다.
행렬
m x n행렬은 m개의 행, n개의 열로 구성된 실수들의 모임이다.
예> 4x4행렬
Mij
로 원소를 지칭할 수 있고
이때 i는 행, j는 열이다.
행렬의 연산
행렬 곱셈
행렬 A가 m x n이고 B가 n x p일 때 둘의 곱이 정의된다. 즉 A의 열(n)과 B의 행
(n)이 같아야 곱셈이 가능하다. 결과로 얻는 행렬은 m x p가 된다.
예를 들어 다음과 같은 행렬은 곱을 할 수 없다.
행렬 곱셈
행렬 곱셉에 교환법칙은 성립하지 않는
다.
AB와 BA는 같지 않다.
AB != BA
행렬의 결합 법칙
행렬 A, B, C가 있을 때
(AB)C = A(BC)
행렬의 전치
전치(Transpose)는 행렬의 행과 열을 바꾼 것.
따라서 m x n는 n x m으로 바뀐다. 표기는
행렬의 전치 속성들
단위 행렬
대각 요소가 모두 1이고 그 외에는 모두 0인 행렬.
단위 행렬은 I로 표기하고 행렬 A가 있을 때
AI = B, IB = B이다.
어떠한 행렬에 I를 곱하면 그 결과는 본래 행렬 그대로를 얻는다.
행렬식(Determinant)
행렬 A의 행렬식은 detA로 표기한다. 우리가 2x2 행렬식은 외워서 얻는 값.
행렬식이 값이 0이 아닐 때 가역이 존재한다. 즉 행렬 A의 역행렬이 존재함을
의미한다. 역행렬은 이후에 소개한다.
행렬식의 정의
행렬식을 구하는 방법
복잡한데 행렬식을 구하는 이유?
보통은 역행렬을 구하기 위해서 사용한다. 중요한 것은 역행렬.
역행렬(Inverse Matrix)
정방행렬(행과 열이 같은 정사각형)은 역행렬이 존재할 수 있다.
n x n행렬 M의 역행렬은 n x n이고
모든 정방행렬에 역행렬이 존재하는 것은 아니다. 행렬식의 값이 0이 아닐 때에
만 역행렬이 존재한다. 또한 역행렬이 존재할 경우 그 역행렬은 고유하다.
행렬 M이 있을 때 M^-1(역행렬)을 곱할 경우 결과는 단위 행렬 I를 얻는다.
MM^-1 = I
지금까지 행렬을 배웠는데 왜 배웠나?
3차원 공간에서 위치와 방향을 가지는 것들(예를 들어 벡터)은 변환(Transform)
을 통해 이동, 회전, 스케일이 가능하다.
유니티는 행렬 관련된 수학 연산들을 제공하고 있다. 가령 스케일 행렬 S는 본
래
다음과 같으나 유니티에서는 간단하게 함수 x를 이용해 이를 구현할 수 있다.
Matrix4x4 scaleTM = Matrix4x4.Scale(new Vector3(sx, sy, sz));
이동, 회전, 스케일
이동, 회전, 스케일만 이용해도 거의 대부분의 게임은 작성할 수 있다.
행렬 모두를 설명하는 것은 낭비. 강연자 보다 더 잘 설명한 책들이 너무 많다.
프로그래밍은 단순 노동이 아니다.
그랬으면 얼마나 좋았을까?
본인이 아는 만큼. 더 좋은 코드, 더 좋은 프로그램을 만들 수 있다.
아는 것이 힘이다.
뚝심?
뚝심이 있어야 할 수 있다.
우리가 지금까지 배웠던 기초적인 수학은 게임 프로그래밍의 극히 일부분.
그 외에도 모든 부분에 수학적인 요소가 있고 그것을 알고 있는 사람만이 이해
하고 더 코드를 작성할 수 있다.
만일 다른 사람이 만든 라이브러리가 없을 때 어떻게 해야 할까?
예를 들어 유니티에서 수학 함수, 클래스들을 제공하지 않는다면?
본인이 직접 해결. 프로그래머는 문제를 풀어내는(Solve) 사람이다.

More Related Content

What's hot

2021 1학기 정기 세미나 6주차
2021 1학기 정기 세미나 6주차2021 1학기 정기 세미나 6주차
2021 1학기 정기 세미나 6주차Moonki Choi
 
[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제
[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제
[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제NAVER D2
 
02.선형변환과 행렬
02.선형변환과 행렬02.선형변환과 행렬
02.선형변환과 행렬JaeHong Park
 
Quaternion and Rotation
Quaternion and RotationQuaternion and Rotation
Quaternion and RotationYoung-Min kang
 
Project#1파스칼 삼각형
Project#1파스칼 삼각형Project#1파스칼 삼각형
Project#1파스칼 삼각형Kimjeongmoo
 
자료구조 01 최종 보고서
자료구조 01 최종 보고서자료구조 01 최종 보고서
자료구조 01 최종 보고서pkok15
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Thisisone Lee
 
마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠동환 김
 
2021 2학기 정기 세미나 5주차
2021 2학기 정기 세미나 5주차2021 2학기 정기 세미나 5주차
2021 2학기 정기 세미나 5주차Moonki Choi
 
2020 여름방학 정기스터디 5주차
2020 여름방학 정기스터디 5주차2020 여름방학 정기스터디 5주차
2020 여름방학 정기스터디 5주차Moonki Choi
 

What's hot (12)

2021 1학기 정기 세미나 6주차
2021 1학기 정기 세미나 6주차2021 1학기 정기 세미나 6주차
2021 1학기 정기 세미나 6주차
 
선형 대수학
선형 대수학선형 대수학
선형 대수학
 
[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제
[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제
[D2 CAMPUS] 숭실대 SCCC 프로그래밍 경시대회 문제
 
02.선형변환과 행렬
02.선형변환과 행렬02.선형변환과 행렬
02.선형변환과 행렬
 
Quaternion and Rotation
Quaternion and RotationQuaternion and Rotation
Quaternion and Rotation
 
Project#1파스칼 삼각형
Project#1파스칼 삼각형Project#1파스칼 삼각형
Project#1파스칼 삼각형
 
자료구조 01 최종 보고서
자료구조 01 최종 보고서자료구조 01 최종 보고서
자료구조 01 최종 보고서
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2
 
마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠
 
2021 2학기 정기 세미나 5주차
2021 2학기 정기 세미나 5주차2021 2학기 정기 세미나 5주차
2021 2학기 정기 세미나 5주차
 
2020 여름방학 정기스터디 5주차
2020 여름방학 정기스터디 5주차2020 여름방학 정기스터디 5주차
2020 여름방학 정기스터디 5주차
 
Uv 제어
Uv 제어Uv 제어
Uv 제어
 

Viewers also liked

유니티 고급 과정 -4-
유니티 고급 과정 -4-유니티 고급 과정 -4-
유니티 고급 과정 -4-Kiyoung Moon
 
유니티 고급 과정 -3-
유니티 고급 과정 -3-유니티 고급 과정 -3-
유니티 고급 과정 -3-Kiyoung Moon
 
유니티 고급 과정 -1-
유니티 고급 과정 -1-유니티 고급 과정 -1-
유니티 고급 과정 -1-Kiyoung Moon
 
게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)Kiyoung Moon
 
유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑Kiyoung Moon
 
해커에게 전해들은 머신러닝 #4
해커에게 전해들은 머신러닝 #4해커에게 전해들은 머신러닝 #4
해커에게 전해들은 머신러닝 #4Haesun Park
 
셰이더 만들기 실습
셰이더 만들기 실습셰이더 만들기 실습
셰이더 만들기 실습Jungsoo Park
 
셰이더 합성
셰이더 합성셰이더 합성
셰이더 합성JiUng Choi
 
Curriculum Vitae Madelaine
Curriculum Vitae MadelaineCurriculum Vitae Madelaine
Curriculum Vitae MadelaineMADELAINE LAROYA
 
RESUME James Gilchrist MAR 2015
RESUME James Gilchrist MAR 2015RESUME James Gilchrist MAR 2015
RESUME James Gilchrist MAR 2015James Gilchrist
 
Steven Glick Resume
Steven Glick ResumeSteven Glick Resume
Steven Glick ResumeSteve Glick
 
High Impact Leadership for Emerging Leaders
High Impact Leadership for Emerging LeadersHigh Impact Leadership for Emerging Leaders
High Impact Leadership for Emerging LeadersCraig Bihari
 

Viewers also liked (20)

유니티 고급 과정 -4-
유니티 고급 과정 -4-유니티 고급 과정 -4-
유니티 고급 과정 -4-
 
유니티 고급 과정 -3-
유니티 고급 과정 -3-유니티 고급 과정 -3-
유니티 고급 과정 -3-
 
유니티 고급 과정 -1-
유니티 고급 과정 -1-유니티 고급 과정 -1-
유니티 고급 과정 -1-
 
게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)
 
유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑
 
해커에게 전해들은 머신러닝 #4
해커에게 전해들은 머신러닝 #4해커에게 전해들은 머신러닝 #4
해커에게 전해들은 머신러닝 #4
 
셰이더 만들기 실습
셰이더 만들기 실습셰이더 만들기 실습
셰이더 만들기 실습
 
셰이더 합성
셰이더 합성셰이더 합성
셰이더 합성
 
Curriculum Vitae Madelaine
Curriculum Vitae MadelaineCurriculum Vitae Madelaine
Curriculum Vitae Madelaine
 
RESUME James Gilchrist MAR 2015
RESUME James Gilchrist MAR 2015RESUME James Gilchrist MAR 2015
RESUME James Gilchrist MAR 2015
 
looseleaf_Portfolio
looseleaf_Portfoliolooseleaf_Portfolio
looseleaf_Portfolio
 
9tex BD Profile
9tex BD Profile9tex BD Profile
9tex BD Profile
 
Pitch
PitchPitch
Pitch
 
வெற்றி
வெற்றிவெற்றி
வெற்றி
 
Leal
LealLeal
Leal
 
Hello everyone
Hello everyoneHello everyone
Hello everyone
 
Steven Glick Resume
Steven Glick ResumeSteven Glick Resume
Steven Glick Resume
 
The Many Faces of Trump
The Many Faces of TrumpThe Many Faces of Trump
The Many Faces of Trump
 
High Impact Leadership for Emerging Leaders
High Impact Leadership for Emerging LeadersHigh Impact Leadership for Emerging Leaders
High Impact Leadership for Emerging Leaders
 
Digital Enterprise
Digital EnterpriseDigital Enterprise
Digital Enterprise
 

Similar to 유니티 고급 과정 -2-

3D 컴퓨터 그래픽스 기초
3D 컴퓨터 그래픽스 기초3D 컴퓨터 그래픽스 기초
3D 컴퓨터 그래픽스 기초Seung Joon Choi
 
1 2. 직선과 평면에서의 벡터 방정식
1 2. 직선과 평면에서의 벡터 방정식1 2. 직선과 평면에서의 벡터 방정식
1 2. 직선과 평면에서의 벡터 방정식jdo
 
01_ML 기초_선형회귀_Linear Regression
01_ML 기초_선형회귀_Linear Regression01_ML 기초_선형회귀_Linear Regression
01_ML 기초_선형회귀_Linear RegressionAHRA CHO
 
Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Jungkyu Lee
 
머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)홍배 김
 
프로그래머을 위한 선형대수(Chap1)
프로그래머을 위한 선형대수(Chap1)프로그래머을 위한 선형대수(Chap1)
프로그래머을 위한 선형대수(Chap1)Haryun Lee
 
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이NAVER D2
 
입체충돌처리
입체충돌처리입체충돌처리
입체충돌처리quxn6
 
하스켈로 알고리즘 문제 풀기 2
하스켈로 알고리즘 문제 풀기 2하스켈로 알고리즘 문제 풀기 2
하스켈로 알고리즘 문제 풀기 2민석 이
 
Tensorflow
TensorflowTensorflow
Tensorflowchs71
 
입문 Visual SLAM 14강 - 3장 3d rigid body transform
입문 Visual SLAM 14강 - 3장 3d rigid body transform입문 Visual SLAM 14강 - 3장 3d rigid body transform
입문 Visual SLAM 14강 - 3장 3d rigid body transformjdo
 
신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약고포릿 default
 
1-1. 공학과 수학에서 벡터/ 내적 직교
1-1. 공학과 수학에서 벡터/ 내적 직교1-1. 공학과 수학에서 벡터/ 내적 직교
1-1. 공학과 수학에서 벡터/ 내적 직교jdo
 
[컴퓨터비전과 인공지능] 5. 신경망
[컴퓨터비전과 인공지능] 5. 신경망[컴퓨터비전과 인공지능] 5. 신경망
[컴퓨터비전과 인공지능] 5. 신경망jdo
 

Similar to 유니티 고급 과정 -2- (20)

3D 컴퓨터 그래픽스 기초
3D 컴퓨터 그래픽스 기초3D 컴퓨터 그래픽스 기초
3D 컴퓨터 그래픽스 기초
 
벡터
벡터벡터
벡터
 
1 2. 직선과 평면에서의 벡터 방정식
1 2. 직선과 평면에서의 벡터 방정식1 2. 직선과 평면에서의 벡터 방정식
1 2. 직선과 평면에서의 벡터 방정식
 
Linear algebra
Linear algebraLinear algebra
Linear algebra
 
반사벡터
반사벡터반사벡터
반사벡터
 
2012 Dm 04
2012 Dm 042012 Dm 04
2012 Dm 04
 
01_ML 기초_선형회귀_Linear Regression
01_ML 기초_선형회귀_Linear Regression01_ML 기초_선형회귀_Linear Regression
01_ML 기초_선형회귀_Linear Regression
 
Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어
 
머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)
 
프로그래머을 위한 선형대수(Chap1)
프로그래머을 위한 선형대수(Chap1)프로그래머을 위한 선형대수(Chap1)
프로그래머을 위한 선형대수(Chap1)
 
점, 선, 면
점, 선, 면점, 선, 면
점, 선, 면
 
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
 
07. PCA
07. PCA07. PCA
07. PCA
 
입체충돌처리
입체충돌처리입체충돌처리
입체충돌처리
 
하스켈로 알고리즘 문제 풀기 2
하스켈로 알고리즘 문제 풀기 2하스켈로 알고리즘 문제 풀기 2
하스켈로 알고리즘 문제 풀기 2
 
Tensorflow
TensorflowTensorflow
Tensorflow
 
입문 Visual SLAM 14강 - 3장 3d rigid body transform
입문 Visual SLAM 14강 - 3장 3d rigid body transform입문 Visual SLAM 14강 - 3장 3d rigid body transform
입문 Visual SLAM 14강 - 3장 3d rigid body transform
 
신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약신경망 첫걸음 - 한빛미디어 요약
신경망 첫걸음 - 한빛미디어 요약
 
1-1. 공학과 수학에서 벡터/ 내적 직교
1-1. 공학과 수학에서 벡터/ 내적 직교1-1. 공학과 수학에서 벡터/ 내적 직교
1-1. 공학과 수학에서 벡터/ 내적 직교
 
[컴퓨터비전과 인공지능] 5. 신경망
[컴퓨터비전과 인공지능] 5. 신경망[컴퓨터비전과 인공지능] 5. 신경망
[컴퓨터비전과 인공지능] 5. 신경망
 

More from Kiyoung Moon

Image generation compression using genetic algorithm
Image generation compression using genetic algorithmImage generation compression using genetic algorithm
Image generation compression using genetic algorithmKiyoung Moon
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기Kiyoung Moon
 
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅Kiyoung Moon
 
Cross-Platform Game Engine
Cross-Platform Game EngineCross-Platform Game Engine
Cross-Platform Game EngineKiyoung Moon
 
코히런트 Gt(coherent gt) 통합 및 간단한 사용법
코히런트 Gt(coherent gt) 통합 및 간단한 사용법코히런트 Gt(coherent gt) 통합 및 간단한 사용법
코히런트 Gt(coherent gt) 통합 및 간단한 사용법Kiyoung Moon
 
스케일폼(Scaleform) ue4에 통합 및 간단한 사용법
스케일폼(Scaleform) ue4에 통합 및 간단한 사용법스케일폼(Scaleform) ue4에 통합 및 간단한 사용법
스케일폼(Scaleform) ue4에 통합 및 간단한 사용법Kiyoung Moon
 
버그 트래킹 시스템 Mantis의 사용 그리고 예제
버그 트래킹 시스템 Mantis의 사용 그리고 예제버그 트래킹 시스템 Mantis의 사용 그리고 예제
버그 트래킹 시스템 Mantis의 사용 그리고 예제Kiyoung Moon
 

More from Kiyoung Moon (7)

Image generation compression using genetic algorithm
Image generation compression using genetic algorithmImage generation compression using genetic algorithm
Image generation compression using genetic algorithm
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
 
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
 
Cross-Platform Game Engine
Cross-Platform Game EngineCross-Platform Game Engine
Cross-Platform Game Engine
 
코히런트 Gt(coherent gt) 통합 및 간단한 사용법
코히런트 Gt(coherent gt) 통합 및 간단한 사용법코히런트 Gt(coherent gt) 통합 및 간단한 사용법
코히런트 Gt(coherent gt) 통합 및 간단한 사용법
 
스케일폼(Scaleform) ue4에 통합 및 간단한 사용법
스케일폼(Scaleform) ue4에 통합 및 간단한 사용법스케일폼(Scaleform) ue4에 통합 및 간단한 사용법
스케일폼(Scaleform) ue4에 통합 및 간단한 사용법
 
버그 트래킹 시스템 Mantis의 사용 그리고 예제
버그 트래킹 시스템 Mantis의 사용 그리고 예제버그 트래킹 시스템 Mantis의 사용 그리고 예제
버그 트래킹 시스템 Mantis의 사용 그리고 예제
 

유니티 고급 과정 -2-

  • 1. 유니티 고급 과정 1. 왜 유니티인가? - 학생들의 이해 수준에 따라 C# 문법 강의를 할 예정 2. 3차원 좌표계 3. 게임에서 쓰이는 수학 - 벡터, 행렬 4. 유니티에서 제공하는 기능들 Kiyoung Moon(문기영)
  • 2. 왜 유니티인가? 크로스 플랫폼 C#언어의 채용 개발 컨셉 - 콤포넌트 프로그래밍
  • 3. 크로스 플랫폼 한번만 만들면 최소한의 작업으로 여러 플랫폼에 동시에 출시가 가능하다. 급변하는 모바일 시대에 시간은 ‘금’ 최소한의 작업으로 여러 플랫폼 출시는 대단한 경쟁력 자체 엔진의 경우 플랫폼 별로 하드웨어에 밀접한 부분들은 플랫폼에 맞게 재 작성 해야 함. 예를 들어 Windows에서 렌더링을 위해 DirectX를 사용해야 하 고 Mac에서는 OpenGL을 사용 해야 함. 유니티를 사용하면 이런 내부적인 작업들은 건드리지 않아도 됨. (물론 유니티 에서 제공하지 않는 기능들을 사용하려면 직접 구현하거나 유니티에서 만들 어 줄 때 까지 기다려야 함. 이것이 단점이라면 단점.)
  • 4. C#의 채용 Java와 비슷하게 만들었으나 자바는 아님. 델파이를 개발한 프로그래머가 마이크로소프트로 옮기면서 만든 언어. (Anders Hejlsberg) 터보 파스칼, 델파이, C# 모두 이 사람이 만들었음.
  • 5. C# 문법 강의 필요에 따라서 할 예정. 책은 강연자가 저술한 책을 기본으로 하여 강의.
  • 7. 벡터 벡터(Vecctor)는 크기와 방향을 모두 가진 수량을 가리키는 말. 크기(Magnitude) 방향(Direction)
  • 8. 벡터로 위치를 표기 벡터의 꼬리를 원점으로 만들고 위치를 머리로 표현한다.
  • 10. 왼손 좌표계, 오른손 좌표계 x축에 네 손가락을 향하고 y축 방향으로 쥐었을 때 엄지 손가락의 방향이 z
  • 11. 벡터 연산들 1. 상등 벡터 u, v가 있을 때 각각의 요소들이 모두 같을 때 상등이라 한다. 2. 벡터 덧셈 u + v = (ux + vx, uy + vy) 3. 벡터의 스칼라 곱 ku = (kux, kuy) 4. 벡터 뺄셈 u - v = u + (-1 * v) = u + (-v) = (ux - vx, uy - vy)
  • 12. 예제> u = (1,2,3), v = (1,2,3), w = (3,0,-2), k = 2일 때 1. u + w = (1,2,3) + (3,0,-2) = (4, 2, 1) 2. u = v 3. u - v = u + (-v) = (1,2,3) + (-1, -2, -3) = (0, 0, 0) = 0 4. kw = 2(3,0,-2) = (6, 0, -4)
  • 13. 벡터의 길이, 단위벡터 길이와 단위벡터 벡터 u가 있고 길이는 ||u||로 표기한다.
  • 15. 단위 벡터(Unit Vector)란? 길이가 1인 벡터 길이가 중요하지 않고 방향만 중요할 때 길이가 있는 벡터를 단위 벡터화 시키면 방향만 남는다. 방법은? 단위 벡터화.
  • 18. 내적(Dot Product) 벡터의 내적은 결과로 스칼라값을 얻는다. 벡터 u, v가 있을 때 u ● v = (uxvx + uyvy + uzvz) 요소들끼리 곱하고 모두 더하는 것이 내적. 내적이 무슨 의미인가?
  • 19. 내적 값의 의미 u ● v = ||u|| ||v || cos θ 1. u ● v = 0이면 u와 v는 직교한다. 2. u ● v > 0이면 두 벡터 사이의 각도는 90도 보다 작다. 3. u ● v < 0이면 두 벡터 사이의 각도는 90보다 크다.
  • 20. 벡터의 외적 w = u x v = (UyVz - UzVy, UzVx - UxVz, UxVy - UyVx) 벡터의 외적의 결과는 내적과는 다르게 벡터. 이때 w의 방향은 왼손 좌표계, 오른손 좌표계에 따라서 방향이 달라짐. 그러므로 벡터의 외적에 교환법칙은 성립하지 않는다. u x v != v x u
  • 21. 선형 결합 v = a0v0 + a1v1 + … + an-1vn-1 a는 스칼라, v는 벡터 표준 기저 벡터 e0 = (1,0,...,0) e1 = (0,1,...,0) en-1 = (0,0,...,1) 예를 들어 3차원 R^3에서 기저 벡터 e0, e1, e2를 이용하면 모든 벡터 표현 이 가능하다. 그리고 벡터는 다음과 같이 v = a0e0 + a1e1 + a2e2 로 모든 3차원 좌표계에서 벡터 표현이 가능하다. 보통 3차원을 다룬 책에서는 e0, e1, e2를 i, j, k로 표현해서 다음과 같이 모든 벡터 v는 v = xi + yj + zk로 표현한다. 이때 i, j, k는 스칼라 값이 아니라. 벡터이고 선형 결합을 이용해서 표현하고 있다.
  • 22. 행렬 m x n행렬은 m개의 행, n개의 열로 구성된 실수들의 모임이다. 예> 4x4행렬 Mij 로 원소를 지칭할 수 있고 이때 i는 행, j는 열이다.
  • 24. 행렬 곱셈 행렬 A가 m x n이고 B가 n x p일 때 둘의 곱이 정의된다. 즉 A의 열(n)과 B의 행 (n)이 같아야 곱셈이 가능하다. 결과로 얻는 행렬은 m x p가 된다. 예를 들어 다음과 같은 행렬은 곱을 할 수 없다.
  • 26. 행렬 곱셉에 교환법칙은 성립하지 않는 다. AB와 BA는 같지 않다. AB != BA
  • 27. 행렬의 결합 법칙 행렬 A, B, C가 있을 때 (AB)C = A(BC)
  • 28. 행렬의 전치 전치(Transpose)는 행렬의 행과 열을 바꾼 것. 따라서 m x n는 n x m으로 바뀐다. 표기는
  • 30. 단위 행렬 대각 요소가 모두 1이고 그 외에는 모두 0인 행렬. 단위 행렬은 I로 표기하고 행렬 A가 있을 때 AI = B, IB = B이다. 어떠한 행렬에 I를 곱하면 그 결과는 본래 행렬 그대로를 얻는다.
  • 31. 행렬식(Determinant) 행렬 A의 행렬식은 detA로 표기한다. 우리가 2x2 행렬식은 외워서 얻는 값. 행렬식이 값이 0이 아닐 때 가역이 존재한다. 즉 행렬 A의 역행렬이 존재함을 의미한다. 역행렬은 이후에 소개한다. 행렬식의 정의
  • 33. 복잡한데 행렬식을 구하는 이유? 보통은 역행렬을 구하기 위해서 사용한다. 중요한 것은 역행렬.
  • 34. 역행렬(Inverse Matrix) 정방행렬(행과 열이 같은 정사각형)은 역행렬이 존재할 수 있다. n x n행렬 M의 역행렬은 n x n이고 모든 정방행렬에 역행렬이 존재하는 것은 아니다. 행렬식의 값이 0이 아닐 때에 만 역행렬이 존재한다. 또한 역행렬이 존재할 경우 그 역행렬은 고유하다. 행렬 M이 있을 때 M^-1(역행렬)을 곱할 경우 결과는 단위 행렬 I를 얻는다. MM^-1 = I
  • 35. 지금까지 행렬을 배웠는데 왜 배웠나? 3차원 공간에서 위치와 방향을 가지는 것들(예를 들어 벡터)은 변환(Transform) 을 통해 이동, 회전, 스케일이 가능하다. 유니티는 행렬 관련된 수학 연산들을 제공하고 있다. 가령 스케일 행렬 S는 본 래 다음과 같으나 유니티에서는 간단하게 함수 x를 이용해 이를 구현할 수 있다. Matrix4x4 scaleTM = Matrix4x4.Scale(new Vector3(sx, sy, sz));
  • 36. 이동, 회전, 스케일 이동, 회전, 스케일만 이용해도 거의 대부분의 게임은 작성할 수 있다. 행렬 모두를 설명하는 것은 낭비. 강연자 보다 더 잘 설명한 책들이 너무 많다.
  • 37. 프로그래밍은 단순 노동이 아니다. 그랬으면 얼마나 좋았을까? 본인이 아는 만큼. 더 좋은 코드, 더 좋은 프로그램을 만들 수 있다. 아는 것이 힘이다.
  • 38. 뚝심? 뚝심이 있어야 할 수 있다. 우리가 지금까지 배웠던 기초적인 수학은 게임 프로그래밍의 극히 일부분. 그 외에도 모든 부분에 수학적인 요소가 있고 그것을 알고 있는 사람만이 이해 하고 더 코드를 작성할 수 있다. 만일 다른 사람이 만든 라이브러리가 없을 때 어떻게 해야 할까? 예를 들어 유니티에서 수학 함수, 클래스들을 제공하지 않는다면? 본인이 직접 해결. 프로그래머는 문제를 풀어내는(Solve) 사람이다.