하나를 선택하세요. 1. 사람의 눈과 유사하게 표현하기 위하여 형태와 함께 눈의 홍채와 수정채의 기능을 모델링한 가상 카메라 2. Projection 모델의 단순화를 위하여 렌즈가 없고 빛이 한점으로 만 통과하여 상이 맺히는 카메라 모델 3. 카메라에 Pin으로 구멍을 뚫은 것과 같이 가상으로 모델링한 것 4. 카메라를 Pin 을 꽂은 것 처럼 작게만든것으로 가상 카메라를 설정하는 것
A. 2. Projection 모델의 단순화를 위하여 렌즈가 없고 빛이 한점으로 만 통과하여 상이 맺히는 카메라 모델
Pin hole 카메라 모델은 실제로 렌즈가 없고 빛이 한 점으로만 통과하여 이미지가 형성되는 모델입니다. 이 모델은 렌즈의 복잡한 굴절을 단순화하여 이미지를 투영하는 방식을 모델링합니다. 렌즈가 없기 때문에 렌즈의 굴절, 즉 렌즈에 의한 왜곡이나 흐림이 없으며, 모든 점이 빛이 집중되는 하나의 점으로 투영됩니다. 이러한 점에서, 렌즈 없이 단순한 방식으로 이미지를 형성하는 Pin hole 카메라 모델이라고 할 수 있습니다.
2) Pin hole 카메라 모델의 Projection 식은 삼차원상의 점 (x,y,z) 는 영상면의 점 (x', y') 으로 투영될때촛점에서 상까지의 거리를 d 라 하면,x' = -d x/z , y' = -d y/z 이다. z 값이 커지면 투영되는 상은 어떻게 변화하는 가? 맞는 말을 모두 고르시오
하나를 선택하세요. 1. 투영되는 상은 z가 커짐에 따라 크기가 커진다. 2. 투영되는 상은 z가 커짐에 따라 거리가 멀어지므로, 흐릿해진다 3. 투영되는 상은 z가 커짐에 따라 맺히는 상은 상하/좌우가 뒤집힌것에서 좌우는 정상으로 돌아온다. 4.투영되는 상은 z가 커짐에 따라 크기가 작아진다.
A. 1. 투영되는 상은 z가 커짐에 따라 크기가 커진다.
물체가 카메라에서 멀어질수록(z 값이 커질수록) 투영되는 영상의 크기는 커지게 됩니다. 이것은 Pin hole 카메라 모델의 Projection 식에서 x'와 y'의 값이 z에 비례하기 때문에 발생합니다. 즉, \( \frac{x'}{z} \)와 \( \frac{y'}{z} \)의 비율이 변하지 않고, z가 커질수록 x'와 y' 값이 증가하여 투영되는 영상의 크기가 커지는 것입니다.
3) Convex 다각형의 정의를 기술하고, 컴퓨터 그래픽스에서 Convex 다각형을 사용하는 이유를 간단히 설명하시오.
A. Convex 다각형은 내부의 모든 점을 연결한 선분이 다각형 내부에 있고, 임의의 두 점을 선택했을 때 그 사이를 직선으로 잇는 선분도 다각형 내부에 있는 다각형을 말합니다. 즉, 다각형 내부로 들어가면서 외부로 나오지 않는 형태를 가집니다.
컴퓨터 그래픽스에서 Convex 다각형을 사용하는 이유는 여러 가지가 있습니다. 먼저, Convex 다각형은 그 형태가 단순하고 규칙적이기 때문에 처리가 간단하고 빠릅니다. 또한, Convex 다각형은 교차점이나 내부 점이 없어서 처리 과정에서 복잡성을 줄여줍니다. 이러한 특성으로 인해 컴퓨터 그래픽스에서는 Convex 다각형을 충돌 감지, 클리핑, 폴리곤 채우기 등의 작업에 주로 활용합니다.
4) Scan-line Fill-in 방법과 Flood-Fill 을 비교하여 다음을 답하시오. 1. Concave 에 동작하는 방법을 고르시오. 2. Fill-in에 메모리가 적게 소요되는 방법을 선택하고 그 이유를 설명하시오.
A. 1. Concave에 동작하는 방법은 Flood-Fill입니다. Concave 영역은 내부에 빈 공간이 있거나 내부에서 다른 지점으로 접근할 수 없는 형태를 말합니다. Flood-Fill은 시작점으로부터 연속된 색상이나 패턴이 있는 영역을 채우는 방법으로, Concave 영역을 채울 때에도 내부를 완전히 채울 수 있습니다.
2. Fill-in에 메모리가 적게 소요되는 방법은 Scan-line Fill-in입니다. Scan-line Fill-in은 한 번에 한 줄씩 스캔하면서 채우는 방식으로, 메모리 사용량이 Flood-Fill에 비해 적습니다. 이는 Flood-Fill이 재귀적으로 호출되어 스택 메모리를 많이 사용하는 반면, Scan-line Fill-in은 각 스캔 라인마다 적은 양의 메모리만 필요하기 때문입니다.
5) 화면에 표시되는 좌표는 Screen 좌표계를 사용한다. 컴퓨터 그래픽스에서 정규좌표계를 사용하는 이유를 간단히 설명하시오.
A. 정규좌표계는 컴퓨터 그래픽스에서 사용되는 좌표 시스템 중 하나로, 그의 -1에서 1까지의 범위로 편의성과 단순성을 제공합니다.
중심이 원점에 있어 계산이 간단하며, 다양한 디스플레이 장치에 적용하기 용이합니다. 또한 수학적으로 다루기 쉬워 벡터와 행렬 연산을 통해 다양한 그래픽 작업을 수행할 수 있습니다.
6) World 좌표계로 표시된 좌표를 정규화된 Normalized 좌표계로 변경하기 위하여 Pin-hole Camera 를 사용한다면 어떻게 해야 할까? 맞는 방법을 고르시오.
하나를 선택하세요. 1. Pinhole Camera의 d를 -1로 설정한다. 2. Pinhole Camera의 d를 1로 설정한다. 3. Pinhole Camera의 상의 크기를 2x2 로 설정한다 4. Pinhole Camera로는 할수 없다.
A. 3. Pinhole Camera의 상의 크기를 2x2 로 설정한다
7) Pinhole Camera Projection의 결과가 정규화 좌표계로 표현될때 맞는 설명을 모두 고르시오.
1.화면의 상을 확대하기 위하여는 (Zoom-in) Projection 거리 d 를 크게하면 된다. 2. 화면의 상을 확대하기 위하여는 영상면의 크기를 키우면 된다. 3. 화면의 상을 확대하기 위하여는 (Zoom-in) Projection 거리 d 를 작게하면 된다. 4. 화면의 상을 확대하기 위하여는 영상면의 크기를 줄이면 된다.
A. 1. 화면의 상을 확대하기 위하여는 (Zoom-in) Projection 거리 d 를 크게하면 된다.
Quiz 2
1.A.
Pin-hole Camera Model : 원근 투영을 위한 기본 계산 모델
Primitive Processing : 점들을 모아 선/면의 형태로 구성하는 작업을 하는 곳
프레임 버퍼 : 화면에 출력될 정보를 모두 저장하고 있는 곳
Homogenous Coordinate : 투영시 상하가 바뀌어 뒤집히는 현상을 해결하기 위한 모델
2. A.
3,4
Depth - sorting
Quiz 3
A. x' = T * R * inv(T) * x
(c가 원점으로 이동하고 회전) x' = Rx (원점 중심으로 회전)
R : 원점을 중심으로 한 R x를 먼저 원점으로 가져와야 함
A. 1. T*T*T*T*o 2. R*T*T*T*T*o 3. R2*T*T*T*T*o
Q3. 다음은 물체를 그리기위한 OpenGL code 의 일부이다. 이때 물체 A 를 그리고자 하였는데, B가 그려진 결과가 나왔다. 그 이유를 간략히 설명하고, 수정된 코드를 제시하시오. 아래 코드에서 verticesA 배열은 물체 A를 위한 꼭지점의 위치를, verticesB 배열은 B를 위한 꼭지점의 위치를 갖고 있다. 두 배열은 모두 점 100개를 갖고 있는 배열이다.
이유 :
이 코드에서 문제는 glBindBuffer 함수를 호출할 때 누락된 매개변수 때문에 발생합니다.
glBindBuffer 함수는 버퍼를 바인딩할 때 사용되며, 첫 번째 매개변수는 바인딩할 대상을 나타내는 GLenum 값입니다.
이 값을 GL_Array_Buffer 로 설정하여 배열 버퍼를 바인딩해야 합니다.
그러나 renderscene 함수에서 glBindBuffer를 호출할 때 누락된 이 매개변수로 인해 제대로 된 동작이 이루어지지 않습니다.
대신에 바인딩된 버퍼의 인덱스가 함수에 전달되고 있습니다. 이로 인해 예기치 않은 동작이 발생할 수 있습니다.
수정된 코드에서는 glBindBuffer 호출에서 누락된 매개변수를 추가하여 이 문제를 해결할 수 있습니다.
또한 glBindBuffer 호출 후에glVertexAttribPointer, glEnableVertexAttribArra를 호출하는 것이 좋습니다.
이를 통해 각 버퍼에 대한 정점 속성 포인터가 제대로 설정되고 활성화됩니다.
수정된 코드 :
void renderScene(void)
{
...
glBindBuffer(GL_ARRAY_BUFFER, buffers[0]);
glVertexAttribPointer(posLoc, 3, GL_FLOAT, GL_FALSE, 0, (void*)(0));
glEnableVertexAttribArray(posLoc);
glDrawArrays(GL_TRIANGLES, 0, 100);
...
}
Quiz4
1.
A. 1, 5
2.
A : 1, 4
2023년 중간 족보
1. A : z가 커짐에 따라, 상의 크기가 작아진다. C : 투영되는 상은 상하/좌우는 뒤집힌 채로 그대로이다. E : 투영되는 상은 d가 커짐에 따라 크기가 커진다.
2. 1. **Vertex Processing (정점 처리)**: - 특징: 입력된 3D 모델의 각 점을 변환하여 위치와 특성을 결정합니다. - 기능: 이동, 회전, 크기 조절 등의 변환을 적용하고, 조명과 재질을 계산합니다.
2. **Primitive Assembly (기본 구조 조립)**: - 특징: 정점들을 기본적인 도형(삼각형 등)으로 결합합니다. - 기능: 선과 면을 형성하고, 세부적인 그래픽 요소를 보간하여 구성합니다.
3. **Fragment Shader (프래그먼트 쉐이더)**: - 특징: 각 화면 픽셀에 대한 색상과 속성을 계산합니다. - 기능: 조명, 그림자, 텍스처 매핑 등의 시각적 효과를 추가합니다.
4. **Rasterizer (래스터라이저)**: - 특징: 3D 그래픽을 2D 이미지로 변환합니다. - 기능: 래스터 이미지를 생성하고, 정확한 픽셀 위치를 계산합니다.
5. **Frame Buffer (프레임 버퍼)**: - 특징: 최종 이미지를 저장하는 메모리 영역입니다. - 기능: 래스터화된 이미지를 저장하고, 화면에 출력하기 위해 사용됩니다.
3. 화면 해상도가 높고 객체 수가 적을 때에는 Depth-sorting. Depth-sorting은 뎁스 버퍼를 사용하지 않고도 객체를 정렬할 수 있어 메모리 절약에 도움이 되며, 소팅 및 상호 교차 처리가 간편하기 때문입니다.
4. 1. T*T*T*T*o 2. R*T*T*T*T*o 3. R2*T*T*T*T*o
5. a,e
6. a) Polling 방법은 주기적으로 입력 장치를 폴링하여 입력 상태를 확인하는 방식이며, Event driven 방법은 입력 장치로부터 이벤트가 발생할 때만 이를 처리하는 방식이다.
이 문제를 해결하는데는 Event driven 방법이 더 적합할 것으로 판단된다. 이유는 다음과 같다. - 입력 이벤트가 발생할 때만 처리하므로 자원을 효율적으로 사용할 수 있다. - 실시간으로 입력을 처리할 수 있어 사용자 경험을 향상시킬 수 있다.
b) 단계 1) Locator: 사용자의 입력(마우스의 위치)를 감지하고 해당 위치를 변수에 저장합니다. 단계 3) Picker: 저장된 마우스 좌표와 모든 점들 간의 거리를 계산하여 가장 가까운 점을 선택합니다.
카메라가 (xc, yc, zc) 위치에 있을 때 투영면이 z = k + zc 일때를 구하시오
이렇게 되면 A는 (투영된 좌표는 x' = (x-xc)*k/(z-xc) 와 같이 된다.)
1 0 0 -xc
0 1 0 -yc
0 0 1 -zc
0 0 0 (z-zc)/k
가 되고 이를 다시 쓰면
1 0 0 -xc
0 1 0 -yc
0 0 1 -zc
0 0 1/k -zc/k
Q1. Perspective Projection 행렬을 구하시오 Perspective Projeciton 행렬 A 는 카메라가 (x, y, z) 의 위치에서 z 방향을 바라보고 있을때 투영면이 z = k 위치일때의 투영행렬이다. 이를 구하시오.
A1. 1 0 0 -x 0 1 0 -y 0 0 1 0 0 0 1/k -z/k
Q2. Perspective Projection 행렬을 구하시오. Perspective Projeciton 행렬 B 는 카메라가 (0, 0, 0) 의 위치에서 z 방향을 바라보고 있을때 투영면이 z = k 위치일때의 투영행렬이다. 이를 구하시오.
A2. 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1/k 0
Q3. Perspective Projection 행렬을 구하시오. Perspective Projection 행렬 A 를 B 와 View Transform 행렬 C 를 이용하여 구하시오.
a. C는 카메라를 (0,0,0) 에서 (x,y,z) 로 이동시켰을때의 View Transform 행렬이다. 이떄 (x,y,z) 로의 이동행렬을 T 라하면 C 는 어떻게 표현되는가?
b. A 를 B와 C의 조합으로 표시하시오. 그리고 그 결과가 같음을 보이시오.
A3. a) T의 역함수
b) A = B x C
C = 1 0 0 -x 0 1 0 -y 0 0 1 -z 0 0 1/k -z/k
B = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0
C x B = 1 0 0 -x 0 1 0 -y 0 0 1 -z 0 0 1/k -z/k
Q4. 앞에서 구한 Projection 행렬에서 Zoom 을 하기 위하여는 어떤 파라메터를 어떻게 변경하여야 하는가? 설명하시오.
A4. C x B = 1 0 0 -x 0 1 0 -y 0 0 1 -z 0 0 1/k -z/k
k를 키우면 Zoom 된다
Q5. 물체가 -10 부터 10 까지 분포되어 있다. 이들을 모두 보이게 하기위한 카메라 위치를 구하시오.
Pespective Projection 을 사용하며, 카메라는 +z 방향을 바라보고 있다. FoV 는 X,Y 축 방향 모두 90도 이다.
A5. 0, 0, -10
Quiz 6
Q1) 카메라가 원점으로 부터 행렬 T 만큼 떨어진위치에 행렬 R이 표시하는 방향을 바라보고 있다. 이떄 다음을 위한 View Transform 행렬을 구하시오.
1) Panning: 카메라가 좌우로 회전하면서 보는 것. 이때 회전양을 R1 이라 하자. 2) Zoom: 카메라의 상을 키우는 것. FoV를 줄일수도 있으나, 이때는 카메라가 T1 만큼 이동하여 비슷한 효과를 낸다고 하자. 3) Track: 현재 위치에서 시간 i 일때 R(i) 만큼 방향을 변화시키고, T(i) 만큼 카메라를 이동하는 것
A. R1(-1) x R -1 x T
T-1 x R-1 x T -1
(T(i) x T x R x R(i))-1
2) 물체 A 는 원점에서 MA 만큼 transform 된 위치에 있다. 이때 다음을 위한 카메라의 위치와 방향을 구하시오.
1) A 를 중심으로 반지름 r 만큼 떨어진곳에서 A 를 바라보며 회전하는 카메라. 이때 카메라는 xz 평면과 평행한 평면에 위치하고 있고, y 축에 평행한 축을 중심으로 회전한다. 이 회전이 원점중심으로 일어날내의 회전양을 R 이라하고 Z 축으로 r만큼 이동하는 행렬을 T라 할때 카메라의 위치와 방향을 구하시오. 카메라의 초기 방향은 +z 방향을 바라보고 있다.
2) 현재 위치에서 제자리 회전하는 카메라. 현재의 카메라 위치는 Mv 로 표시된다. 이때 회전양을 Rv 라 할때의 카메라 위치를 구하시오.
3) 1)와 2)에서의 View Transform 행렬을 구하시오.
A 1. (Ma x R x (-T))-1 2. (Mv x R)-1 3.
3) Clipping 을 하는 이유로 맞는 것을 모두 고르시오. 하나 이상을 선택하세요. 1. 보이지 않는 면을 그리지 않기 위하여 Clipping 한다. 2. 보이는 부분에서 누락되는 것을 방지하기 위하여 Clipping 을 수행한다 3. Clipping 을 통하여 보이는 부분을 고해상도로 그리게 된다. 4. Clipping 은 Fragment Shader 이전에는 수행할 수 없다.
A3) 1번, 2번
Q4) Stencil Buffer 를 이용하여 특정 색을 지우는 지우개 (흰색으로 특정 색의 영역만을 겹쳐그리는) interface 를 만들고자 한다. 이를 위하여 Fragment Shader 는 다음의 알고리즘으로 구성된다.
Phase 1: Stencil function 을 ( GL_ALWAYS , 1, 1), StencilOp 를 (GL_KEEP, GL_KEEP, GL_KEEP) 으로 한다. 화면을 clear 하고 Draw 한다. a. 모든 점을 정상적으로 그린다.
Phase 2: Stencil function 을 ( [A] , 1, 1), StencilOp 를 (GL_KEEP, GL_KEEP, GL_INCR) 으로 하고, Depth function 을 GL_LEQUAL 로 한다. 화면을 clear 하지 않고 Draw 한다. a. Fragment의 색이 특정색이 아니면 그리지 않는다. b. 색이 특정색이면 정상적으로 점을 그린다.
Phase 3: Stencil function 을 ( [B] , 0, 0xff), StencilOp 를 (GL_KEEP, GL_KEEP, GL_KEEP) 으로 하고, 지우개의 궤적을 Draw 한다. 이때 화면을 clear 하지 않는다. a. 정상적으로 지우개의 점을 그린다.
1. [A] 에 들어갈 판정식은 무엇인가? 2. [B] 에 들어갈 판정식은 무엇인가? 3. Phase 1, 2, 3중 실제 Frame buffer 에 그려지는 단계는? 4. Phase 1, 2, 3중 Depth buffer 를 그리는 단계는? 5. Phase 1, 2, 3중 Stencil buffer 에 특정색에 해당되는 mask를 만드는 단계는?
A4) 1. [A] 에 들어갈 판정식은 무엇인가? - `GL_ALWAYS` 2. [B] 에 들어갈 판정식은 무엇인가? - `GL_NOTEQUAL` 3. Phase 1, 2, 3중 실제 Frame buffer 에 그려지는 단계는? - Phase 1, 2, 3 모두 실제로 Frame buffer에 그려지는 단계입니다. 4. Phase 1, 2, 3중 Depth buffer 를 그리는 단계는? - Phase 1 5. Phase 1, 2, 3중 Stencil buffer 에 특정색에 해당되는 mask를 만드는 단계는? - Phase 2
Quiz 7
Q1) Gouraud Shading 기법을 사용하여 Phong Shading 과 유사한 효과를 내려한다. 가능한가? 가능하다면 그 방법을 간단히 설명하시오. 가능하지 않다면 그 이유를 간단히 설명하시오.
A1) 가능하다. 이를 위해서는 Gouraud Shading의 보간된 색상 값에 추가적인 픽셀 단위의 조명 계산을 적용하여 보다 정밀하고 현실적인 결과를 얻을 수 있습니다.
Q2) Phong Lighting Model 은 반사를 Ambient, Diffuse, Specular 로 구분하여 표현하는 방식이다.
이중 물체의 원래의 색을 표현하기에 가장 적합한것을 하나 골라 그 이유를 설명하시오. (예: 붉은색 종이는 Ambient, Diffuse, Specular 중 어느 반사특성이 붉은 색이어야 하는가?)
A2) 2개 이상 고르면 Ambient, Diffuse 하나만 고르면 Diffuse = 반사 효과 때문에
Diffuse 반사 : 물체의 색상을 결정짓는 주된 요소로, 표면의 형태와 빛의 각도에 따라 다르게 반사됩니다. Ambient 반사 : 주변 조명에서 물체가 받는 일반적인 색조를 나타내어 물체의 전반적인 색감을 부드럽게 표현합니다.
Q3) 렌더링 단계에서 Pespective Division (원근 분할) 은 좌표 (x,y,z,w) 에서 projection 을 위한 w를 z/d 로 하여 최종 결과가 (x' = d*x/z, y' = d*y/z, z' = d, w = 1.0) 으로 만드는 단계이다.
1. w 가 z/d 일때, Raterizer 에서 (x,y,z) 을 대상으로 보간한다. 2. perspective division 을 하여 Rasterizer 에서 (x', y', z') 으로 보간한다.
두 경우중 Distortion이 적은 경우는 어느 경우인지 정하고 설명하시오.
A3) perspective division이란? : 3D 공간의 객체를 화면에 투영할 때 사용하는 변환 과정이다. 1번이 더 Distortion이 적음
1번 보간 => 투영 2번 투영 => 보간
보간은 vertex의 위치를 기반으로 중간의 pixel 들을 생성하기 위한 것이다.
보간을 x', y', z' 에서 하는 것 (영상면상의 점을 대상으로 하는 것), x, y, z 를 대상으로 하는 것 (3차원 상의 점의 위치를 영상면상에서의 각 pixel 대상으로 보간하는 것)을 비교할 때 x, y, z를 대상으로 하는 것이 왜곡이 훨씬 적다는 것이다.
이는 원래의 깊이 값 \( z \)가 그대로 유지되기 때문에, 보간 과정에서 선형적인 변화가 일어나며, 이로 인해 화면에 표시되는 결과가 더 정확하고 왜곡이 적습니다.
Q4) 아래 그림과 같이 cube를 Phong Shading으로 그리려고 한다. 이때 각 면의 경계는 명확하게 구분된 edge로 sharp하게 (부드럽지 않게) 표시되어야 한다. 이렇게 그리기 위하여 OpenGL의 vertex buffer에 주어야 하는 vertex의 개수는 몇 개인가? 이때 element buffer (index)를 사용하여 필요한 vertex의 개수를 최대한으로 줄인 방법을 고안하고 설명하시오.
A4) 24개
6면체의 각 면을 구성하는 2개의 삼각형에 대하여 index를 사용하면 된다. 그러면, 각 면당 4개의 vertex * 6 면 = 24개 vertex (위치, 색상, 법선베거 포함) 과 36개의 index가 필요하다. 이를 6개의 triangle strip 으로 표현하면 4 * 6 면 = 24개의 index가 필요하다
각 면을 삼각형으로 나눌 때, 정점을 최소화하고자 인접 면 사이에서 정점을 공유하여 중복을 줄입니다. 예를 들어, 한 면을 두 개의 삼각형으로 나누는 경우에도 정점을 중복 사용하지 않고, index buffer를 통해 삼각형의 정점 순서를 지정하여 필요한 vertex의 개수를 최대한 줄이는 방법입니다.
Q5) 다음의 광원 특징에 대하여 맞는 광원을 Ambient Light, Directional Light, Point Light, Area Light 에서 선택하시오.
1. Hard Shadow 를 만드는 광원 [#1] 2. 물체와의 거리가 변화함에 따라 Phong Lighting Model의 결과가 바뀌는 광원 [#2] 3. Shadow 가 생기지 않는 광원 [#3] 4. 물체가 회전하지 않고 이동만 하는경우 경우 Shading 결과가 바뀌지 않는 광원 [#4]
1. Direction Light, Point Light 2. Point Light, Area Light 3. Ambient Light 4. Directional Light
1. **Ambient Light (주변광)**: - 전체 장면에 일정한 밝기를 제공. - 그림자를 채우는 역할. 2. **Directional Light (방향광)**: - 한 방향에서 평행하게 빛을 발산. - 멀리 있는 광원을 모델링하고 Hard Shadow를 만듦. 3. **Point Light (점광)**: - 특정 점에서 모든 방향으로 빛을 발산. - 거리에 따라 빛의 강도가 감소하며 부드러운 그림자 생성. 4. **Area Light (면광)**: - 특정 표면 영역에서 빛을 발산. - 정교한 그림자와 자연스러운 조명을 제공. 이 간단한 설명을 통해 각 광원의 주요 특징과 사용 목적을 이해할 수 있습니다.
Quiz 8
Q1) 아래 그림과 같이 Texture 이미지가 나왔다. 각각에 대한 Filtering 방법을 Nearest, Linear, MipMap 중에서 고르고 설명하시오
1) 영상 12) 영상2
A)
1) Nearest 뒤로 갈수록 모아지는 현상이 일어나기 때문
2) MinMap 뒤로 가면 합쳐져서 회색이 됨
Min map 은 뒤로 가도 잘 보임 : 정사각형으로 함
Anisotropic 이 제일 잘 보임
Q2) 다음 그림에 대하여 적합한 Texture Addressing 방법을 선택하고 설명하시오.
왼쪽 부터 1) 2) 3) 4)
A) Wrap, Clamp, Mirror, Border
1. repeat 2. mirror 3. clamp 4. Border
Q3) 다음 그림은 왼편의 2장의 Texture를 조합하여 오른편의 영상을 만든 경우이다. 이때 사용되는 Fragment Shader의 코드를 간략히 적으시오. 특히 Texture 계산 부분만 상세히 적으면 됨
Q4) Texture Mapping은 Texture Image를 다각형 Mesh에 입히는 과정이다. 이때 사용되는 Filter에는 Nearest, Linear, Mipmap, Anisotropic Filter 등이 있다. 아래 각 경우에 대하여 적합한 방법을 선정하고 그 이유를 간략히 설명하시오. i. 2048x2048 크기 텍스쳐 이미지를 입힌 물체를 640x480 해상도 화면에 그리는 경우 ii. 64x64 크기 텍스쳐 이미지를 1920x1080 해상도 화면을 가득 채우는 물체에 입히는 경우 iii. 64x64 크기 텍스쳐 이미지가 경계가 분명한 Checker board 이미지 일 때, 이를 65x65 크기의 물체 면에 입히는 경우
A)
1) mip map 4배 , 5배 = 20 개
2) linear mip map 은 안됨
3) nearest 조금 큰 거에 텍스쳐 매핑 명확한 경계 nearest 모든 texture 에 적합한 방식은 없음 => 그래서 이중에 골라야 함 GPU 가 좋으면 고해상도로 다 적용하면 됨