多摄像机同时协作运行

摄像的渲染层的概念

  Unity中,每一个物体都有一个所处的“层”的概念,也就是物体的Layer,而摄像机中可以通过设置CullingMask来决定该摄像机只渲染哪些层的物体。对于UI来说,这个原理也一样使用,因为NGUI的每一个控件元素,本质上都属于一个GameObject,都有自己的层;每一个UI Root都会自带一个UI Camera来渲染UI。

  利用这个原理,可以实现多个摄像机来进行UI的渲染,例如,场景里可以放置一个3D摄像机负责渲染3D UI,还可以放置一个2D摄像机,负责渲染2D UI等。理论上来说可以放置无限多个摄像机来分别渲染不同层的内容。

  当场景中有两个摄像机都会渲染同一个层的时候,会造成画面重复显示。

多摄像机协作的应用范围

  因为Unity中很多元素不适合和UI控件放在一起进行显示,比如粒子、比如3D的模型。例如,在UI中显示一个3D模型,一般就会使用一个UI摄像机来负责渲染UI控件,用另一个摄像机来渲染3D模型,然后让这两个摄像机渲染的内容进行叠加,呈现出一幅完整的UI图像。

如何创建多个UI摄像机

  在NGUI中,如果创建了一个UI Root,当再点开Unity顶部的NGUI菜单,企图通过Create菜单去创建一个新的UI时,会发现创建UI的选项已经变成灰色,无法再创建,这是因为NGUI默认只允许场景中出现一个UI Root。

  要创建多个UI摄像机时,首先得考虑是否需要UI Root,如果有UI图片做成的控件,需要被UI Root根据屏幕自动进行缩放,那么就需要一个UI Root来管理这些UI控件。

  为了创建多个UI Root(每个UI Root会自带一个UI摄像机),可以关闭场景中已经存在的UI Root物体的UI Root组件,然后再单击Unity顶部NGUI菜单通过Create创建。

  如果不需要的多个UI Root,只需要一个新的UI Camera,那么可以在场景中新创建一个摄像机,创建方式为,在Unity顶部菜单单击GameObject,选择Create创建一个。

  然后在这个新创建的摄像机上附上一个UI Camera组件即可,组件附加方法可以在Inspector面板中依次单击AddComponent->NGUI->EventSystem(UI Camera)。如果它渲染的物体不需要接收UI的事件(如单击拖拽等),这个UI Camera组件就没有必要附上。

多摄像机协作的注意事项

  (1)规划并设置好每个物体的Layer,不要混乱。

  (2)设置好每个摄像机的CullingMask,确保场景中的摄像机之间不会重复渲染同一层。

  (3)对于多个UI Root的情况,更要检查它们所属的层和该UI Root渲染的层是否对应。

  (4)尽量不要滥用多摄像机协作。

时间: 2024-10-13 20:32:32

多摄像机同时协作运行的相关文章

Apache反向代理结合Tomcat集群来实现负载均衡(一)

好的博文一般都能做到"望题知文",看下标题就知道下边要讲的内容,写这个标题时犹豫了一下,本来要将标题定位apache+tomcat实现负载均衡,可是又觉得这样显得比较模糊,后来想了一下,觉得利用Apache做负载均衡底层结合的是tomcat的集群功能,所以便用了这个标题. 首先先做下集群与负载均衡的概念区分,很多人一直都不理解这两个概念,不知道该如何区分这两个概念,又觉得这两个概念仿佛是一个技术的两个术语,其实不然,下边介绍下这两个概念: 什么是集群(Cluster) 所谓集群是指一组

ubuntu入门

Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音.了解发音是有意义的,您不是第一个为此困惑的人,当然,也不会是最后一个:) 大多数的美国人读 ubuntu 时,将 u 作为元音发音,类似单词 who 或者 boo ,重音在第二个音节即 u'buntu ,oo-boon-too . 如果您喜欢撒哈拉,喜欢它令人窒息的温柔.梦幻般的寂寥还有张扬恣肆的旷远,您大可在第一个 u,后面带些嗡嗡声: oom-boon-too. Ubuntu的中文发音大约为:

