unity3d实现多个相机控制场景呈现的一些记录。。

来源:互联网 发布:医生升级数据 编辑:程序博客网 时间:2024/05/17 08:02

好吧,今天一个朋友说起有关3D场景中使用的是广角相机导致前方的UI成出现了变形,(这个是不是可以用来做成变脸,呵呵),这里简单介绍一下在NGUI中使用多个相机的一点心得,当然不一定要NGUI哦。

就从我现在手上的项目举例得了

先上图:



场景里事实上我用了两个相机来做呈现工作,一个用于照射后面的3D仓库,一个用来照射前方的按钮啊~坦克啊这样,虽然前方的坦克也是3D的但是我们这里姑且把他认为前方的按钮和坦克都是属于2D的GUI部分好了。

现在看看编辑场景的截图:




可以清楚的注意到这两个部分其实根本不在一个平面内,他们在同一个空间的不同位置:



现在描述一下原理,仓库在背后,而坦克列表在前方,所以我们可以通俗认为先看到了仓库后看到了坦克,于是坦克的2D层挡在了仓库的前面,换句话说,他们两个有各自的相机,仓库相机先“看”,2D相机后“看”,而显示器就是我们的大脑,两个相机看到的结果都在脑袋中进行呈现,便有了这样的层次感。

我们看看结构表:



我已经将3D部分和2D部分开了

所以2D部分我用的是正交相机:


看到那个矩形了么?


而3D部分我用的是广角相机:


从预览图我们也可以注意到他们所照射的部分是不同的。


刚刚说到不同的层,我这里大概都会这样做,把2D层放在GUI layer



而3D层我就放在default了:



接着说到相机的“前”和“后”的问题。


首先看看3D层的相机设置:



这里需要注意的主要两个,

一个是culling mask,表示相机照的是哪个层的东东。

还有一个就是Depth了,值越小就越先看到。这里3D相机的depth的值是0,如果要让2D相机照射的东西呈现在前面,很容易想到2D的depth的值需要大于0才行哦~


还有一点:clear flags 这个表示如何处理自己照射到的层以外的东东,我这里选择了清楚为黑色。注意,如果是前面的相机(例如这里的2d相机)可不能这么做,如果这样后“看”到的东西的相机就把先”看“到东西相机呈现的所有东西都抹掉了。

经过上面的推述:


2D相机我用的clear flags 为depth only,效果和don't clear一样哦~,各位可以试试。


恩, 我看这个说的差不多了,已经很罗嗦了~~~

原创粉丝点击