什么时候必须使用UI相机? 多个相机的作用原理?
首先,要从主画布说起,maincanvas,这个有什么限制?
主画布是一张默认用来绘制UI的地方,这些UI必须是系统提供的UI组件,在画面下挂一个3D物体或非UI的2D物品是不会被绘制到画布上的,但是仍然会绘制到世界空间,但会被UI挡住,因为UI是绘制在所有其它游戏元素(3D物体,精灵,特效)之上的。因为画布的渲染队列数值最高。
渲染队列数值大的绘制会覆盖数值小的绘制,
sprite属于3000的半透明队列,因此,不可能将sprite放到UI上显示,它永远被UI盖住,除非重写它的shader。
因此,要想在UI之上显示一个3D模型,须要使用UI相机。所谓UI相机是指为相机指定target texture参数,相机将绘制到这张贴图而不是屏幕上。
然后将磁盘上生成的这张贴图赋给一个rawtexture组件,这样就将3D模型转为图片然后画到了UI上。
多个相机的作用是根据它们的depth值从小到大来顺序起作用的,与相机位置无关,与相机在场景层级中出现的先后无关,主相机默认 depth:-1。根据相机中的culling mask 属性来决定相机绘制的物件种类,根据相机视口来决定相机可见范围。举例:有A,B,C三个相机,深度值依次为-1,0,1,则绘制时:先启用A相机,从它的角度拍摄一张照片,这张昨默认是渲染到屏幕上的。然后启用B相机,默认设置,渲染到屏幕,这时候屏幕画面被B相机的画面覆盖(A相机在屏幕上的所有像素被覆盖掉),若想保留A相机的画面,同时将B相机的画面叠加上去,这时候可以设置相机的clear color为 depth only
另外:深度测试时,物体的深度值是指物体在相机坐标系中的Z值
PS: 渲染队列按数值划分:
1000:background, 2000: geometry, 3000:transparent, 4000:overlay,文档说明如下:
For special uses in-between queues can be used. Internally each queue is represented by integer index; Background is 1000,Geometry is 2000, AlphaTest is 2450, Transparent is 3000 and Overlay is 4000. If a shader uses a queue like this:
Tags { "Queue" = "Geometry+1" }
什么时候必须使用UI相机? 多个相机的作用原理?的更多相关文章
- 有关默认相机转VR相机
呃...15年开篇~ 去年想写一个有关默认相机转VR相机的脚本,当时没写完,今天不小心翻到并写完了,而且思路也和原来完全不一样了,增加了是否删除原相机与是否转换所选相机的选项. 由于国内VR版本比较混 ...
- 干货 | LIDAR、ToF相机、双目相机如何科学选择?
点击"计算机视觉life"关注,置顶更快接收消息! 本文阅读时间约5分钟 本文翻译自卡内基梅隆大学 Chris asteroid 三维视觉技术的选择 传感器参数及定义 LIDAR ...
- Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理 ...
- unity, 相机空间 与 相机gameObject的局部空间
在unity里 相机空间 与 相机gameObject的局部空间 不重合. Camera.worldToCameraMatrix的文档中有这样一句话: Note that camera space m ...
- Android相机使用(系统相机、自定义相机、大图片处理)
本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理(避免OOM),还有简要提一下有些人Surf ...
- Android调用系统相机以及自定义相机
0.综述 自定义相机,此处展示简单的相机功能,官方文档中还有相应关于视频拍摄的内容,此处不提 1.添加权限 <!--相机权限,数据存储--> <uses-permission and ...
- Unity设置相机正交相机和透视相机的动态切换
Camera.main.orthographic = true; Camera.main.orthographicSize = 4; Camera.main.orthographic = ...
- 2D UI和3D UI的工作原理
2D UI的工作原理 UI控件的位置在UI Root 的红框(视窗)上,也就是UI控件的z轴,相机的z轴,UI Root的z轴都是0,因为2D UI都是纯粹的2D图片按层次显示,不会不出现三维立体效果 ...
- 创建第一个UI
创建一个2D UI 制作UI时,首先要创建UI的"根".在Unity顶部NGUI菜单中选择Create,然后选择2D UI. 创建完成后,在Scene窗口中,NGUI自动生成了一个 ...
- 【Android Developers Training】 50. 控制相机
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
随机推荐
- BZOJ4152 AMPPZ2014 The Captain 【最短路】【贪心】*
BZOJ4152 AMPPZ2014 The Captain Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点 ...
- P2P UPD打洞原理
转自:http://blog.pfan.cn/fengfei/18828.html 首先先介绍一些基本概念: NAT(Network Address Tr ...
- 使用dnSpy对目标程序(EXE或DLL)进行反编译修改并编译运行
本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 本文使用的工具下载地址为: https://github.com/cnxy/dnSpy/arc ...
- python编程规范系列--建议08~18
本系列来自<编写高质量代码 改善python程序的91个建议>的读书笔记整理. 本章主要内容 建议8:利用assert语句来发现问题 建议9:数据交换值时不推荐使用中间交换变量 建议10 ...
- bean作用域
https://blog.csdn.net/u011468990/article/details/49995865 其中比较常用的是singleton和prototype两种作用域.对于singlet ...
- pat1022__字符串查找
主要是对字符串的查找,为了方便并且快速的实现查找,用map会比较方便 同时如何把一个带有空格的字符串变成多个单词也有一个小技巧 char *point=book[i].keyWord;//关键词分离 ...
- Unix网络编程 3.9 readline函数
其实看APUE时就想试着写些简单的stdio函数了,但是一直没实践,看到这里时发现书上写得不完整,便敲代码试了下. 第1个readline速度非常慢原因在于每次读取字符都执行了系统调用read(),而 ...
- 【经验】实现STL算法时遇到的模板编译错误问题
在实现set_union算法时调用了自己写的copy算法,出现了以下问题. Error 1 error C2665: 'xyz_stl::__copy' : none of the 2 overloa ...
- php 实现四种排序两种查找
function bubbleSort($arr){ $len = count($arr); if($len<=1) { return $arr; } for ($i=0;$i<$len; ...
- GOF23设计模式之状态模式(state)
一.状态模式概述 用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题. 结构: (1)Context 环境类 环境类中维护一个 State 对象,它定义了当前的状态. (2)State ...