游戏开发Camera之Cinematic Camera-深度

来源:互联网 发布:初学c语言看什么书好 编辑:程序博客网 时间:2024/04/27 19:03

人的视觉系统是二维的,它通过生理和心理的暗示来感知图像的深度,在现实世界中视觉系统会自动用深度线索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   http://blog.csdn.net/wolf96




2 0