我想在opengl中使我的相机震动
我的旧算法是:
setCamPosXYZ(x+randx,y+randy,z+randz);
但它并不是最好的。什么是更好的解决方案,真实世界的相机震动?
答案 0 :(得分:4)
我发现了一个高频率的sin函数,逐渐减小的幅度看起来很有说服力。如果你希望它看起来更随机,你可以为每个方向提供不同的频率,它会随机地反弹。一个sin函数在物理上也是有意义的,因为如果你认为摄像机安装在一个非常坚硬的弹簧上有一些阻尼,那么它就会像一条阻尼曲线一样振荡。
答案 1 :(得分:1)
生成x + randx,y + randy,z + randz 然后在现有相机位置之间平滑(线性插值)动画 和x + randx,y + randy,z + randz 为了顺利的摇晃。
动画设置顺畅地设置你的新动画 x在每个时间步到xinitial + k(randx)
一旦到达随机摇动点,就会生成一个新的随机点并再次进行动画处理 使用线性插值
答案 2 :(得分:1)
真实世界的相机抖动是对某种力量的反应,如bumb或冲击波,所以它是一个直接的运动,然后是另一个方向的反向运动,来回移动直到它稳定。
所以从一个消散的正弦波开始,然后你可能会添加一些随机的,以使它更加生涩。
此外,您应该添加相机的轻微旋转以及移动。