Re: [程式] 製作動畫的問題
看板GameDesign (遊戲設計)作者littleshan (我要加入劍道社!)時間17年前 (2008/01/08 10:45)推噓0(0推 0噓 0→)留言0則, 0人參與討論串4/5 (看更多)
※ 引述《killman (天下第一人)》之銘言:
: : 問題在於你還要考慮畫出來的時間
: : 如果 1/30 才畫一次
: : 那麼 fps 一定低於 30
: : 因為畫出場景的時間多半都不固定 (視場景複雜度及硬體速度而異)
: : 所以大多遊戲不會事先決定 fps
: : 而是用前述的方法去更新畫面
: 我不太了解這個地方
: 我所認知的遊戲都是先決定顯示的fps的
: 比如說30,60
: 當然也可能我搞錯了
: 所以是不是可以請你多作說明呢?
: 謝謝
你也沒搞錯
的確有些遊戲是事先決定好 fps
然而對場景日益複雜的 3D Game 來說
固定 fps 不但麻煩 也沒有明顯的好處
因此(我看到的)大多遊戲都沒有固定 fps
: 另外
: 我補充我講的timer的方法
: 這個timer除了單純1/30秒跑一次外
: 還要加上一個skip frame的功能
: 以確保發生你所說的狀況
: 也就是說如果這次呼叫跟上次的間格如果超過1/30秒
: 假設是2/30秒
: 那麼就表示跟上一次呼叫timer callback已經錯過一次了
: 這時候callback function會得到這個數字
: 然後你在對這個數字作處理
另外一個問題是
當你計算物體的位移時
不能用 1/30 秒去算
因為 render 要花時間
而且每張 frame 花的時間不一樣
如果都用 1/30 秒去算
就會發生物體移動時快時慢的現象
若要固定 fps 為 30
我會先計算畫出第一張 frame 的時間,假設為 t
然後設定 timer 在 (1/30 - t) 秒後重繪一次
因為 t 會變動
因此每次重繪完 都要重新設定一次 timer
: 其實動畫的部分牽扯到兩個地方
: 一個是顯示畫面
: 另一個是計算動畫
: 兩個可以用不同的更新頻率來作
: 也就是可以設定兩個timer分開計算
: 一切都看你所需要的是什麼樣的情況
: ps:這都在學校學的 沒有業界經驗XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.163.156.44
討論串 (同標題文章)
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章
50
104