GAMES101-现代计算机图形学学习笔记(作业01)
GAMES101-現(xiàn)代計(jì)算機(jī)圖形學(xué)學(xué)習(xí)筆記(作業(yè)01)
Assignment 01
- GAMES101-現(xiàn)代計(jì)算機(jī)圖形學(xué)學(xué)習(xí)筆記(作業(yè)01)
- 作業(yè)
- 作業(yè)描述
- 需要補(bǔ)充的函數(shù)
- 思路
- 結(jié)果
原課程視頻鏈接以及官網(wǎng)
b站視頻鏈接: link.
課程官網(wǎng)鏈接: link.
作業(yè)
作業(yè)描述
本次作業(yè)的任務(wù)是填寫(xiě)一個(gè)旋轉(zhuǎn)矩陣和一個(gè)透視投影矩陣。給定三維下三個(gè) 點(diǎn)
v0(2.0,0.0,?2.0),
v1(0.0,2.0,?2.0),
v2(?2.0,0.0,?2.0),
你需要將這三個(gè)點(diǎn)的坐標(biāo)變換為屏幕坐標(biāo)并在屏幕上繪制出對(duì)應(yīng)的線框三角形 (在代碼框架中,我們已經(jīng)提供了 draw_triangle 函數(shù),所以你只需要去構(gòu)建變換矩陣即可)。簡(jiǎn)而言之, 我們需要進(jìn)行模型、視圖、投影、視口等變換來(lái)將三角形顯示在屏幕上。在提供的代碼框架中,我們留下了模型變換和投影變換的部分給你去完成。
提高篇: 在 main.cpp 中構(gòu)造一個(gè)函數(shù),該函數(shù)的作用是得到繞任意過(guò)原點(diǎn)的軸的旋轉(zhuǎn)變換矩陣。
需要補(bǔ)充的函數(shù)
get_model_matrix(float rotation_angle): 逐個(gè)元素地構(gòu)建模型變換矩陣并返回該矩陣。在此函數(shù)中,你只需要實(shí)現(xiàn)三維中繞 z 軸旋轉(zhuǎn)的變換矩陣,而不用處理平移與縮放。
get_projection_matrix(float eye_fov, float aspect_ratio, float zNear, float zFar):使用給定的參數(shù)逐個(gè)元素地構(gòu)建透視投影矩陣并返回該矩陣。
思路
①model 變換
model矩陣是MVP變換中的第一個(gè)矩陣,它用于將物體從自身局部坐標(biāo)變換到世界坐標(biāo),題目要求實(shí)現(xiàn)三維中繞z軸旋轉(zhuǎn)的變換矩陣和任意軸旋轉(zhuǎn)的變換矩陣。
對(duì)于繞z軸旋轉(zhuǎn)的變換矩陣有如下特點(diǎn):
Rz(α)=(cos?α?sin?α00sin?αcos?α0000100001)\mathbf{R}_{z}(\alpha)=\left(\begin{array}{cccc} \cos \alpha & -\sin \alpha & 0 & 0 \\ \sin \alpha & \cos \alpha & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right)Rz?(α)=?????cosαsinα00??sinαcosα00?0010?0001??????
而如果想要實(shí)現(xiàn)任意軸旋轉(zhuǎn),我們需要先得到一個(gè)交于原點(diǎn)的旋轉(zhuǎn)軸和旋轉(zhuǎn)角度,得到了之后只需要根據(jù)軸角公式旋轉(zhuǎn)即可:
R(n,α)=cos?(α)I+(1?cos?(α))nnT+sin?(α)(0?nznynz0?nx?nynx0)?N\mathbf{R}(\mathbf{n}, \alpha)=\cos (\alpha) \mathbf{I}+(1-\cos (\alpha)) \mathbf{n} \mathbf{n}^{T}+\sin (\alpha) \underbrace{\left(\begin{array}{ccc} 0 & -n_{z} & n_{y} \\ n_{z} & 0 & -n_{x} \\ -n_{y} & n_{x} & 0 \end{array}\right)}_{\mathbf{N}}R(n,α)=cos(α)I+(1?cos(α))nnT+sin(α)N???0nz??ny???nz?0nx??ny??nx?0??????
②view變換
view變換用于計(jì)算相機(jī)視角,這里采用透視投影的方式,第一步先計(jì)算M_persp2ortho矩陣,用于將視錐擠壓成長(zhǎng)方體,第二步計(jì)算M_ortho,即將長(zhǎng)方體內(nèi)的坐標(biāo)進(jìn)行投影,最后一步通過(guò)兩次變換即可計(jì)算出最終的透視投影矩陣。
結(jié)果
以下依次是繞z軸旋轉(zhuǎn)0/45/90度的結(jié)果:
繞任意軸旋轉(zhuǎn)的結(jié)果可以通過(guò)調(diào)用get_model_matrix_axis函數(shù)實(shí)現(xiàn)。
總結(jié)
以上是生活随笔為你收集整理的GAMES101-现代计算机图形学学习笔记(作业01)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java swing边框_Java Sw
- 下一篇: cad工具箱详细讲解_AutoCAD学院