컴퓨터 그래픽스(OpenGL) 코드제외, 개념 기말고사 예상문제 / 답안
교재 : 수업시간의 HAND OUT / 부 교재(교안 참고서적) : Computer Graphics with OpenGL, Prentice Hall
(작성자 학교의 시험 예상문제이고, 작성자가 직접 작성한 예상문제와 답입니다.)
<<6장,7장>>
**1. 렌더링 파이프라인의 전체적 과정을 설명하시오. 그림 상의 모든 항목들을 빠진 항목이 없도록 하여 일련의 과정을 서술하시오.
**2. 모델뷰 매트릭스에는 어떤 행렬들이 저장 되며, 이 매트릭스는 어떤 역할을 하는가.
- 모델뷰 매트릭스는 모델링 변환 매트릭스와 뷰잉 변환 매트릭스를 결합한 매트릭스이다.
이 매트릭스는 객체의 MC 모델좌표계(로컬좌표계)를 WC 월드좌표계로 변환 한 후 VC 카메라 좌표계로 변환하는데 사용된다. 모델링 변환은 객체의 이동, 회전, 스케일링 변환이다.
**3. 프로젝션 매트릭스에는 어떤 행렬들이 저장 되며, 이 매트릭스는 어떤 역할을 하는가.
- 프로젝션 매트릭스는 투영변환과 정규화, 클리핑을 수행한다. 투영 변환은 투영 방식에 따라 직교투영, 원근투영 행렬이 다르기 때문에 프로젝션 매트릭스가 차이가 생긴다.
**4. 렌더링 파이프라인의 투영변환(Modeling Transformation)과정 중 평행 투영(직교투영)과 원근투영의 차이는?
우선 뷰볼륨의 차이가 있다. 평행투영(직교투영)은 원근감이 적용되지 않은 가상의 투영방식이다. 그렇기 때문에 뷰 볼륨이 직육면체이다.
원근투영은 원근감이 적용된 현실과 비슷한 투영방식이다. 먼저 3D공간의 객체를 한 점인 수렴 포인트로 수렴시키고, 그 사이에 뷰 평면을 위치시켜 투영하는 방식이다.
때문에 뷰 볼륨은 피라미드형태에서 윗 꼭지부분에 작은 피라미드를 제거한 형태이다.
**5. 직교투영에서 정규화 행렬을 3개 행렬의 곱으로 표현하고, 각 행렬이 어떤 역할을 하는지 서술하시오.
-
**6. 원근투영에서 정규화 행렬을 2개 행렬의 곱으로 표현하고, 각 행렬이 어떤 역할을 하는지 서술하시오.
7. 직교투영방식과 원근투영방식에서 최종 정규화 행렬은? (1개의 행렬로 표현하시오/4,5번 행렬곱 결과 매트릭스임.)
**8. 직교투영 정규화행렬과 원근투영 정규화 행렬이 뭐가 다른가?
9. 뷰포트 변환행렬을 행렬 2개의 곱으로 표현하고, 각각 행렬이 어떤 역할을 하는지 서술하시오.
10. 9번에서 구한 2개곱 형태의 뷰포트 변환행렬을 계산하여 최종 뷰포트 변환행렬을 적으시오.
11. 클리핑을 왜하는가?
클리핑은 렌더링할 필요가 없는, 관측공간에 포함되지 않는 객체를 제거하여 렌더링 파이프라인의 성능을 향상시킨다.
뷰 볼륨 밖에있는 객체나 부분을 처리하지 않으므로 연산량을 줄이고 렌더링 속도를 높입니다.
<<9장>> - 아직 21,22,23 못함!
12. 가시면 검사를 하는 목적이 무엇인가?
- 뷰 볼륨 안에 물체가 들어와 있다고 해서 물체의 모든 면이 화면에 그려지는 것은 아니다. 때문에 관측 위치에서 장면에 표현된 객체의 보이는 면과 보이지 않는 면을 판단하는 것이 필요하다. 정리하면, 화면에 보이지 않는 면이나 화면에 보이지 않는 물체를 판단, 제거해서 이후 화면에 그리는 과정에서 불필요한 연산을 최소시키는 것이 가시면 검사의 목적이다.
13. 가시면 검사에는 2가지 접근법이 있다. 각각 어떤 방법들인가? 이름을 적으시오
-객체공간법, 이미지 공간법
14. 각 접근법 마다 실제 어떤 방식으로 가시면과 비 가시면을 구분하는가?
- 객체공간법에서는 뒷면 조건을 통해 '뒷면검사' 를 하여 가시면 검사를 한다.
뒷면 조건은 Vview()와 검사 평면의 법선벡터(N)를 내적 했을 때 값이 양수이면 뒷면으로 판단하는 조건이다.
두 벡터를 내적하면 cosθ 가 부호를 결정하는데, θ는 두 벡터 사잇각이다.
-90<θ<90 이면 내적값이 양수이므로 뒷면이 되고, 90<θ<270 이면 음수이므로 앞면이 된다.
- 이미지 공간법에서는 '깊이버퍼 알고리즘'을 사용하여 가시면 검사를 한다.
깊이버퍼는 투영된 화면의 각 픽셀(x,y)에서 가장 작은 깊이 정보를 저장하는 버퍼이다.
0에서 1사이의 깊이값을 저장하고, 점의 깊이값이 0에 가까울 수록 관측위치와 가까운 점이 된다.
여러색의 점이 하나의 픽셀로 투영될 때 이 점들 중 깊이값이 작은(카메라와 가까운) 점의 색을 픽셀에 칠한다.
14-1 깊이버퍼 알고리즘을 구체적으로 수도코드로 설명하시오.
- 먼저 깊이버퍼의 초깃값을 1.0으로 설정하고, 컬러버퍼의 초깃값을 배경색으로 한다.
- 새로 투영된 점의 Z값(깊이값)이 기존 깊이버퍼의 값 보다 작다면,
깊이버퍼값을 이 점의 Z값으로 바꾸고 칼라버퍼값을 이 점의 색으로 바꾼다.
14-2 뒷면 검사는 완벽하게 가시면 검출을 하지 못한다. 어떤 경우에 추가적인 검사를 해야 하는가?
- (((그림을 두개 그리기)))
concave한(오목) 물체가 있거나 중첩된 물체가 있을 경우, 관측방향벡터(Vview)와 평면의 법선벡터(N)의 내적값으로 가시면 검사를 완벽하게 할 수 없다.
(두벡터 내적값이 음수일때 무조건 가시면이라고 판단하기는 성급하다.)
concave한(오목) 물체일경우 같은 객체의 일부가 검사 평면을 가릴 수 있기 때문이고, 중첩된 물체가 있는 경우는 다른 물체가 검사평면을 가릴 수 있기 때문이다.
15. 가시면검사 객체 공간법과 이미지 공간법이랑 다른점을 쓰시오.
16. 깊이버퍼 알고리즘의 장단점을 설명하시오.
[장점]
- 깊이버퍼알고리즘은 하드웨어 가속을 받을 수 있다. 버퍼 자체가 그래픽 프로세스를 지원하고 있기 때문에 계산 속도가 매우 빠르다.
[단점]
- 색을 칠하기 위한 버퍼와 별개로 같은 크기의 깊이버퍼를 하나 더 사용하므로 메모리 사용이 높을 수 있다.
- 모든 정점을 일단 투영시켜서 X,Y,Z의 값을 계산한다. X,Y는 픽셀좌표, Z는 깊이값. 이 계산을 다 하고 나서 기존에 있는 깊이버퍼보다 값이 크면 칠하지 않고 버려진다. 결국 가려질 정점의 XYZ값도 계산을 해봐야 한다.
투영 전에 이 정점이 그려질 부분인지를 판단하면 가려질 픽셀의 XYZ값은 계산하지 않아도 될 텐데, 투영 후에 깊이버퍼값을 이용해 그릴 점인지 판단하므로 불필요한 계산이 포함된다.
- 불투명한 표면에만 알고리즘이 사용가능하다.(투명도얘기임...)
17. a-버퍼알고리즘은 깊이버퍼 알고리즘을 발전시킨 것이다. 어떻게 발전시킨 방법인가?
- 투명도, 안티 앨리어싱 등 깊이, 칼라버퍼 이외에 더 다양한 버퍼들을 가지고 처리하도록 발전되었다.
18. a-버퍼알고리즘의 단점은?
- 투명도, 안티 앨리어싱 등 깊이, 칼라버퍼 이외에 더 다양한 버퍼들을 가지고 처리하는 만큼 계산 내용이 훨씬 많아진다.
19. 스캔라인 알고리즘의 원리는?
Active edge list는 현재 스캔라인과 교차하는 edge들을 교차점의 x값에 따라 정렬하여 저장하고 있다.
각 표면에 대한 추가적인 플래그를 두어, 현재 픽셀 위치가 표면의 외부인지 내부인지를 결정한다.
이 두가지 정보를 가지고 깊이 계산은 중첩된 표면의 edge들에서만 수행된다.
스캔라인을 이용하여 중첩되지 않는 부분은 각 객체의 색을 칠하면 된다.
20. 스캔라인 알고리즘의 장단점은?
[장점]
- 깊이계산을 해야될 엣지에 대한 정보만 저장해놓고 그 부분만 깊이계산을 하기 때문에 불필요한 깊이계산이 많이 줄어든다. 순수 깊이버퍼 알고리즘에서는, 중첩되는 부분의 모든 픽셀의 깊이버퍼 값을 비교해야 하기 때문에 스캔라인알고리즘에서의 깊이계산이 훨씬 적다.
[단점]
- 순환적으로 중첩된 표면의 경우에, 한 표면을 분할하는 것이 필요하다.
21. 깊이정렬법(화가 알고리즘)을 설명하시오.
물체를 특별한 순서로 그리면, 예를 들어 가장 가까운 물체를 마지막에 그리면 가시성검사를 하지 않아도 된다. 화가가 멀리있는 객체부터 가까운 객체 순서로 그림을 그리는 것과 비슷하다고 하여 붙여진 이름이다.
표면을 Zmin값에 따라 정렬하고, 가장 작은 깊이를 갖는 표면 s를 시작으로, s가 다른 표면들로부터 다음 조건을 만족하는지 검사한다.
4가지 조건 중 하나의 조건이라도 만족하면 표면 s를 그리고 s'을 그려라. 그렇지 않으면, s와 s'를 정렬리스트에서 교환해라.
22. 깊이정렬법(화가 알고리즘)의 한계를 설명하시오
23. 이진공간 분할법(BSP-tree)을 설명하시오. - 화가 알고리즘과 똑같이 공간에서.객체 깊이 정렬법이라 보면됨
24. 가시성 검사법중 매우 많은 객체를 포함한 장면의 가시성 검사에 가장 유용한 방법은?
- 깊이버퍼
25. 가시성 검사법중 속도가 매우 빠른 검사법은? 왜 인가?
- 깊이버퍼/ 하드웨어 가속을 받을 수 있기 때문.
26. 가시성 검사법 중 관측 위치가 자주 또는 빠르게 변할 때 유용한 검사법은?
- 이진공간분할트리
27. 가시성 검사법 중 구부러진 표면에 유리한 검사법은?
- 광선캐스팅
<<10장 1,2 강의>>
1. 광원의 종류 3가지를 쓰고 간단하게 설명하시오.
(1) 점 광원
- 전구와 같은 모델으로, 빛을 사방으로 방사하는 특징을 가지고 있는 광원이다. 점 광원은 빛의 방사 방향은 사방으로 방사하기 떄문에 지정해줄 필요가 없지만 광원의 위치를 지정해줘야 한다. 이 점광원과 거리가 가까워지면 빛의 세기가 증가하고 멀어지면 빛의 세기가 감소한다.
d는 빛과의 거리, a0 a1 a2는 그냥 개발자가 입력하는값 (일반 상수).
(2) 방향성 광원
- 태양과 같은 모델으로, 특정 방향으로 내리쬐는 광원이다. 태양처럼 무한히 떨어져 있는 점 광원이므로 한 방향으로만 빛을 방사하는 것처럼 고려된다. 광원의 위치는 중요하지 않고, 어느 방향으로 빛을 방사하는지 지정을 해줘야 한다. 방향성 광원의 세기 감쇠는 1이다. 즉 거리 대비 빛의 세기 감쇠가 없다는 뜻이다. 방향성광원은 멀리 있어도 빛이 센 태양같은 애들이기 때문에 거리에 상관없이 다 동일한 빛을 받도록 한다.
(3) 집중광원
- 탁상형 램프 같은 모델로, 방향을 갖는 점 광원이다. 광원의 위치와 방향에 따라 빛의 세기가 달라진다. 또, 각도도 중요한 요소인데, 원뿔모양으로 빛을 방사하기 때문에 그 원뿔 안에 있으면 빛을 받고, 밖에 있으면 빛을 받지 못한다. 각도가 광원의 각도보다 객체사이의 각도가 작을 경우에는 빛 연산을 하지만 너무 커서 삐져나갈 때는 빛의 세기가 0이기 때문에 빛 연산을 안해도 된다.
조명으로부터 빛이 물체의 표면에 부딪힐 때 나타나는 효과 3가지 (반사될때 효과 3가지)
(1)주변광 효과
- 주변물체들의 반사광으로 인한 은은한 효과
(2)난반사 효과
- 빛이 표면에 골고루 반사하여 전반적인 물체의 색을 나타냄
(3)정반사 효과(광택이 있는 재질, 거울효과, 하이라이트효과)
- 빛이 표면에 반응하여 특정한 방향으로 집중적으로 반사함
2. 이 식이 각각 부분이 무슨 역할을 담당하는 것인지, N L 을 왜 곱하는지, V R을 왜 내적하는지, NS는 뭔지, --> 피피티 캡쳐본 보기!!!!@!!
<<10장 표면 렌더링>>
1. 표면 렌더링이란 무엇인지 설명하시오.
- 조명 모델로부터 계산된 정점의 색을 이용하여 다각형 내부 혹은 투영된 픽셀 위치에서의 색을 결정하는 것이다. 쉐이딩이라고도 한다. 이때 스캔라인 방법, 광선추적 등이 사용된다.
//한 면을 구성하는 꼭짓점들의 색이 일반적으로 다를 수 밖에 없는데, 이 n개의 다른 색을 통해서 그 면의 색을 어떻게 처리할것인가.
2. Flat 쉐이딩이란 무엇인지 설명하시오
- Flat 쉐이딩이란, 한 면을 구성하는 꼭짓점들 중 하나의 색으로, 해당 면 전체를 다 칠해버리는 것이다.
3. Flat 쉐이딩의 장, 단점은?
- 면(폴리곤) 마다 하나의 색을 가지고, 그 색이 인접 면(폴리곤)의 색과 다르기 때문에 빠르고 단순하나 폴리곤 경계에서 색이 불연속적으로 변한다. 즉 자연스럽지 못하다.
4. Gouraud 쉐이딩이란 무엇인지 설명하시오.
- 다각형 각 정점의 색을 선형적으로 보간한다.
다각형의 각 정점에서 단위법선벡터의 평균을 게산하여 각 정점에서 조명모델을 통해 정점의 색을 결정한다.
그 다음에, 다각형의 투영된 영역에서 내부의 점 색을 선형적으로 보간한다. 픽셀은 불연속적인 공간이므로 정점들 사이에 있는 픽셀들의 색을 선형적으로 보간하여 픽셀별 색을 결정한다.
5. 정반사에서 퐁 반사 모델이 무엇인지 설명하시오.
- Gouraud 쉐이딩은 각 정점의 법선벡터와 조명모델 방법을 사용하여 구해진 색을 기반으로 정점 사이의 픽셀들을 색 보간을 통해 색칠하는 방법이라면, 퐁 반사 모델은
각 정점의 법선(normal) 벡터를 보간하여 내부의 색(intensity)을 결정함
• 사실적이지만 Gouraud방법보다 많은 계산을 필요로 함
• 쉐이딩과정
• 각 정점에서 단위 법선(normal) 벡터의 평균을 구한다
• 투영된 다각형 내부에서 법선벡터를 선형보간 한다
• 조명모델과 보간된 법선벡터를이용하여 폴리곤내부의 색을 정한다
6. 블린 퐁 모델이 무엇인지 설명하시오
퐁 모델을 개선한 것이다.
반사광 계산을 더 효율적으로 하기 위해 R 반사벡터 대신 더 간단한 하프벡터를 사용한다. 하프벡터는 광원 L벡터와 관측자 V벡터의 합을 정규화한 벡터이다.
7. 광선 추적 방법중 순방향 추적을 설명하시오
- 광원에서부터 방사되는 모든 광선의 경로를 추적하여 화면 내 픽셀에 들어오는 광선을 골라내 픽셀의 색을 결정하는 방법이다. 광선의 수가 너무 많고, 이들 중 대부분이 화면으로 들어오지 않아 이미지 생성에 기여하지 않는다. 즉 불필요한 계산량이 대부분이라는 말이다.
8. 광선추적 방법 중 역방향 추적을 설명하시오
- 순방향 추적에서 화면에 들어오지 않는 광선들을 계산하지 않기 위해서 만든 방법이다.
화면의 각 픽셀에서 광선을 화면과 수직하게 쏜다. 이때 광선이 물체와 만나서 반사나 굴절이 일어나 2차광선을 생성하면 그 2차광선을 다시 재귀적으로 추적하는 방식이다.
9. 2진 광선추적 트리를 설명하시오
- 노드에는 곡면이 들어있고, 왼쪽 가지(분기)에는 반사, 오른쪽 가지(분기)에는 굴절????????????????
트리의 높이(깊이)가 반사든 굴절이든 빛이 곡면과 만나 어떤 이벤트가 일어난 횟수를 의미한다.
10. 광선추적의 종결조건은?
- 광선과 교차하는 곡면이 없거나 광선이 광원과 교차할 때 종결한다. 또한 2진 광선추적 트리가 사용자가 정의한 최대 깊이를 초과할 때 광선추적을 종결한다.
11. 광선추적의 교차점 계산
• 예제
• 두 점(10, 10, 0), (10, 10, -10)을 지나는 광선
• 중심이 (10, 10, -20)이고 반지름이 5인 구
• 광선과 구의 두 교차점을 계산하시오 / 먼저교차하는, 가까운 점은?
12. 광선 추적의 가속화를 설명하시오.
- 광선 추적 시간 중 95%가 교차점 계산을 하는 시간이다. 때문에 광선 추적을 가속화하려면 교차점 계산시간을 줄여야 한다.
첫째, 계층적 바운딩 볼륨을 이용한 광선추적 가속방법이 있다.
예를 들면 사람이 있을 때 사람 전체를 둘러싸는 경계상자를 하나 만들고 광선이 상자와 만나는지 조사한 후 다시 팔, 다리, 몸통,머리 등을 둘러싸는 작은 경계상자를 만들어 광선이 상자와 만나는지 조사한다. 그다음 머리중에는 코, 귀, 머리 이런식으로 계층적으로 경계상자를 만들고, 광선이 상자와 만나는지 조사한다. 광선과 물체가 만나지 않는 경우를 경계상자 개념을 도입해 더 단순하게 미리 걸러내겠다는 목적이 있다.
둘째, 공간분할을 이용한 광선 추적 가속방법이 있다.
공간을 계속 잘라서 단 하나의 객체가 들어 있을 때 까지 분리한 다음에 그 공간에 대해서만 교차 테스트를 수행한다. 이렇게 역방향 광선추적의 성능을 크게 향상시킬 수 있다.