전체 글
-
-
정수만 사용해서 선 빠르게 그리기이러저런 이야기 2019. 12. 19. 10:46
https://playground10.tistory.com/62 [알고리즘] 브레젠험 알고리즘 선분그리기 알고리즘 중 대표적이고 정수계산이라 많이 쓰이는 브레젠헴, 브레젠험 알고리즘(Bresenham's algorithm) 오늘은 브레젠험 알고리즘의 원리와 구현방법을 포스팅하려합니다. 브레젠험 알고리즘의 사전.. playground10.tistory.com https://kukuta.tistory.com/186 브레즌햄(Bresenham) 알고리즘 브레즌햄 알고리즘은 컴퓨터 그래픽스에서 복잡하고 계산을 느리게 만드는 실수 계산을 배제하고 정수 계산만으로 직선을 그리기 위해 만들어진 알고리즘 입니다. 직선의 공식을 이용해 계산된 좌표값은 결국 스크.. kukuta.tistory.com https://m.b..
-
삼각형 빠르게 칠하기카테고리 없음 2019. 12. 19. 10:46
http://blog.naver.com/PostView.nhn?blogId=destiny9720&logNo=221410094589&categoryNo=22&parentCategoryNo=0&viewDate=¤tPage=3&postListTopCurrentPage=1&from=postView 19. 컨벡스(Convex)와 삼각형(Triangle) 이전 글에서 두 점의 정보만 있으면 언제든지 선을 구성하는 점을 생산해내는 아핀 조합에 대해 알아보았다... blog.naver.com http://blog.naver.com/PostView.nhn?blogId=destiny9720&logNo=221410412599&categoryNo=22&parentCategoryNo=0 20. 삼각형 칠하기(Fill..
-
왼손 좌표계 오른손 좌표계이러저런 이야기 2019. 12. 19. 10:46
좌표계에는 크게 2d, 3d 좌표계가 있다. 2d 좌표계는 중학교 수학 때 배우는 x와 y의 좌표를 가지는 자표계, 3d 좌표계는 x, y에 z라는 축이 추가 되어 x, y, z의 좌표를 가지게 된다. 이 3d 좌표계를 게임에서 사용할 때 왼손 좌표계 또는 오른손 좌표계를 사용하여 계산한다. 왼손 좌표계와 오른손 좌표계의 차이는 +z의 방향의 차이가 있다. 위 사진에서 보는 것 처럼 왼손 좌표계의 +z의 방향은 앞이지만 오른손 좌표계의 +z의 방향은 뒤라고 할 수 있다. 좀 더 이해하기 쉽게 설명하자면 플레이어가 바라보는 방향이 +z이면 왼손, 플레이어가 바라보는 방향으로 들어오는게 +z이면 오른손 이라고 할 수 있다. DirectX는 왼손 좌표계를 사용하고 OpenGL은 오른손 좌표계를 사용한다. 이 ..
-
Normalized Device Coordinate카테고리 없음 2019. 12. 19. 10:45
NDC(Normalized Device Coordinate)란 정규화 된 좌표계로 플레이어는 모니터로 게임의 화면을 본다. 따라서 결국 플레이어가 보는 화면은 2D인 2차원이다. 게임의 공간이 3D여도 결국 랜더링을 통해 2D로 변환 되는데, 이러한 변환을 투영이라 한다. 투영 변환을 통해 보는 화면, 위 사진에서는 View Plane이라 되어있고 실제 플레이어가 보는 화면이라 생각하면 된다. 그렇게 3D 물체가 투영 변환을 통해 2D 공간에 변환 되면서 가지는 좌표계를 NDC라고 한다. 위 사진에서 NDC의 범위는 -1 ~ 1로 되어있는데 이 범위는 OpenGL에서 범위이며 DirectX에서는 범위가 0~1이다. [OpenGL에서는 왼손 좌표계를 사용하며, DirectX에서는 오른손 좌표계를 사용한다...
-
투영 행렬 유도하기이러저런 이야기 2019. 12. 19. 10:45
투영 변환이란 왼쪽 그림에서 보는 것 처럼 빨간색 영역은 카메라가 비출수있는 공간이다. z=near 가 근평면, z=far 가 원평면이라 하는데 카메라의 시야각에 따라 이 공간은 달라진다. 이 공간을 오른쪽에 보이는 그림과 같은 공간으로 변환 하는 것을 투영 변환이라 한다. 그림과 같이 모니터 화면을 가로, 세로의 크기가 2인 사각형으로 정규화시켜 작업하는데, 이렇게 정규화된 좌표계를 NDC(Normalized Device Coordinate)라고 한다. NDC는 변환되면 다음과 같이 가로, 세로의 크기가 2인 좌표 시스템을 가진다. 뷰스페이스의 점 P(x,y,z) 를 (-1,-1,0) ~ (1,1,1) 로 표현되는 공간상의 점 Q(X, Y, Z) 로 변환한다고 할 때 점P의 x가 점Q의 X로 변환되는 ..
-
점이 삼각형 내부에 있는지 외부에 있는지 판별이러저런 이야기 2019. 12. 19. 10:45
점 A, B, C로 구성된 삼각형이 있을 때 임의의 점 P가 삼각형 내부에 있는지 외부에 있는지의 판별은 벡터의 외적의 응용이라 할 수 있다. 먼저 기본 조건으로 점 A, B, C로 구성된 삼각형은 점 A, B, C의 순서가 반시계 방향으로 정렬이 되어있어야 한다. 정렬이 되어있다면, 저번 시간에 벡터 내적과 외적을 이용한 왼쪽 오른쪽 판별을 통해 임의의 점 P가 내부[왼쪽]에 있는지 외부[오른쪽]에 있는지 알 수 있다. 먼저 삼각형[평면]의 수직인 벡터인 법선 벡터를 구한다. 세 점을 알고 있기 때문에 법선 벡터는 평면의 방정식[삼각형의 선분 AB, BC, CA 중 두 벡터를 외적하면 평면의 수직인인 벡터 법선 벡터를 구할 수 있다.]을 통해 알 수있다. 그 다음 선분 AB, AP의 벡터를 외적한 뒤에..
-
백스페이스 컬링이러저런 이야기 2019. 12. 19. 10:45
백스페이스 컬링이란? 그래픽스 파이프라인의 한 단계의 속하며 "컬링" 단계에서 이뤄진다. 컬링은 최종 씬에서 보이지 않은 불필요한 폴리곤을 잘라내 랜더링 및 연산에서 제외시키는 작업이다. *클리핑이랑 컬링은 다르다. 클리핑은 시야에서 벗어난 물체[폴리곤]를 그리지 않거나, 시야에 걸친 폴리곤을 잘라내는 것을 말한다. 클리핑은 단순히 그리기에 대한 예외 처리라서 연산은 적용이 된다. [클리핑은 연산이 되지만, 컬링은 연산이 이뤄지지 않는다.] 화면에 보이지 않지만 움직이고 있는 몬스터를 그릴 때 클리핑을 하면 연산을 하지만, 화면에 보이지도 않고, 움직이지도 않는 몬스터는 그릴 때 컬링으로 연산을 제외시킬 수 있다.