| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- file system
- DFS
- RNN
- do it! 알고리즘 코딩테스트: c++편
- deep learning
- Humble
- Linux
- Data Science
- 밑바닥부터 시작하는 딥러닝2
- computer vision
- Machine Learning
- Robocup@Home 2026
- Gentoo2
- Seoul National University
- Optimization
- paper review
- Baekjoon
- BFS
- Operating System
- cs231n
- Python
- CPP
- Process
- SQLD
- CNN
- System Call
- C++
- ROS2
- Multimedia
- On-memory file system
- Today
- Total
newhaneul
[Multimedia] Lecture 4. Geometric Transformations 본문
[Multimedia] Lecture 4. Geometric Transformations
뉴하늘 2026. 3. 15. 19:34본 포스팅은 인하대학교 안남혁 교수님의 [202601-EEC4410-001] Multimedia을 수강하고 공부한 내용을 정리하기 위한 포스팅입니다.
2D Transformations:
강의 자료 1p~18p까지 2D 컴퓨터 그래픽스에서 물체를 다루기 위한 기하학적 변환 (Geometric Transformations)의 핵심 수학적 원리를 설명한다.
1. Rotation


가장 기본적인 변환으로, 원점을 기준으로 좌표를 변경한다.
- 회전 (Rotation): 2D 공간의 점 $(x, y)$를 원점 기준으로 $\theta$만큼 회전시키는 연산은 행렬 곱셈으로 표현할 수 있다. 기본적으로 양수 각도는 반시계 방향(CCW) 회전을 의미하며, 시계 방향(CW)으로 회전하려면 음수 각도 $-\theta$를 사용한다. 회전 행렬 $R(\theta)$는 다음과 같이 정의된다.
-
$$\begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix}$$
-
2. Scaling

- 크기 조절 (Scaling): $x$축과 $y$축 방향으로 각각 $s_x, s_y$만큼 확대 또는 축소한다. 두 값이 같으면 형태가 유지되는 균일(uniform) 스케일링, 다르면 형태가 찌그러지는 비균일(non-uniform) 스케일링이 된다. 행렬식은 다음과 같다.
-
$$\begin{pmatrix} s_x & 0 \\ 0 & s_y \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} s_xx \\ s_yy \end{pmatrix}$$
-
3. Translation

개념적으로 이동(Translation)은 벡터의 덧셈이다. 하지만 컴퓨터가 여러 변환을 효율적으로 처리하기 위해서는 모든 연산을 '행렬의 곱셈' 하나로 통일해야 한다. 이를 위해 동차 좌표계(Homogeneous Coordinates)라는 특별한 트릭을 도입한다.
** 2024-2 퀴즈 **

- 정답: 컴퓨터가 여러 변환을 효율적으로 처리하기 위해서 모든 연산을 행렬의 곱셈으로 통일 해야 한다. (Homogeneous coordinates)

- 기존의 2D 좌표 $(x, y)$의 끝에 1을 추가하여 $(x, y, 1)$이라는 3차원 벡터로 확장한다.
- 이렇게 하면 이동 변환 $T(d_x, d_y)$ 역시 $3 \times 3$ 행렬의 곱셈으로 깔끔하게 표현할 수 있게 된다.
- $$\begin{pmatrix} 1 & 0 & d_x \\ 0 & 1 & d_y \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} = \begin{pmatrix} x + d_x \\ y + d_y \\ 1 \end{pmatrix}$$
4. Homogeneous Coordinates (동차좌표계)

앞서 이동 (Translation) 변환을 진행할 때 행렬 곱의 형태로 표현하기 위해 homogeneous coordinates를 도입한다고 언급하였다. 따라서 기존 2D 공간에서 회전(Rotation)과 크기 조절(Scaling)을 나타내는 $2 \times 2$ 행렬을 $3 \times 3$ 행렬로 확장해야한다.
- 원래의 수식에 영향을 주지 않도록 행렬의 우측 하단에 $1$을 추가하고, 나머지 확장된 공간은 $0$으로 채운다.
- 이러한 확장을 통해 이동(Translation), 회전, 크기 조절 등 성격이 다른 모든 기하학적 변환을 오직 $3 \times 3$ 행렬의 곱셈만으로 일관되게 처리할 수 있게 된다.

