zoukankan      html  css  js  c++  java
  • 多摄像机同时协作运行

    摄像的渲染层的概念

      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)尽量不要滥用多摄像机协作。

  • 相关阅读:
    分享:liblfds 6.1.0 发布,C 数据结构库
    strchr C++ Reference
    爱上MVC3系列~PartialView中的页面重定向
    基础才是重中之重~Conditional特性使代码根据条件在debug或者release模式中执行
    爱上MVC3系列~Html.BeginForm与Ajax.BeginForm
    爱上MVC3系列~Razor页面中的共享namespace不起作用了(解决自定义扩展方法不能识别的问题)
    爱上MVC3系列~RenderAction与RenderPartial及一个页面多个表单提交
    NHibernate Criteria中的And, Or
    poj 2528 Mayor's posters(线段树区点)
    探索iptables BPF模块的悲惨历程
  • 原文地址:https://www.cnblogs.com/-soy/p/5880214.html
Copyright © 2011-2022 走看看