游戏开发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
游戏开发Camera之Cinematic Camera-深度的更多相关文章
- [游戏开发-学习笔记]菜鸟慢慢飞(四)-Camera
游戏开发中,主相机应该是最重要的GameObject之一,毕竟游戏呈现给玩家,就是通过它. 相机的使用,在不同的游戏中,有很大的不同.这里总结一下自己学到的一些相关知识. 固定位置-游戏过程中相机的T ...
- Android 音视频开发(四):使用 Camera API 采集视频数据
本文主要将的是:使用 Camera API 采集视频数据并保存到文件,分别使用 SurfaceView.TextureView 来预览 Camera 数据,取到 NV21 的数据回调. 注: 需要权限 ...
- 喵的Unity游戏开发之路 - 轨道摄像机
前言 很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀的Unity3D游戏开发教程,翻译整理后放送给大家,教您从零开始一步一步掌握Unity3 ...
- Unity3D游戏开发初探—1.跨平台的游戏引擎让.NET程序员新生
一.Unity3D平台简介 Unity是由Unity Technologies开发的一个让轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的 ...
- Unity3D游戏开发初探—2.初步了解3D模型基础
一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...
- Unity3D游戏开发初探—3.初步了解U3D物理引擎
一.什么是物理引擎? 四个世纪前,物理学家牛顿发现了万有引力,并延伸出三大牛顿定理,为之后的物理学界的发展奠定了强大的理论基础.牛顿有句话是这么说的:“如果说我看得比较远的话,那是因为我站在巨人的肩膀 ...
- [Unity游戏开发]向量在游戏开发中的应用(三)
本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/51088236 在上一篇博客中讲了利用向量点乘在游戏开发中应用的几种情景.本 ...
- 【Unity3D游戏开发】NGUI之多分辨率下完美分布式协同开发 (五)
NGUI多分辨率下完美分布式协同开发:不同分辨率下相对于屏幕坐标的Perfab数据不再丢失 NGUI多分辨率下完美分布式协同开发不同分辨率下相对于屏幕坐标的Perfab数据不再丢失 开发问题 原因分析 ...
- Unity3D独立游戏开发日记(二):摆放建筑物
在沙盒游戏里,能自由建造是很重要的特点,比如说风靡全球的<我的世界>,用一个个方块就能搭建出规模宏大的世界.甚至有偏激的人说,没有自由建造,就不是一个真正的沙盒游戏.的确,沙盒游戏的魅力有 ...
- Unity3D游戏开发之连续滚动背景
Unity3D游戏开发之连续滚动背景 原文 http://blog.csdn.net/qinyuanpei/article/details/22983421 在诸如天天跑酷等2D游戏中,因为游戏须要 ...
随机推荐
- ubuntu出现有线已连接却无法上网
或者直接追加到/etc/sysctl.conf 如果遇到“设备未托管”,一般是台式机默认移动ip后禁用网络. 那么修改/etc/NetworkManager/NetworkManager.conf,设 ...
- python小爬虫【1】
爬取百度贴吧的图片 分析贴吧源代码,图片所在位置是:<img class="BDE_Image" src=“........jpg” pic_ext..... 所以正则匹配是 ...
- mysql 表操作
创建表 简单的方式 CREATE TABLE person ( number INT(11), name VARCHAR(255), birthday DATE ); 或者是 CREATE TABLE ...
- 简单的背包变形HDU1203,HDU2955
今天一直在写背包,不过中间停了一段时间在写shell. 一直在做01背包.今天做了这两题很相似的背包 首先是HDU1203 Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要 ...
- gem install 出现Errno::ECONNRESET: Connection reset by peer - SSL_connect (https://ruby.taobao.org
这几天在ubuntu14.04.1 64位上安装rails的时候,由于大天朝的原因,更换了淘宝源,然后执行 gem install rails 这个时候,总是会提示 Errno::ECONNRESET ...
- StringBuilder字符串拼接类
StringBuilder StringBuilder是在using System.Text命名空间下的一个成员. 在做字符串拼接的时候,因为字符串是引用类型,新的字符串是会再内存中创建的,所以用+号 ...
- 初学socket,c语言写的简单局域网聊天
在客户端所在的目录新建一个IP.bwj的文件,写上服务端的IP,不要带空格,保存.双方都打开一个客户端和一个服务端就可以聊天了,(可以写自己的IP,自己跟自己聊..)没有第三方服务器,服务端所在的电脑 ...
- JSOP
说到 JSONP 就要说到同源策略(Same Origin Policy), 同源策略是浏览器最核心的也是最基本的安全功能. 浏览器的同源策略,限制了来自不同源的 “document” 或脚本,对当前 ...
- WCF X.b 操作引用了已经从 Y.b 操作导出的消息元素 [http://tempuri.org/:b]。可以通过更改方法名称或使用 OperationContractAttribute 的 Name 属性更改其中一个操作的名称...
详细错误如下: 很可能由 IncludeExceptionDetailInFaults=true 创建的 ExceptionDetail,其值为: System.InvalidOperationExc ...
- 无插件Vim编程技巧
无插件Vim编程技巧 http://bbs.byr.cn/#!article/buptAUTA/59钻风 2014-03-24 09:43:46 发表于:vim 相信大家看过<简明Vim教程& ...