- 2D 데카르트 좌표 $(x, y)$를 동차좌표계로 나타낼 때, 단순히 끝에 1을 붙인 $(x, y, 1)$뿐만 아니라, 0이 아닌 임의의 스칼라 상수 $w$를 곱한 $(wx, wy, w)$ 형태로도 표현이 가능함을 설명한다.
- 예를 들어, 2D 좌표 $(2, 3)$은 동차좌표계에서 $(2, 3, 1), (4, 6, 2), (6, 9, 3)$ 등 원점을 지나는 직선 상의 무수히 많은 3D 좌표로 나타낼 수 있다.
- 동차좌표 $(X, Y, w)$를 다시 2D 데카르트 좌표로 되돌리려면, 모든 요소를 마지막 값인 $w$로 나누어 $(X/w, Y/w, 1)$ 형태를 만든 후 앞의 두 값만 취하면 된다. 이는 기하학적으로 3D 공간의 점을 $w=1$인 평면에 투영하는 것과 같은 의미를 갖는다.
** 2025-1 중간고사 **

- 정답: 3

- 동차좌표계를 도입함으로써 얻는 가장 실용적인 이점인 다중 변환의 행렬 병합 과정을 구체적인 예시로 보여준다.
- 집 모양의 도형 중 한 꼭짓점인 $(0, 4)$를 기준으로, 원점 기준 $90^\circ$ 회전($R$)을 먼저 수행하고, 그 뒤에 $x$축으로 $7$만큼 이동($T$)시키는 과정이다.
- 점 $(0, 4, 1)^T$에 회전 행렬 $R(90^\circ)$를 곱해 $(-4, 0, 1)^T$를 얻고, 여기에 다시 이동 행렬 $T(7,0)$을 곱해 최종 좌표 $(3, 0, 1)^T$를 계산하는 과정을 순서대로 나타낸다.
- 가장 중요한 점은, 동차좌표계를 사용해 모든 변환을 $3 \times 3$ 행렬로 규격화했기 때문에 점에 곱하기 전에 $T(7,0) \times R(90^\circ)$ 행렬끼리 먼저 곱하여 단일 변환 행렬을 만들 수 있다는 것이다. 연산 횟수를 줄여 그래픽 파이프라인의 속도를 크게 향상시키는 핵심 원리이다.

- 순서의 중요성: 행렬 곱셈은 교환 법칙이 성립하지 않는다. 즉, 회전 후 이동하는 것($TR$)과 이동 후 회전하는 것($RT$)은 전혀 다른 결과를 낳으므로 순서에 매우 주의해야 한다.
- 임의의 점 기준 변환: 만약 원점이 아닌 특정 점 $(a, b)$를 기준으로 회전이나 크기 조절을 하고 싶다면, 대상을 원점으로 가져오고(이동) $\rightarrow$ 변환을 수행한 뒤 $\rightarrow$ 다시 원래 위치로 되돌리는(역이동) 3단계 행렬 곱셈을 연속해서 적용해야 한다.
** 2025-1 중간고사 **

- 정답: X

점 $(x, y)$를 임의의 기준점 $(a, b)$를 중심으로 회전시키려면 다음의 3단계를 거쳐야 한다.
- 기준점을 원점으로 이동 (Translating by $-a, -b$): 변환하려는 대상과 기준점 모두를 평행 이동시켜, 기준점 $(a, b)$가 원점 $(0, 0)$에 오도록 만든다.
- 원점 기준 회전 (Rotating about the origin): 이제 기준점이 원점이 되었으므로, 일반적인 회전 행렬 $R(\theta)$를 적용하여 물체를 회전시킨다.
- 원래 위치로 되돌리기 (Back-translating by $a, b$): 회전이 끝난 후, 1번에서 이동했던 만큼 반대로 평행 이동시켜 기준점이 원래의 $(a, b)$ 위치로 가도록 복구한다.


