游戏开发论坛

 找回密码
 立即注册
搜索
楼主: darkangel01

求助,如何处理3rd摄影机抖动问题

[复制链接]

4

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
 楼主| 发表于 2007-8-21 23:06:00 | 显示全部楼层

Re:求助,如何处理3rd摄影机抖动问题

我旋转的抖动倒是很轻微。。使用了很多算法都没用。
我在网上看到有人说,把摄影机的位置加入一个滤波算法中可以解决类似的问题。

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-8-22 00:19:00 | 显示全部楼层

Re: Re:求助,如何处理3rd摄影机抖动问题

darkangel01: Re:求助,如何处理3rd摄影机抖动问题

我旋转的抖动倒是很轻微。。使用了很多算法都没用。
我在网上看到有人说,把摄影机的位置加入一个滤波算法中可以解决类似的问题。


额~~~

我自己想的方法都会回到一个问题:当视角和模型视线不在一个方向时,需要旋转。如果阀值角度很大的话,会导致最后恢复不到模型视线方向。如果阀值角度很小,又导致物体很小的旋转都会影响相机。产生抖动。虽然不大,但是感觉上就不好了。
矛盾的问题。。。
如果是我的方法不对的话。。。我也想不出其它的了,思维定势了。谁拽我一把,让我跳出去?

滤波的话,是过滤掉连续的往返小角度移动?

4

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
 楼主| 发表于 2007-8-22 09:22:00 | 显示全部楼层

Re:求助,如何处理3rd摄影机抖动问题

“过滤掉连续的往返小角度移动”
恩。我也觉得是这个意思。也是我们的目标了,就让摄影机移动不能突变。

我的旋转算是绑定的所以抖动不大。
看上面的描述Enigmaya兄的旋转也是做成滞后模式的?
度了,为什么阀值角很大时无法恢复到原位?



2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-8-22 23:54:00 | 显示全部楼层

Re:求助,如何处理3rd摄影机抖动问题

比如模型旋转了10度,如果阀值角度是15度,显然这时相机不会去旋转。就是我要给一个标准,什么时候相机才会去旋转。 你不是这样做的? 说来听听。

大概意思就是这样,不过实际不是用角度。
就是滞后模式。
如果用同时旋转的话没有抖动的问题,不过看上去很生硬。所以才想要实现滞后。

2

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2007-8-24 10:31:00 | 显示全部楼层

Re: 求助,如何处理3rd摄影机抖动问题

手工进行平滑处理,把旋转和坐标进行插值处理,可以使用球面最近距离角进行插值

4

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
 楼主| 发表于 2007-8-24 13:02:00 | 显示全部楼层

Re:求助,如何处理3rd摄影机抖动问题

可以具体描述一下么,“球面最近距离角”是什么意思
那移动部分如何差值?

2

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2007-8-24 18:54:00 | 显示全部楼层

Re: Re:求助,如何处理3rd摄影机抖动问题

darkangel01: Re:求助,如何处理3rd摄影机抖动问题

“过滤掉连续的往返小角度移动”
恩。我也觉得是这个意思。也是我们的目标了,就让摄影机移动不能突变。
...


????的???
都?]有??排除一些 <基本???>
例如 fps有多少
?例?碚f
1). fps 20 肯定抖的很???
2). fps 80 就不抖了? 大?...
fps 80 也可以比fps20?要?K
如果?示器垂直?呙柰?剿俣?0
game fps 80, ???斐捎?r
有?r 1fps 跑 1frame
有?r 1fps 跑 2frame
瞬?差了2倍

???????]?理 ?e的都是空?

1

主题

14

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2007-8-25 22:46:00 | 显示全部楼层

Re: Re:求助,如何处理3rd摄影机抖动问题

