본문 바로가기
대학생활/수업

게임그래픽프로그래밍 10주차 - 도형 그리기와 칠하기

by se.jeon 2023. 5. 15.
728x90
반응형

기본 도형

기본 도형의 종류

- 점

- 직선 (선분)

- 삼각형

- 사각형

- 원

 

기본 도형

- 3D 그래픽스 프로그래밍에서 기본 도형은 복잡한 그래픽 모델들을 표현하기 위해서 필요한 기본 단위이다.

- 대부분의 3D Graphic API에서 Point, Triangle, Line에 대한 기본 구현을 제공한다.

- Triangle : 게임 프로그램에서 대중적인 3D 그래픽 표현 기본 단위.

- Point : 포인트 클라우드를 통해서 3D 그래픽 표현을 진행.

- 3D 오브젝트들은 삼각형으로 이루어져 있다.

 

Triangle vs Point

게임 프로그래밍에서는 주로 전자를 사용한다.

Point의 경우 AR에서 많이 사용한다.

 

점과 선 그리기

의 정의 : 공간상에 위치한 한 지점

픽셀의 정의 : 디지털 이미지의 가장 기본 단위이며, 사각형 모양의 단일 색상요소.

래스터화 (Rasterization) : 한 점을 화면에 표현하는 픽셀로 바꾸는 과정. 화면 좌표계를 통해서 화면에 픽셀을 표현한다.

점 그리기 : 직교 좌표계로 점 표현 > 화면 좌표계로 변환 > 화면 좌표계에서 레스터화.

 

직선의 정의 : 두 점 사이에 놓여있고 양 끝이 무한히 뻗어 있는 점들의 연속성을 가진 도형

직선 그리기 : 화면 좌표계에서 시작점과 끝점을 지정하고 그 사이를 연속된 픽셀로 그리기.

브레젠험 알고리즘 : 대표적인 직선 그리기 알고리즘. 정수만을 이용하므로 속도가 빠르고, 계산량이 적다.

  - 직선을 화면에 그리기 위해서는 두 점의 위치가 필요하다.

  - 두 점을 지나는 직선의 방정식 구하기

  - y = ax + b (a는 기울기, b는 y절편)

  - 기울기 a 구하기

- 브레젠험 알고리즘에서는 x, y축 중에서 변위가 큰 축을 기준으로 1씩 증가시켜 다른 축의 가장 근접한 정수 값을 찾음

- 정수만을 사용하도록 식의 변경이 필요하다.

 

- 델타 x는 무조건 양수.

- 델타 x와 y는 상수.

- 간격을 알아내기 위하여 Pk+1 - Pk를 해 준다.

 

삼각형 그리기와 칠하기

삼각형 그리기

- 게임에서 구성되어 있는 오브젝트들은 모델 데이터를 통해서 구성됨.

- 모델 (Model) 데이터는 메쉬 (Mesh) 데이터로 구성.

- 메쉬 (Mesh) 데이터는 폴리곤 (Polygon) 으로 구성.

- Model Data : 오브젝트들의 모습과 색상 정보 포함.

- Mesh Data : 정점 정보와 정점들을 통해 삼각형을 구성하는 연결 정보 포함.

 

- Polygon은 대부분 그래픽스에서는 삼각형을 칭한다.

- 삼각형은 3개의 점을 기반으로 구성된다.

- 3개의 점을 이용해서 3개의 선분을 직선 그리기로 구현한다.

- V1, V2, V3일 경우 V1V2, V2V3, V3V1을 직선 그리기로 구현한다.

 

삼각형 단색 칠하기

- 삼각형 내부를 칠하는 방법은 삼각형의 3점을 이용.

- 스캔라인(Scanline) 알고리즘이 대중적이다.

- 삼각형을 이루는 세 점에 대해서 y축을 기준으로 오름차순 정렬.

 -> V1, V2, V3에서 정렬 후에는 V3이 높이 값이 가장 높음.

 -> 스캔라인 방향은 가로이므로 y축이 1만큼 변할 때 x축의 변화량이 필요하다.

 -> 스캔라인 알고리즘의 핵심은 쪼개는 것.

 -> 정렬을 한다.

 

- 삼각형 처리 시 예외상황의 고려가 필요하다.

- y값의 우선 순위는 변하지 않는다.

- 상단 혹은 하단 삼각형에서 구한 Xstart, Xend 두 값 중에 작은 값을 Xleft, 큰 값을 Xright로 대입한다.

- Xleft부터 Xright까지 선분을 그린다.

 

사각형 그리기와 칠하기

사각형 그리기

- 4개의 점을 이용해서 해당 4개의 선분을 직선 그리기로 구현.

- 입력 값 : 시작점, width, height

사각형 칠하기

- 사각형 단색을 칠할 때는 그리기와 동일하게 4개의 점 확인 필요.

 

원 그리기와 칠하기

원 칠하기

- 원 단색을 칠할 때는 중심점, 반지름, 색깔 필요.

- 원을 감싸고 있는 사각형 안에 있는 점들이 원 안에 있는지 확인.

- 중심점과 해당 점들의 거리를 반지름과 비교해서 작으면 원 내부.

 

실습 진행.

728x90
반응형