회전뿐만 아니라 스케일링(Scaling)도 동일한 3단계 원리가 적용됨을 보여준다. 어떤 도형을 임의의 점 $(a, b)$를 기준으로 확대/축소하려면:
- Translating: 도형을 이동시켜 기준점 $(a, b)$를 원점에 맞춘다.
- Scaling: 원점을 기준으로 스케일링 행렬을 적용하여 크기를 조절한다.
- Back-translating: 다시 원래의 기준점 위치로 되돌려 놓는다.
5. Affine Transform

- 개념: 어파인 변환은 직선과 평행성을 유지하는 변환이다. 순수한 선형 변환(회전, 스케일링, 반전 등)에 평행 이동(Translation)을 더한 개념이다.
- 동차좌표계의 특징: 회전($R$), 스케일링($S$), 이동($T$) 행렬을 동차좌표계에서 여러 번 곱하더라도, 최종적으로 계산된 $3 \times 3$ 행렬의 맨 아래 3번째 행은 항상 $(0, 0, 1)$로 고정된다.
** 2024-2 퀴즈 **

- 정답: X

- 마지막 행이 항상 $(0, 0, 1)$이므로, 실제 연산에 영향을 주는 윗부분의 $2 \times 3$ 행렬만 따로 떼어내어 $[L|t]$ 형태로 간략히 표기할 수 있다.
- $L$ (Linear Transform): 왼쪽의 $2 \times 2$ 행렬이다. 이동 성분이 완전히 배제된 순수 '선형 변환(회전, 스케일링)' 부분만을 나타낸다.
- $t$ (Translation): 오른쪽의 $2 \times 1$ 열 벡터다. 최종적인 '이동' 성분을 나타낸다. 주의할 점은 $t$가 단순히 맨 처음 주어진 이동값이 아니라, 다른 선형 변환과 곱해지면서 변형된 최종 이동값을 담고 있다는 것이다.

- 예시 분석: $x$축으로 $7$만큼 이동한 뒤 $90^\circ$ 회전하는 연산인 $R(90^\circ)T(7,0)$을 계산해 본다. 계산 결과 도출된 $[L|t]$ 행렬을 보면, $L$은 $R(90^\circ)$와 같지만, $t$는 $(7, 0)$이 아니라 $(0, 7)$이 되어 있다. 이는 먼저 수행된 이동 벡터 $(7, 0)$이 나중에 적용된 $90^\circ$ 회전의 영향을 받았기 때문이다.

