[Camera](GDC math tutorial)使用数学使你游戏中的相机更有范儿

原视频链接:
Math for game programmers:Juicing your cameras with math(youtube)

Math-for-Game-Programmers-Juicing(GDC vault)

上面是同一个视频,油管看不了的可以尝试第二个链接。非常有价值的视频!!!每个游戏开发者都应该看看。

你也可以在这个网站上找到相关的资源。
http://www.mathforgameprogrammers.com/


Overview

  • Camera Shake(相机抖动)

    • Translational vs Rotational
    • Noise vs Random
    • 2D vs 3D
  • Smoothed motion (平滑运动)

    • Parametric motion* (本视频没有细讲,请参考另一个视频Fast and Funky 1D Nonlinear Transformations或者是搜索关键字parametric curve、ease、tween等)
    • Asymptotic Averaging
  • Framing (取景)

    • Points of focus
    • Points of interest
    • Feathering
  • Voronoi split-screen (Voronoi 分屏)

    • Contruction
    • Player- vs split-relative
    • View merging
    • Feathering



Part I: Camera Shake

数学上有两个很有趣的区间,[0,1]和[-1,1]。我们喜欢把参数规范化到这些区间,然后利用各种曲线filter,以产生各种有趣的结果。

关于相机抖动,视频中定义了一个变量来描述,“trauma”。它具有以下特征:

  • 取值范围为[0,1]
  • 受到伤害、压力时(即需要相机抖动时),增加trauma值(如 +=0.2/0.5)
  • Trauma值随着时间线性减小
  • 相机抖动相关于 trauma的平方或立方(非线性)

关于非线性:
现实世界中有很多非线性的存在,如人对明暗的感知是非线性,此外,其实人的许多感觉都是非线性的。振动也是非线性的,比如弹簧。

偏移 vs 旋转:
相机抖动的效果可以通过对相机的位置或是角度进行微调来实现。视频中推荐:

  • 在2D游戏中:我们采用“偏移 + 旋转”的方案
  • 在3D游戏中:我们采用“旋转”方案
  • 在VR游戏中:慎用!!!结果你能想象!

实现方法:


2D

3D

随机 vs 平滑噪声(如perlin噪声):
上面的方法,我们使用随机值来产生偏移量。但使用平滑噪声(smoothed fractal噪声),通常会得到更好的效果。

小结


Part II :Smoothed motion

相机运动都需要平滑,否则会很突兀。最好的方法是使用Cubic Hermit曲线,参见(“Interpolations & Splines” from the GDC 2012 Math Tutorial)。视频中提供了简单的渐进平滑方法。


Tip: 垂直方向和水平方向并不需要使用同一种算法来平滑。渐进系数也可以是随时间改变的变量。

现在公式是帧相关的,我们只要加入timescale即可。



Part III: Framing

通常,相机的关注点是角色,即相机跟踪角色。但有些时候,我们想让相机尽可能关注些场景中特定的东西,如门,道具等等。所以我们通常会设置Points of focus & Points of interest

Points of focus

Points of interest

Points of interest通常只使相机发生小范围的移动。
我们可以定义参数“proximity”,即影响相机的优先级。一个常用的方法是proximity跟距离相关,我们设定距离阈值,使得proximity的值范围为[0,1]。通过与每个points的重要性importance想乘,即可得到影响相机移动的权重。



Part IV Voronoi split-screen cameras

上一部分,我们认识到相机要跟踪角色,使得角色不会从玩家视野内消失。那么,多人游戏就会带来难以解决的相机取景问题。此时,就不得不采用分屏方法了。视频中提供了voronoi图分割方法,感兴趣的可以找资料去了解。



总结

Takeaways

你可能感兴趣的:([Camera](GDC math tutorial)使用数学使你游戏中的相机更有范儿)