2019-01-09Unity VR分屏

                                                             第一部分

地址:http://blog.sina.com.cn/s/blog_1808558f70102y3rn.html

一、先上效果图

   主通道(右边)显示VR头戴设备中看到的场景,Unity中target display设置为"display 1"。

  副通道(左边)显示工程控制界面,Unity中target display设置为"display 2"。

   实际上显卡的输出为4个通道,屏幕两个,头显两个(左右)。


左1右1

二、实现步骤

 1.选择场景中负责输出UI的摄像机,分别修改“Culling Mask”、“Target Display”、“Target Eye”属性值如图所示。“Culling Mask”设置相机渲染层级,这里选择UI层级。“Target Display”设置相机输出通道,这里选择“display 2”第二个渲染通道。“Target Eye”同样对输出通道的一个设置,这里选择none,否则会使VR头显显示错误。

   2.选择场景中负责输出VR的摄像机,分别修改“Culling Mask”、“Target Display”、“Target Eye”属性值如图所示。“Culling Mask”设置相机渲染层级,这里选择 Everything。“Target Display”设置相机输出通道,这里选择“display 1”第一个渲染通道,如果与UI相机的“Culling Mask”设置反,头盔的显示会出错,头盔的显示要在主通道完成,虽然这可能造成UI界面中的”Slider“组件在发布后失效。“Target Eye”同样对输出通道的一个设置,这里选择none,否则会使VR头显显示错误。

   3.如果场景中设置了”Fog“全局雾,当你使用3D UI时会影响3D模型的显示,此时你可以改变UI相机的”rendering path“属性,以此改变全局雾对UI的影响。如图所示。

雾设置

三、代码

using UnityEngine;

using System.Collections;

public class fenping: MonoBehaviour {

// Use this for initialization

void Start () {

    Debug.Log("displays connected: " + Display.displays.Length);  

    // 检查其他显示器是否可用,并激活.   

    if (Display.displays.Length > 1)

      Display.displays[1].Activate();

    if (Display.displays.Length > 2)

      Display.displays[2].Activate();

  } 

}

//Display.displays.Length只有在发布出来后才能正确检测

                                                                                                            第二部分:

地址:https://blog.csdn.net/liang_704959721/article/details/80880052

  https://blog.csdn.net/fanglrui/article/details/74912349

      首先要先设置好不同的相机来渲染不同的视角,然后在每个相机上有一个TargetDisplay,一共有8个选项,说明最多能拓展,分8个屏幕,然后每个相机选择不同的displsy,在game视图上也有相同的东西,那个是为了开发时候方便看对应的屏幕的。 最后在写一个简单的脚本就能实现两个屏幕的效果了

。下面是代码。

 using System.Collections; using System.Collections.Generic; using UnityEngine; public class DisplayScreen : MonoBehaviour {

 void Awake() 

 { 

 for (int i = 0; i < Display.displays.Length; i++) 

 { 

 Display.displays[i].Activate(); Screen.SetResolution(Display.displays[i].renderingWidth, Display.displays[i].renderingHeight, true); 

 } 

 } 

只要将这个脚本挂到gameobject上就OK了,当然,想要测试这个效果需要两个屏幕。 ------------

不用删除  主 MainCamera  写上以下脚本挂上就行

private void Start()

    {

        //当前应用全局启用或禁用VR设备

        //启用时,VR输出自动镜像到主显示场景。主显示窗口仍然受Screen窗口和相关的API控制。

        //然后,这时候我们还需要在main camera中设置Target Eye把原本的Both设置为None.即可

        //http://fusedvr.com/building-a-vr-asymmetrical-game-from-scratch/

        UnityEngine.VR.VRSettings.showDeviceView = false;

    }

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 对Camera的理解一直在于棋牌游戏(2D)开发时Camera Projection的选择,其他方面的参数没有纠结...
    夜行水寒阅读 2,151评论 0 1
  • 本篇文章是基于谷歌有关Graphic的一篇概览文章的翻译:http://source.android.com/de...
    lee_3do阅读 7,477评论 2 21
  • 一、Unity简介 1. Unity界面 Shift + Space : 放大界面 Scene界面按钮渲染模式2D...
    MYves阅读 8,678评论 0 22
  • The eyes are not proud of their sight but of their eyegla...
    我是呜呜阅读 932评论 1 1
  • 儿子是懦夫? 昨天先生一回家就冲着儿子一顿歇斯底里,“你这个懦夫,你这个傻瓜,别人压你,你还不还手”。接...
    踏雪寻梅_6c7b阅读 391评论 1 3

友情链接更多精彩内容