- 핵심 결론: 변환 행렬을 10개를 곱하든 100개를 곱하든, 최종 결과는 단 하나의 행렬 $[L|t]$로 정리된다.
- 이 최종 행렬이 점에 작용하는 방식은 $p' = Lp + t$라는 간단한 수식으로 요약된다. 즉, 아무리 복잡한 순서로 변환을 지시했더라도, 개념적으로는 "원점 기준으로 $L$이라는 선형 변환을 먼저 한 번 적용하고, 마지막에 $t$만큼 한 번에 평행 이동하는 것"과 완벽하게 동일한 결과를 낸다.
Example:
1. 동차 좌표계 행렬을 이용한 계산 ($3 \times 3$ 행렬 방식)
먼저 회전과 이동을 나타내는 각각의 동차 좌표계 행렬을 구하고, 이를 곱하여 하나의 합성 행렬 $M$을 만든다.
- $90^\circ$ 회전 행렬 $R$:
-
$$R = \begin{pmatrix} \cos 90^\circ & -\sin 90^\circ & 0 \\ \sin 90^\circ & \cos 90^\circ & 0 \\ 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{pmatrix}$$
-
- 이동 행렬 $T$:
-
$$T = \begin{pmatrix} 1 & 0 & 4 \\ 0 & 1 & 5 \\ 0 & 0 & 1 \end{pmatrix}$$
-
- 합성 행렬 $M = T \cdot R$:
-
$$M = \begin{pmatrix} 1 & 0 & 4 \\ 0 & 1 & 5 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} 0 & -1 & 4 \\ 1 & 0 & 5 \\ 0 & 0 & 1 \end{pmatrix}$$
-
- 이제 점 $p(2, 3)$을 동차 좌표 $(2, 3, 1)$로 바꾸어 행렬 $M$과 곱한다.
- $$\begin{pmatrix} x' \\ y' \\ 1 \end{pmatrix} = \begin{pmatrix} 0 & -1 & 4 \\ 1 & 0 & 5 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} 2 \\ 3 \\ 1 \end{pmatrix}$$
- 계산을 수행하면 다음과 같이 도출된다.
- $x' = (0 \times 2) + (-1 \times 3) + (4 \times 1) = -3 + 4 = 1$
- $y' = (1 \times 2) + (0 \times 3) + (5 \times 1) = 2 + 5 = 7$
최종 점의 좌표: $(1, 7)$이 된다.
2. Affine Transform 분해를 이용한 계산 ($p' = Lp + t$ 방식)
앞서 구한 최종 합성 행렬 $M$에서 3번째 행을 제외하고 $[L|t]$ 형태로 분리한다.
이때 점 $p$는 동차 좌표계가 아닌 원래의 2D 벡터 $\begin{pmatrix} 2 \ 3 \end{pmatrix}$를 그대로 사용한다. 공식 $p' = Lp + t$에 대입하여 계산한다.
- 1단계: $Lp$ 계산 (선형 변환 적용)
-
$$Lp = \begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix} \begin{pmatrix} 2 \\ 3 \end{pmatrix} = \begin{pmatrix} (0 \times 2) + (-1 \times 3) \\ (1 \times 2) + (0 \times 3) \end{pmatrix} = \begin{pmatrix} -3 \\ 2 \end{pmatrix}$$
-
- 2단계: $+ t$ 계산 (이동 변환 적용)
-
$$p' = \begin{pmatrix} -3 \\ 2 \end{pmatrix} + \begin{pmatrix} 4 \\ 5 \end{pmatrix} = \begin{pmatrix} -3 + 4 \\ 2 + 5 \end{pmatrix} = \begin{pmatrix} 1 \\ 7 \end{pmatrix}$$
-
최종 점의 좌표: 동일하게 $(1, 7)$이 된다.
6. 3D Scaling

- 3차원 환경에서 크기 변환은 $x, y, z$ 축에 대한 크기 비율 $s_x, s_y, s_z$를 대각 원소로 가지는 3x3 행렬을 사용하여 정의한다.
- 모든 축의 크기 비율이 동일한 경우를 균등(uniform) 크기 변환이라고 하며, 비율이 다른 경우를 비균등(non-uniform) 크기 변환이라고 한다.
7. 3D Translation

- 동차좌표계(Homogeneous coordinates)를 활용하여 3D 이동 변환 역시 행렬의 곱셈 형태로 표현할 수 있다.
8. 3D Rotation

- 점을 기준으로 회전하는 2D 변환과 달리, 3D 회전 변환에는 회전축이 필요하다.
- $z$축 기준 회전($R_z$) 시 $z$ 좌표값은 변하지 않고($z^{\prime} = z$) 유지된다.
- $x^{\prime}=x\cos\theta-y\sin\theta$
- $y^{\prime}=x\sin\theta+y\cos\theta$
- $z^{\prime}=z$
-
$$\begin{pmatrix}x^{\prime}\\y^{\prime}\\z^{\prime}\end{pmatrix}=\begin{pmatrix}\cos\theta&-\sin\theta&0\\ \sin\theta&\cos\theta&0\\ 0&0&1\end{pmatrix}\begin{pmatrix}x\\y\\z\end{pmatrix}$$

