게임프로그래밍 공부하는 블로그

고정 헤더 영역

글 제목

메뉴 레이어

게임프로그래밍 공부하는 블로그

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (25)
    • 게임엔진공부 (14)
    • unreal4 (0)
    • unity (2)
    • c++ (3)
      • 디자인패턴 (1)
    • C# (1)
    • 프로그래밍 용어 (1)
    • 시스템 프로그래밍 (2)

검색 레이어

게임프로그래밍 공부하는 블로그

검색 영역

컨텐츠 검색

전체 글

  • 내적을 사용한 시야 판별

    2019.12.19 by 뿡뿡이형

  • 평면의 방정식과 D의 의미

    2019.12.19 by 뿡뿡이형

  • 카메라의 뷰 좌표계와 LookAt 행렬 유도하기

    2019.12.19 by 뿡뿡이형

  • 오일러각 입력에 따라 Forward, Up, Right 벡터를 구하고 이를 토대로 3차원 회전 행렬 구하기

    2019.12.19 by 뿡뿡이형

  • 투영벡터

    2019.12.19 by 뿡뿡이형

  • 왼손좌표계와 오른손 좌표계

    2019.12.19 by 뿡뿡이형

  • 삼각형 내부 외부 판별

    2019.12.19 by 뿡뿡이형

  • 브레즌햄 알고리즘

    2019.12.18 by 뿡뿡이형

내적을 사용한 시야 판별

일단 앞뒤로만 시야를 구분한다면 forward vector와 (target-self)vector를 내적해 그 값이 0보다 크면 앞 0보다 작으면 앞뒤는 분간해 줄 수 있다. 근데 시야각은 앞에 전체를 볼 수 있는게 아니니 시야각을 비교해줘야한다. 시야각을 계산하려면 (target-self)vector 정규화한 벡터와 (target-self)vector를 cos(시야각/2) 값보다 크면 목표물이 시야각 안에 있는지를 알 수 있다. 출처 : http://blog.naver.com/destiny9720/221407625806

게임엔진공부 2019. 12. 19. 21:16

평면의 방정식과 D의 의미

평면의 방정식 ax + by+ cz + d = 0 위 그림의 n벡터를 라고 할 때 평면 방정식에 넣으면 0 = · (x - x0 , y - y0 ,z - z0) = a(x - x0) + b(y - y0) + c(z - z0) = ax + by + cz - ax0 - by0 -cz0 평면의 방정식의 a,b,c는 평면의 노말을 뜻한다. 참고 : https://www.youtube.com/watch?v=loBqLpgK9c0 D의 의미 참고: https://www.youtube.com/watch?v=GBhH1UNr1VI

게임엔진공부 2019. 12. 19. 21:00

카메라의 뷰 좌표계와 LookAt 행렬 유도하기

뷰 좌표계란 - 월드를 카메라를 기준으로 본 좌표계 1. 카메라의 오일러 회전 값을 알고있는 경우. - 카메라의 회전 행렬 (TMatrix)구하고 - 카메라의 이동행렬(RMatrix)도 구한다 - ViewMatrix = TMatrix * RMatrix (역행렬) 2. 카메라가 향해야 하는 물체의 위치를 알고 있는 경우(Look At) 1. (목표물 - 카메라)를 정규화하여 Forward벡터를 구한다. 2. Forward벡터와 월드의 Up(0,1,0)을 외적하여 Right벡터도 구해준다. 3. 얻은 Forward벡터와 Right벡터를 외적하면 카메라의 Up벡터도 구할 수 있다. 출처 : http://blog.naver.com/destiny9720/221423054915 LookAt 소스코드 1 2 3 4 ..

게임엔진공부 2019. 12. 19. 20:42

오일러각 입력에 따라 Forward, Up, Right 벡터를 구하고 이를 토대로 3차원 회전 행렬 구하기

