美文网首页
[Camera](GDC math tutorial)使用数学使

[Camera](GDC math tutorial)使用数学使

作者: 珏_Gray | 来源:发表于2019-08-22 14:55 被阅读0次

    原视频链接:
    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 (平滑运动)

    • 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)使用数学使

          本文链接:https://www.haomeiwen.com/subject/ueogsctx.html