- $x$축 기준 회전($R_x$) 시 $x$ 좌표값은 변하지 않는다($x^{\prime} = x$). 이때 오른손 법칙에 따라 엄지손가락을 회전축에 맞추었을 때 나머지 손가락이 말아쥐는 방향으로 회전이 적용된다.
- $x^{\prime}=x$
- $y^{\prime}=y\cos\theta-z\sin\theta$
- $z^{\prime}=y\sin\theta+z\cos\theta$
- $$R_{x}=\begin{pmatrix}1&0&0\\ 0&\cos\theta&-\sin\theta\\ 0&\sin\theta&\cos\theta\end{pmatrix}$$

- $y$축 기준 회전($R_y$) 시 $y^{\prime} = y$가 되며, 오른손 법칙 적용 시 말아쥐는 방향의 시작점이 다르기 때문에 다른 축의 회전 행렬과 $\sin\theta$의 부호 위치가 반대가 된다.
- $x^{\prime}=z\sin\theta+x\cos\theta$
- $y^{\prime}=y$
- $z^{\prime}=z\cos\theta-x\sin\theta$
- $$R_{y}=\begin{pmatrix}\cos\theta&0&\sin\theta\\ 0&1&0\\ -\sin\theta&0&\cos\theta\end{pmatrix}$$

- 2D와 마찬가지로 반시계 방향(CCW)이 양수 각도의 회전이며, 시계 방향(CW)이 음수 각도의 회전이 된다.
** 2024-2 중간고사 **

- 정답: $$R_y(\theta) = \begin{pmatrix} \cos\theta & 0 & \sin\theta & 0 \\ 0 & 1 & 0 & 0 \\ -\sin\theta & 0 & \cos\theta & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$
** 2024-2 퀴즈 **

- 정답:
- 1. 스케일 변환 (Scaling): 객체의 크기를 각 축($x, y, z$) 방향으로 지정된 비율($s_x, s_y, s_z$)만큼 확대하거나 축소하는 변환이다. 모든 축의 확대 비율이 동일하면 균등(uniform) 스케일링, 다르면 비균등(non-uniform) 스케일링으로 구분된다.
-
$$S = \begin{pmatrix} s_x & 0 & 0 & 0 \\ 0 & s_y & 0 & 0 \\ 0 & 0 & s_z & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$
-
- 2. 회전 변환 (Rotation): 3차원 공간에서 기준축(Z축)을 중심으로 주어진 각도($\theta$)만큼 객체를 회전시키는 변환이다. Z축을 기준으로 회전하므로 회전 후에도 $z$ 좌표값은 변하지 않고 동일하게 유지된다.
-
$$R_z(\theta) = \begin{pmatrix} \cos\theta & -\sin\theta & 0 & 0 \\ \sin\theta & \cos\theta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$
-
- 3. 이동 변환 (Translation): 객체를 주어진 방향과 거리($d_x, d_y, d_z$)만큼 평행하게 이동시키는 변환이다. 본래 벡터 덧셈으로 표현되지만, 다른 변환들과 마찬가지로 행렬 곱셈 형태로 연산을 통일하기 위해 차원을 확장한 동차좌표계(Homogeneous coordinates)를 필수적으로 사용해야 한다.
-
$$T = \begin{pmatrix} 1 & 0 & 0 & d_x \\ 0 & 1 & 0 & d_y \\ 0 & 0 & 1 & d_z \\ 0 & 0 & 0 & 1 \end{pmatrix}$$
-
- 1. 스케일 변환 (Scaling): 객체의 크기를 각 축($x, y, z$) 방향으로 지정된 비율($s_x, s_y, s_z$)만큼 확대하거나 축소하는 변환이다. 모든 축의 확대 비율이 동일하면 균등(uniform) 스케일링, 다르면 비균등(non-uniform) 스케일링으로 구분된다.
** 2024-2 퀴즈 **