这个问题大概是我很早的时候求助的帖子吧,主要的问题是我们的ogre camera是被物理引擎驱动的,而我们物理这一部分还未调整好,所以player再某些情况会有抖动,而camera又是基于player的,所以就会导致camera的抖动,并且会将player抖动放大很多,其结果就是camera抖动高频低幅,看起来很不舒服,后来跑到水木清华bbs上请教有人提出每帧传入一个kalman滤波器应该效果很好,然后我研究了很久这个kalman滤波算法,没搞清楚。。。opencv有个C实现的算法,不过我也还是没研究透。。惭愧。。。最后只好用其他的办法暂时处理了一下,效果不太好。

如果camera是自己驱动没有物理引擎的话,绑定到节点或者不绑定应该都不会出现抖动的,不绑定的话,大概就这么做就ok了啊
Ogre::Vector3 pos = player_pos + player_up * 1.5 - player_dir * 2.5 ;
Ogre::Vector3 lookat = player_pos + player_up * 0.5 ;
然后设置pos以及lookat就ok,绑定的话就更容易了
camera初始化的时候设置一次位置,大概(0,1.5,2.5)就ok,然后让camera node去
autotrack player node,应该不会有什么问题
很多情况下绑定与不绑定其实就是local space与world space的差别了,当然有些情况也许需要例外考虑,比如fix yaw之类的

但是这种镜头就是硬梆梆的,没有弹性,就是类似于超级玛丽或者Tony Hawk那种效果,可以参考game programming gems4上面的文章实现这种效果,或者本版有位id是大堆数字的老大(抱歉没能记住id)有帖一个ogre的小游戏demo参考一下,不过我觉得那个camera的效果有些bug,有些地方似乎写的有点复杂了~~

darkangel01: Re:求助,如何处理3rd摄影机抖动问题

我旋转的抖动倒是很轻微。。使用了很多算法都没用。
我在网上看到有人说,把摄影机的位置加入一个滤波算法中可以解决类似的问题。

1

主题

14

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2007-8-25 23:02:00 | 显示全部楼层

Re: Re:求助,如何处理3rd摄影机抖动问题

Enigmaya: Re:求助,如何处理3rd摄影机抖动问题

比如模型旋转了10度,如果阀值角度是15度,显然这时相机不会去旋转。就是我要给一个标准,什么时候相机才会...


你说的这个“滞后”效果本版就有帖出来代码啊,那位22xx(都是数字id)的大大,他的demo就是实现了这个效果~~其实就是一个阻尼-弹簧系统,你也可以参考一下精粹4上面的文章看看,算法不太麻烦

4

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
 楼主| 发表于 2007-8-26 12:19:00 | 显示全部楼层

Re:求助,如何处理3rd摄影机抖动问题

本版那个用OGRE的小游戏OGRERPGtest.doc?那个移动的时候一样的在抖动啊?旋转他没有绑定也没有滞后出力所以不会出问题。而且那个和我一样似乎也用的newton引擎。

inufang大大那篇帖子我在网上也找到了。。。于是我也去看下kalman滤波器算法。。。一样没有看懂。。。。

今天作了试验了,如果直接设定移动和旋转速度的话,就完全彻底不会抖动!!!!

看来抖动的确是物理引擎驱动造成的,我的想法如下:

抖动是出现在物体达到阻尼最大速度时。这时人物的移动速度在不停的作微小的改变--因为当阻尼力等于驱动力时加速度=0,但是阻尼力不会精确的等于驱动力,一般回大于驱动力,所以下一帧速度会低于最大速度,计算得到的阻尼力又小于驱动力,人物又获得了加速度。如此反复速度就不停的变换。

计算方法:
newton中 阻尼力f=kv^2 驱动力F是设定值,那么物体就又最大速度 v=(F/k)^0.5

但是物理系统的精确度有限,无法得到精确的最大速度,按照上述物理过程速度就会在最大速度左右按帧抖动。

回 123776 抖动目前似乎跟FPS无关,100的FPS还是20的FPS抖动幅度是差不多的。而且抖动只限于观察追踪的人物,其它部分不会抖动所以应该不是你所说的基本问题。



不过设定速度似乎不是一个很好的解决方案,这样无视的物理引擎的效果。
原因找到了,求解决方法啊

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-21 18:19

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表