作者killman (天下第一人)
看板GameDesign
標題Re: [程式] 製作動畫的問題
時間Tue Jan 8 11:44:31 2008
※ 引述《littleshan (我要加入劍道社!)》之銘言:
: 因此(我看到的)大多遊戲都沒有固定 fps
不知道有沒有什麼例子可以舉一下
固定fps我覺得可以避免過多的畫面更新
我想知道是哪一類型的遊戲會選擇不這樣做
: 另外一個問題是
: 當你計算物體的位移時
: 不能用 1/30 秒去算
: 因為 render 要花時間
: 而且每張 frame 花的時間不一樣
: 如果都用 1/30 秒去算
: 就會發生物體移動時快時慢的現象
: 若要固定 fps 為 30
: 我會先計算畫出第一張 frame 的時間,假設為 t
: 然後設定 timer 在 (1/30 - t) 秒後重繪一次
: 因為 t 會變動
: 因此每次重繪完 都要重新設定一次 timer
其實好像並不會發生你說的這種狀況
因為其實timer並不是跑完函式才繼續計算中間的間格時間的
也就是並非在(1/30 - t)秒後重繪一次
而是利用取得系統時間
計算間格時間
當超過或等於我們設定的值
才呼叫callback function
簡單的說 fps 30的情形
就會讓你顯現的結果是固定fps 30的樣子
具體的舉例
設定一段動畫是球落地的動畫(fps30)
而總時間是1秒(也就是30格)
那麼假設其中的第一個畫面在畫的時候計算量太大(timer跑第一次)
拖到一秒才畫完
所以當timer跑第二次的時候
會發現從開始動畫已經過了1秒 (不是從畫完以後計算)
因此第二格畫出來的會是球已經落地的樣子
--
http://www.wretch.cc/blog/killman
http://www.wretch.cc/album/killman 作品集
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.111.5.43
1F:→ doomleika:我知道quake 3還有UT系都沒有鎖 01/08 11:46
2F:→ doomleika:不過quake後來因為這樣搞出了strafe jump,後來的系統 01/08 11:47
3F:→ doomleika:預設都鎖起來了 01/08 11:47
4F:→ killman:作fps engine的應該都很喜歡讓fps飆高沒錯 01/08 11:54
5F:→ killman:學術上的程式也會故意不鎖fps 來驗證最高速 01/08 11:56
6F:→ killman:不過fps的遊戲也並不代表全部就是了 01/08 11:59
7F:→ killman:而且如果是說動畫部分 未必更新頻率跟顯示的部分是相同的 01/08 12:00