2023年5月24日 星期三

JIA的電腦圖學日誌 Week15

  1

今天要教運鏡哦!

一樣到老師的網站 https://jsyeh.org/3dcg10/ 下載檔案

data     win32    


打開 Projection.exe 檔


可以玩玩看運鏡


gluLookAt()

我們一個一個看

eye 是從哪邊看

展示從左右


從上下


視角正對他往後走
穿過他
看他背面


center 以誰為中心 或是 看他哪裡

展示以左手為中心 看他左手

看他右手


看他大鼻子

看他腳


up 稍微難理解 我們想像有台攝影機在拍他

把攝影機往右轉 出現的畫面是 頭在左上 腳在右下

攝影機往左轉 頭在右上 腳在左下

忘記的時候拿出手機拍一下就理解了


攝影機拿正的 拿反的


gluPerspective()

fovy: field of view (y視角) 視野的方向

最大到180就看不到了


aspect: aspect ratio 長寬比 !如果視窗比例改變 他也必須改

因為把視窗拉到 2:1

所以調成 2.0 比例才會正常


zNear zFar 是在 z方向近的地方切一刀,遠的地方切一刀,決定哪個範圍裡的內容會被投影到方塊中再壓扁畫出來

因為近的切在身體中間所以看起來像破圖了

因為遠的切在身體中間所以身體從中間剖半了


新增一個 GLUT 專案

修改程式碼 比較一下

第一個 glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0);

第二個 glOrtho(-ar*3,ar*3,-1*3,1*3,-100,+100);


解釋一下程式碼

第三個要比較的 gluPerspective(60, ar, 0.01, 1000);


他們三個是好朋友,可以放在一起看


2


今天的第二個程式,新增 GLUT 專案

我先展示部分程式碼

跟著一步一步走


執行小黑, 出現圓潤的小黑!

不是形狀改變了!是因為茶壺本身是3D模型,我們的鏡頭現在離茶壺很近,所以看起來圓圓胖胖的


但是鏡頭不可能一直固定啊 所以我們要讓他方便的控制起來

我們新增motion函式

其實內容和上面都是一樣的

只是多了可控制的 eye

然後不要忘了 不管是motion mouse display等等等 都要加在底下,不然不會出現效果

執行小黑, 可以轉視角了! 好看


附上完整程式碼

Save everything!先備份上雲端

👌3


繼續寫 Final_Project

切換不同關節,改變不同角度!

我們用陣列 讓他們旋轉

現在只要按對應的鍵盤 就可以到對應關節

原先TRT中的 angle 要加上對應陣列

motion中的 angle 往上拉

mouse中的 angle 註解掉

執行小黑, 可以分別控制了,我的鍵盤順序 1 2 3 4 3 2

最酷的一部分!

現在我們除了原先可以透過鍵盤切換關節、滑鼠轉動角度外

在每次做到滿意動作後,按鍵盤 s,會儲存在 motion.txt 中

重新打開後,每按一次 r 將播放儲存過的動作!


剛才我已經儲存好了動作

可以打開 motion.txt檢查一下是不是真的有存到

為什麼後面很多 0

因為我們 angle[20] 所以有 20 筆

但現在只做了幾個關節而已


執行小黑, 按 r r r r 播放剛剛的四個動作


👋最後


上傳github

沒有留言:

張貼留言