zoukankan      html  css  js  c++  java
  • 游戏开发Camera之Cinematic Camera-深度


    人的视觉系统是二维的,它通过生理和心理的暗示来感知图像的深度,在现实世界中视觉系统会自动用深度线索depth cue来确定对象之间的距离
    游戏画面也是二维的,用x,y轴来定义,画面深度用z轴来定义,可以通过创造深度线索depth cue来产生画面纵深感。
    强化Z轴,控制物体与周围环境的空间位置关系。

    linear perspective线条透视

    线条透视是一种纵深线索,他与大小和next纵深线索有关,下图是一条公路。

     


     
    强化了近大远小的视觉效果。
    下图人物的大小充当了上图的公路。
     

     

    著名的Ames room视觉错觉,让人误以为两个人是在同一平面上的错觉,就是因为没有给出足够的透视线索,而且被屋子的“水平”地面和天棚所误导。实际上两个人是有深度关系的。

     
     
    其实这个屋子是这样的


    重叠

    重叠是一种视觉暗示,也是一种重要的深度线索,经常出现在绘画、漫画、动漫等等,来体现前后关系。
    如下图,我们看到的是三个“平面”此时看起来它们是同一平面。把它们加上遮挡关系,你的视觉就会暗示你红色在紫色上面,紫色在绿色上面。
     
    遮挡关系产生的视觉欺骗,下图是正交透视正方体,你对他他既可以是俯视角度(左侧),也可以是仰视(右图),全部因为有一个蓝色长方形的重叠产生的深度效果传达给你的大脑。
     
    思考:此时如果做一个视觉欺骗,把depth在后面的物体,比前面的物体后渲染,就会呈现后面的物体在前面的假象,此时会有什么效果呢?
    举个动漫中的例子,非常平面的两个人通过重叠产生深度关系,下图二人如果把小狼放在小樱前面也不会有违和感。
     

    relative height相对高度

    此 处主要是地平线上下作对比,因为地平线上的物体是以天空为对比,地平线下物体是以地面为物体。举一个最简单的例子,同样大小的飞机,在天上就是离你很远真 正的飞机,在地上就是离你很近的飞机模型。因为大脑默认把物体与地面和天空做对比,所以在地平线上物体被认为是离天空很近,所以让人感觉离得很远,而在地 面的物体大脑默认和地面作比较,所以让人感觉离的很近。
     
     

    素描等绘画中的深度

    素描中的深度主要是明暗关系,近大远小,近实远虚,前紧后松,
    也有重叠的使用,对远处物体的边缘进行虚化,细节弱化,颜色接近于背景色等等。



    relative size相对大小

    相对大小产生深度线索
    借 用一果壳朋友的回答眼睛里的水晶体相当一个凸透镜,视网膜相当像面。若看清楚某个物体,必须使它的像落在视网膜上。从人眼瞳孔中心对物体的张角与视角相 等,所以视角的大小决 定了视网膜上物体的像的大小。同样高的两棵树,离开眼睛远的一棵,它的视角比近处的那棵的视角小,因此,远处的树看起来比近处的小,近大远小就是这个道 理。 简单的说,就是视角不同。
    原理如下图(博主简单画了个图。。不要介意。。)

     

     

    如下图,蓝色小球缩小后明显感觉是在红色小球后面
       

    比如电脑游戏之中的第一款FPS游戏,德军司令部3D(Wolfenstein 3D),就用这一点产生了深度。

     


    aerial perspective空中透视

    产生原因,大气散射,详见这篇文章unity3d shader之实时室外光线散射(大气散射)渲染 ,大气散射光,短波或蓝色波长的光易被大气粒子散射,所以远处物体大多偏蓝,这也是天空是蓝色的原因。阳光由于散射增加会减弱并变色。物体也会随着距离增加散射增加而减弱并变色。
     
    大气中散射由多种原因产生,微粒,尘埃,水蒸气等等
    散射分为瑞利散射Rayleigh Scattering和米氏散射 Mie Scattering  
    瑞利散射是米氏散射的一种
    当光线穿过大气层,大气中气体蓝色部分瑞利散射强烈,但是红色或黄色等波长长的瑞利散射很弱。
    由于天空产生的蓝色的光的散射,阳光到地面的颜色发黄。在日出日落中, 由于空气密度的增加和地球表面附近的粒子,瑞利散射效应更明显。
    相比之下,水滴组成云与可见光的波长大小类似,更倾向于米氏散射而非瑞利散射。假设所有可见光的波长分布大致相同,因此云看起来是是白色或灰色的。

    米氏散射大多数为烟雾和云散射牛奶、生物组织和乳胶漆之类大粒子。
    在多云天气主要是米氏散射(水滴)。发生米氏散射的介质中粒子大,为球形粒子
    在空中透视中,近处远处的物体对比大概是这样的,颜色变化,边缘模糊,等等。
     

    博主之前在unity引擎中做的散射渲染
     
     
     
    这个在刺客信条中很常用啊,就算不去鸟瞰点,不触发信仰之跃,随便爬几层建筑,•••••••••••••••••随处都是空中透视
     
     
     
     
     


    texture gradient纹理梯度

    通过纹理的近大远小来产生深度

     

     

    在游戏中通常用,地板纹理,石路,砖路等等体现深度,此方法经常与各向异性合用
    比如 unity这个各向异性过滤的例子(左无右有),纹理的近大远小充分的产生了深度,这个例子还使用了线条透视。
     
    GTA5中的例子
     
     





    其他

    不可能图形impossible figure

    不可能图形impossible figure的深度,
     


    阴影产生深度

    大脑先验假设光线来自上方(太阳光)
     
     


    figure-ground perception

     

    博主近期渲染:最近用unity5弄的一些渲染

     

                                  ---- by wolf96




  • 相关阅读:
    7zip在DOS命令行用法总结
    WinRAR在DOS下压缩/解压缩的使用方法
    Linux关闭防火墙命令
    将java的jar包,打包为rpm 安装包
    spring mvc 基于注解 配置默认 handlermapping
    Spring + Spring MVC + MyBatis 整合
    Android开发环境搭建全程演示(jdk+eclipse+android sdk)
    使用Spring MVC表单标签
    context:component scan配置策略
    Spring AutoWiring Beans with @Autowired annotation
  • 原文地址:https://www.cnblogs.com/zhanlang96/p/4925479.html
Copyright © 2011-2022 走看看