作者littleshan (我要加入剑道社!)
看板GameDesign
标题Re: [程式] 制作动画的问题
时间Tue Jan 8 10:45:35 2008
※ 引述《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