概念源于生活

今天有幸读到了“Microservice 微服务的理论模型和现实路径”,感触颇深,之所以感触不是因为其理论的精彩万分,而是文章瞬间触动了我平静的心灵,泛起了我对生活理解的涟漪. 阅读过后,我意味深长地回复了作者:“当下一个运行了五年的项目在两年前根据项目的特性和自己觉得应该“简单化”的理念进行了架构重改,目前良好地协作运行着.原来我们是那么地接近所谓的“微服务”概念,看来概念还是源自于对生活的理解”.这种似曾相似的感觉,可能会在生活当中不断重演.在这里不是说明自己有多么牛B,而是让我更加明白,概

php 信号量

一些理论基础: 信号量:又称为信号灯.旗语 用来解决进程(线程同步的问题),类似于一把锁,访问前获取锁(获取不到则等待),访问后释放锁. 临界资源:每次仅允许一个进程访问的资源. 临界区:每个进程中访问临界资源的那段代码叫临界区 进程互斥:两个或以上的进程不能同时进入关于同一组共享变量的临界区域,即一个进程正在访问临界资源,另一个进程要想访问必须等待. 进程同步主要研究如何确定数个进程之间的执行顺序和避免数据竞争的问题 即,如何让多个进程能一块很好的协作运行 举例子:(来源百科) 以一个停车场的

测试用例模板和例子

该范例已经包含一个测试用例的模板. 项目/软件 技术出口合同网络申领系统 (企业端) 程序版本 1.0.25 功能模块名 Login 编制人  xxx 用例编号- TC-TEP_Login_1 编制时间  2002.10.12 相关的用例 无 功能特性 用户身份验证 测试目的 验证是否输入合法的信息,允许合法登陆,阻止非法登陆 预置条件 无 特殊规程说明 如数据库访问权限 参考信息 需求说明中关于“登陆”的说明 测试数据 用户名=yiyh 密码=1 操作步骤 操作描述 数 据 期望结果 实际结果

多线程之生产者消费者模式

最近在项目中需要使用使用多线程实现一种功能,和生产者消费者模式类似,因此,学习了下生产者消费者模式的多线程实现.在生产者消费者模式中,通常有两类线程, 即若干个生产者线程和若干个消费者线程.生产者线程负责提交用户请求,消费者线程则负责处理生产者提交的任务.生产者和消费者之间则通过共享内存缓冲区进行通信. 在这里我们选择BlockingQueue做为共享内存缓冲区. 首先,我们构建生产者生产的,和消费者需要处理的数据PCData,即相关任务数据. public class PCData { pri

软件架构(2):同步与异步问题

一.       基本概念 一个大型的程序系统常常是由很多不能功能模块组成的.程序系统运行时不同功能模块要按一定顺序执行,以协同完成一件任务.功能模块协作运行完成一件任务存在同步和异步两种方式.如果在某一时间段,这个程序系统的所有功能模块都在为完成相同的一件任务而服务,某一个功能模块在完成一件任务的子任务后,需要等待其他功能模块完成子任务,这样只有当全部功能模块按顺序完成一件任务后,程序系统才能接收下一个任务,功能模块是串行运行,这称之为同步模式.反之,在某一时间段,这个程序系统的不同功能模块可

lua 协程

-- coroutine api: create, resume, yield, wrap. running, status -- coroutine status: suspend, running, normal, dead local stop = function() return coroutine.yield(7, 9) end local co = coroutine.create( function(a, b) print("co-body 1: ", a, b) lo

进程和线程总结

进程和线程都是操作系统提供的一种并发手段,只不过并发层次不同: 进程属于在处理器层次的并发:线程则属于在进程这个层次的并发.如果我们进入计算机体系结构里,就会发现,流水线提供的也是一种并发,不过是指令级的并发 如果将一个进程分解为若干个线程,则可以让不同的线程运行在不同的核上,从而提高进程的执行速度.一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程 区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位 线程是进程的一