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

고정 헤더 영역

글 제목

메뉴 레이어

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

메뉴 리스트

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

검색 레이어

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

검색 영역

컨텐츠 검색

게임엔진공부

  • 프러스텀 컬링

    2020.01.13 by 뿡뿡이형

  • 투영행렬 유도와 ndc

    2020.01.12 by 뿡뿡이형

  • [ScanLine]삼각형 빠르게 칠하기

    2019.12.19 by 뿡뿡이형

  • 벡터 내적과 외적을 응용한 왼쪽과 오른쪽의 판별

    2019.12.19 by 뿡뿡이형

  • 내적을 사용한 시야 판별

    2019.12.19 by 뿡뿡이형

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

    2019.12.19 by 뿡뿡이형

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

    2019.12.19 by 뿡뿡이형

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

    2019.12.19 by 뿡뿡이형

프러스텀 컬링

프러스텀컬링이란 백스페이스 컬링처럼 우리가 보지 못하는것을 굳이 그려주지 않아 컴퓨터의 계산량을 줄여주는 방법중 하나인데 출처 : https://relativity.net.au/gaming/java/Frustum.html 우리가 카메라로 보고있는 영역 즉 절두체 밖의 오브젝트는 그리지 않고 절두체 내부에 있는 오브젝트들만 그리는 것인데 이 절두체는 근평면, 원평면, 상평면, 하평면, 좌평면, 우평면으로 총 6개의 평면으로 이루어져 있다. 평면은 점 1개와 법선벡터 1개 혹은 점 3개 등의 방법으로 표현이 가능한데 그 중 점 1개와 법선벡터를 이용한 평면으로 프러스텀 컬링을 설명해 보겠다. 근평면과 원평면 가장 쉽게 구할 수 있는 두개의 평면이다. 우리는 무려 카메라와 근평면 사이의 거리 NearZ 값과 ..

게임엔진공부 2020. 1. 13. 01:03

투영행렬 유도와 ndc

일단 투영행렬이란 무엇이고 왜 필요한지 알아보자 우리가 살고있는 세계에는 원근감이라는게 있다. 가까운 물체는 크고 먼 물체는 작게 보이는 것이다. 언리얼로 원근감이 있는 카메라와 없는 카메라를 비교해보자 왼쪽은 원근감이 없는 흔히말하는 오쏘그래픽인 카메라이고 오른쪽은 시야각이 90도인 투영행렬이 들어간 카메라다. 누가봐도 오른쪽이 원근감도 있고 우리가 사는 세계와 비슷하다. 왼쪽 같은 카메라를 사용하는 게임들도 있지만 원근감이 있는 게임을 만들려면 투영행렬이 필요한것이다. 그럼 이 투영행렬은 어떻게 만드냐. 원근감을 표현하는 카메라는 카메라로부터 시작하는 사각뿔의 앞부분이 잘린 시야영역을 사용한다. 그럼 상하 좌우 전후로 이루어진 절두체(FRUSTUM)이 나오게 된다. 출처 : https://relati..

게임엔진공부 2020. 1. 12. 21:22

[ScanLine]삼각형 빠르게 칠하기

삼각형을 칠하는 방법 중 ScanLine이라는 방식이 있다. 가장 위의 점에서 나머지 점들을 잇는 직선의 기울기를 구한뒤 y값을 밑으로 옮기며 직선의 기울기에 따른 x1 부터 x2까지 점을 채워 그려주는 것이다. 근데 삼각형이 죄다 밑에가 평평하지 않을거고 위에가 평평한 친구도 있을꺼고 평평한곳이 없는 친구도 있을꺼다. 첫번째 그림은 위에 설명대로 하면 되고 두번째는 가장 밑 을 기준으로 직선의 기울기를 구하고 밑에서부터 위로 채워주면 된다. 마지막 경우는 중간에 임의의 점을 추가해 1번과 2번을 이용해 채워주면 된다. 코드: https://gist.github.com/madomagi/2001c6221a058eb697ae87332e59276a

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

벡터 내적과 외적을 응용한 왼쪽과 오른쪽의 판별

내적을 이용 왼쪽 오른쪽 판별은 Right벡터를 이용해 target-self 벡터와 Right 벡터를 내적해 나온 값이 0보다 크다면 오른쪽 0보다 작다면 왼쪽이다. 외적을 이용 target-self 벡터와 Right 벡터를 외적하고 외적한 값을 up벡터와 내적한다. 내적한 값이 0보다 크면 왼쪽 0보다 작다면 왼쪽이다.

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

내적을 사용한 시야 판별

일단 앞뒤로만 시야를 구분한다면 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

추가 정보

인기글

최신글

페이징

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

티스토리툴바