- 정답:
- 최종 변환 행렬 ($M$): $$M = \begin{pmatrix} 2 & 0 & 0 & 0 \\ 0 & 2 & 0 & 0 \\ 0 & 0 & 2 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} 0 & -1 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & -1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$
-
$$M = \begin{pmatrix} 0 & 0 & 2 & 0 \\ 2 & 0 & 0 & 0 \\ 0 & 2 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$
- 정점 $(2, 0, 0)$ 변환 결과 계산: $$\begin{pmatrix} x^{\prime} \\ y^{\prime} \\ z^{\prime} \\ 1 \end{pmatrix} = \begin{pmatrix} 0 & 0 & 2 & 0 \\ 2 & 0 & 0 & 0 \\ 0 & 2 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} 2 \\ 0 \\ 0 \\ 1 \end{pmatrix} = \begin{pmatrix} 0 \\ 4 \\ 0 \\ 1 \end{pmatrix}$$
9. 3D Affine Transform

- 크기 조절, 회전, 이동 등 여러 변환이 결합된 4x4 아핀 행렬의 가장 아래쪽 4번째 행은 항상 $(0, 0, 0, 1)$ 값을 가진다.

- 4번째 행을 제외한 3x4 크기의 부분 행렬을 $[L|t]$로 축약하여 표현할 수 있는데, 여기서 $L$은 3x3 크기의 선형 변환(Linear transform) 행렬을, $t$는 3D 이동 열 벡터를 의미한다.
- 개념적으로 이 변환은 선형 변환 $L$이 먼저 적용된 후, 변환된 객체가 $t$만큼 이동하는 2단계 과정으로 분해하여 이해할 수 있다.
** 2025-1 중간고사 **

- 정답:
- 회전 변환 행렬 ($R$): $$R = \begin{pmatrix} -1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & -1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$
- 이동 변환 행렬 ($T$): $$T = \begin{pmatrix} 1 & 0 & 0 & 3 \\ 0 & 1 & 0 & 4 \\ 0 & 0 & 1 & -1 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$
10. Inverse Transformations

- 변환을 원래대로 되돌리는 역이동(Inverse translation)은 이동값의 부호를 반대로 변경($-d_x, -d_y, -d_z$)하여 계산한다.
- 역크기 변환(Inverse scaling)은 원래 크기 비율의 역수($1/s_x, 1/s_y, 1/s_z$)를 적용하여 구한다.

- 회전 행렬 $R$을 구성하는 행과 열은 모두 정규 직교 기저(orthonormal basis)이다.
- 모든 행렬 요소가 단위 벡터이면서 서로 직교하는 직교 행렬(orthogonal matrix)의 특성상, 역행렬은 전치 행렬과 같다.($A^{-1} = A^T$).
- 따라서 역회전 행렬은 원래 회전 행렬을 전치하여 $R^{-1} = R^T$로 쉽게 구할 수 있다.
** 2024-2 중간고사 **

- 정답: 회전 행렬은 직교 행렬(Orthogonal matrix)이므로, $R^{-1} = R^T$가 성립한다.
-
$$R^{-1}(\theta) = \begin{pmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix}$$
-
'4. University Study > Multimedia' 카테고리의 다른 글
| [Multimedia] Lecture 9. Lighting (0) | 2026.04.04 |
|---|---|
| [Multimedia] Lecture 8. Texturing (0) | 2026.04.03 |
| [Multimedia] Lecture 7. Rasterizer, Fragment Shader, Output Merger (0) | 2026.03.28 |
| [Multimedia] Lecture 5. Vertex Shader (0) | 2026.03.22 |
| [Multimedia] Lecture 2. Modeling (0) | 2026.03.14 |
