3D 수학과 소프트웨어 래스터라이저 · 조명과 회전 · 퀴즈
퀴즈: 법선과 조명
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
램버트 확산 반사에서 `max(0, dot(n, l))` 의 `max` 를 빼면 어떤 일이 생깁니까?
- 밝기 계산이 조금 빨라지고 결과는 거의 같아진다
- 빛을 등진 면에서 밝기가 음수가 되어 색이 뒤집히거나 넘친다
- 모든 면의 밝기가 1 로 고정되어 평평하게 보인다
- 빛을 등진 면에 그림자가 저절로 생긴다
ambient 항을 두는 이유는 무엇입니까?
- 물리적으로 정확한 빛의 세기를 맞추기 위해서다
- 빛을 등진 면이 완전히 검게 되지 않도록, 튕겨 온 빛을 뭉뚱그린 보정이다
- 법선의 정규화 오차를 흡수하기 위해서다
- 깊이 버퍼의 정밀도를 보완하기 위해서다
법선 벡터를 모델 행렬로 변환할 때 w 를 0 으로 두는 이유는 무엇입니까?
- 정규화를 건너뛰기 위해서다
- 법선은 방향이라서 평행이동이 적용되면 안 되기 때문이다
- 행렬의 세 번째 행을 무시하기 위해서다
- 부동소수점 오차를 줄이기 위해서다
면 법선(면마다 하나)과 꼭짓점 법선(보간)의 차이로 옳은 것은?
- 면 법선은 각진 모습을, 보간한 법선은 매끄러운 곡면을 만든다
- 면 법선은 조명 계산이 필요 없다
- 꼭짓점 법선은 깊이 버퍼를 대신할 수 있다
- 면 법선은 삼각형 수가 많을 때만 쓸 수 있다
빛을 받아야 할 면이 어둡고 등진 면이 밝게 나올 때 가장 먼저 확인할 곳은 어디입니까?
- ambient 값이 너무 큰지
- 깊이 버퍼의 초기값이 잘못되었는지
- 삼각형 꼭짓점을 도는 순서가 뒤집혀 법선이 안쪽을 가리키는지
- 카메라의 near 평면이 너무 작은지
회전 애니메이션을 만들 때 회전 행렬을 매 프레임 곱해 누적하는 대신 각도를 상태로 두고 행렬을 새로 만드는 이유는 무엇입니까?
- 행렬 곱셈이 삼각함수 호출보다 훨씬 느려 프레임 시간이 늘어나서
- 각도 하나가 행렬 성분 열여섯 개보다 메모리를 덜 써서
- 누적하면 부동소수점 오차가 쌓여 행렬의 직교성이 무너지고 물체가 찌그러져서
- 회전 행렬끼리는 곱해도 다시 회전 행렬이 되지 않아서