◇alpha內插公式:
1. angle = alpha*新角度 + (1-alpha)*舊角度。
alpha值為0.0~1.0。所以alpha=0 則為舊angle,alpha=1 則為新angle,其他介於新舊之間。
◇interpolation 內插實作(讓動畫angle變動順暢):
1.開新glut專案,利用上禮拜的程式week15_angle_again程式
2. 寫入新的myInterpolate函式、keyboard加入play鍵、myRead函式寫入讓他能新舊角度交換。
myInterpolate()函式:藉由新舊角度運算,算出每個angle。
keyboard()函式:藉由 t=0 ,呼叫myInterpolation()函式,放入 ( t %30 )/30.0 運算會介於 0.0~1.0之間(作為alpha值的運算),當我們 t 為30時,就又會變成0。
myRead()函式:使新舊角度交換,並重畫顯示畫面,就能看到順暢的動作。
3.因為原本要一直按p才能動,但我們想要他自動跑。
將keyboard函式修改,並增加timer函式,讓他會依照時間呼叫自己。
◇攝影機觀察:
1.藉由老師上課教材Projection.exe了解
2. gluLookAt -> eye 是相機拍向人物的相機座標。(相機位置)
gluLookAt -> center是相機拍攝哪裡。(可以專拍手或是專拍頭,對eye那個點做變動)
gluLookAt -> up 是相機拍攝旋轉角度。(有點像是旋轉相機,對著center那個點旋轉)
|
|
| 專注拍攝哪裡(center) |
3.對下面command manipulation window視窗 右鍵 可選glOrtho看到拍攝框
◇攝影機:
1.開新專案,留下static void resize()函式。
static void resize()函式,可讓視窗變化的時候,3D物件的長寬會跟著視窗比例變化,
就不會壓扁3D物件了。
aspect ratio 是長x寬比(x往右,y向下) ex:
1920x1080 , 1280x720 ,640x480 , 16:9 ,4:3。
2.先#include<GL/glut.h>、
修改resize()函式變成reshape()、
main函式利用glutReshapeFunc(reshape);呼叫reshape。
◇攝影運鏡:
3.加入motion()函式,讓我們能用滑鼠調整看的角度,感受到運鏡。
沒有留言:
張貼留言