오일러 각이란 물체를 3가지 성분을 이용해 회전을 표현하는 것이다. 보통 엔진에서 pitch, Roll, Yaw로 표현하고. (pitch는 x축 기준 회전 ,Yaw는 y축 기준 회전, Roll은 z축 기준 회전이다.) 오일러 각에 따른 Forward, Up, Right 벡터 Forward:(0,0,1,1) Up:(0,1,0,1) Right:(1,0,0,1) RotationMatrix = Rz * Ry * Rx (곱하는 순서 틀리지 말것.) 언리얼 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 FORCEINLINE FInverseRotationMatrix::FInverseRotationMatrix(const FRotator& Rot) : FMatrix(..

게임엔진공부 2019. 12. 19. 20:29

투영벡터

투영벡터란 OA벡터를 OB벡터에 투영한다는건 OH벡터를 구하겠다는 소리다. OA · OB를 내적하면 OH의 길이를 알 수있다. 길이를 알았다면 OB를 정규화해 그 벡터를 곱하여 OH벡터를 얻을 수 있다. 그러므로 (OA · OB) /normalize(OB) 로 OH를 얻을 수 있다. 출처: https://www.youtube.com/watch?v=IOf1o72aKDc

게임엔진공부 2019. 12. 19. 19:36

왼손좌표계와 오른손 좌표계

왼손 좌표계는 화면의 안쪽을 Z축으로 두고 오른손 좌표계는 화면 바깥쪽으로 Z축을 둔다. 왼손좌표계는 회전축을 기준으로 시계방향으로 축 회전이 일어나고 오른손좌표계는 회전축 기준으로 반 시계방향으로 회전이 일어난다. (각 손 좌표계를 그 손의 엄지를 세운채 손가락이 돌아가는 방향으로 회전한다고 생각하면 편하다.) ps. 다이렉트 X는 왼손 좌표계 OpenGL은 오른손 좌표계를 사용한다.

게임엔진공부 2019. 12. 19. 15:02

삼각형 내부 외부 판별

2D상의 임의의 점 P가 3개의 점 A,B,C로 이루어진 삼각형 안에 있는지 판단해보자 왼손 좌표계 기준 AP X AB를 하면 y값(가운데 값)이 0보다 큰 벡터가 나올것이다. 다음으로 BP X BC를 계산하면 y값이 0보다 큰 벡터가 나온다. 다음으로 CP X CA를 계산하면 y값이 0보다 큰 벡터가 나온다. 이걸로 점 p는 삼각형 안에 있다는걸 증명해냈다. 왼손 좌표계 기준 AP X AB를 하면 y값이 0보다 큰 벡터가 나올것이다. 다음으로 BP X BC를 계산하면 y값이 0보다 큰 벡터가 나온다. 다음으로 CP X CA를 계산하면 y값이 0보다 작은 벡터가 나온다. 마지막 벡터 y가 0보다 작으니 점이 삼각형 밖에 있다는 것이다. 외적의 성질중 왼쪽 오른쪽을 판별하는 성질을 이용한 것이다. 시간이 ..

게임엔진공부 2019. 12. 19. 12:04

브레즌햄 알고리즘

우리가 스크린에 직선을 그릴때 그리게 될 점의 좌표는 정수기 때문에 계산량이 많은 실수 보다는 비교적 계산량이 적은 정수를 이용해 계산하는게 합리적이다. 실수를 이용한 직선의 방정식을 정수만 이용해 계산하게 만든 알고리즘이 브레즌햄 알고리즘이다. 먼저 두 점을 지나는 직선의 방정식을 보면 아래와 같다 : y=a * x+b a는 기울기 b는 절편이다. 예를 들어 (2, 1) 과 (6, 4)를 지나는 직선의 점들 중 x가 4일때 y의 값은 : y = 3/4 * 4 + 0.5 y = 2.5 이걸 브레즌햄 알고리즘에 적용시켜보자. 브레즌 햄 알고리즘을 1사분면의 아랫쪽 기준으로 설명해보겠다. (말이 좀 이상하니 그림을 첨부한다.) (이렇게 나누는 이유는 직접 만들어 보면 깨닫게 될거라 생각한다.) f = hei..

게임엔진공부 2019. 12. 18. 16:18

추가 정보

인기글

최신글

페이징

이전
1 2 3 4
다음
TISTORY
게임프로그래밍 공부하는 블로그 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바