“两个屏幕,一个主屏幕(显示器),一个投影屏幕(地幕投影或者墙面投影)。可以触控投影屏幕来与主屏幕做交互”

针对以上这个需求,本篇文章主要讲两个内容:
1.Unity项目分屏

2.Unity项目触控投影

一:工具介绍

编辑器:Unity(2018.1.2f1 (64-bit))(编辑游戏场景实现整个游戏逻辑)

插件:TouchScript(9.0)(使用其TUIO协议实现投影交互)

二:功能实现

1.Unity分屏

分屏其实很简单,Unity官方就有Multi-display功能,最多支持1-8个显示器。官方文档:地址

在这里我只做两个显示器的分屏显示。

必要基础配置:两个Game视图,两个Camera,两个Canvas。

1.Game视图配置

添加一个新的Game视图

然后进行分辨率设置,我的设置是主屏(Display1)为(1920x1080),分屏(Display2)为(1024x768)

2.Camera相机设置

场景自带一个Main Camera(主屏相机),然后再新建一个相机改名为Less Camera(分屏相机)

之后设置相机的Target Display,对应的是Game视图里的Display

Main Camera设置成Display1,Less Camera设置成Display2

3.Canvas画布设置

新建两个画布CanvasMain和CanvasLess

Render Mode设置为Screen Space-Overlay

Target Display设置为对应的Display  CanvasMain为Display1。CanvasLess为Display2。

UI Scale Mode设置为Scale With Screen Size

Reference Resolution设置对应的分辨率 CanvasMain为1920 x 1080。CanvasLess为1024 x 768。

4.激活双屏

配置都好了之后最后一步就差激活了。

激活方式很简单,就一段代码。

    private void Awake(){if (Display.displays.Length > 1){//激活分屏并设置分辨率为1024,768Display.displays[1].Activate(1024, 768, 60);}}

之后打包发布到windos,如果电脑接了两个显示器,自然能看到效果了。

OK到这里Unity分屏的功能就实现了。

2.投影互动

投影互动功能其实分为两步

1.我们在投影内操作的时候,如何去接收投影中的操作。

2.我们在得到投影内的反馈后,如何根据反馈去调用我们应用中的按钮,或者说逻辑。(这块比较复杂,我会贴出一个链接,详细讲解)

举个栗子:我们现在有一个投影映射在地面上,然后投影内有一个按钮,现在把脚放在了这个按钮上面,那么怎么知道我的脚是放在了这个按钮上呢。

好,对于这个操作。我们现在就把他分为两步来解析。

第一:我们要知道我们的脚已经放入了投影当中。

这里要用到一个技术设备:雷达(至于牌子型号由于一些原因不能相告,抱歉。)我们会在地面投影的前方摆设一个雷达,这个雷达一直在360度的转圈扫描,然后把扫描到的物体反馈给我们。但我们需要的其实只有投影区域那一块,所以中间做了一些逻辑,让雷达最终只反馈存在与投影区域中的物体,然后以坐标(0,0)到(1,1)的形式给我们。

第二:我们要知道我们的脚放在了投影中的那个按钮上。

因为第一步我们已经得到了脚的反馈,那么第二步我们要做的就是如何知道这个反馈正好反馈在了我们的按钮上。

在这里我只简单说一下逻辑,更详细的算法和使用方法会贴在后面的链接中。

因为我们已经得到了坐标(x,y),由于这个坐标系是0-1的。们还要进行一次转换,假设地面投影的分辨率是1024X768,那么我们就要把这个坐标转换为1024x768坐标系中的坐标。这样我们就得到了一个有实际值的坐标。接下来是我们的按钮,我们的按钮也存在与1024X768这个坐标系中,然后我们只需要拿到这个按钮的坐标和它的大小,就可以算出他所存在的范围。最后我们拿着我们的脚的坐标和这个范围去进行比较,如果坐标在范围内。那么我们就视为我们的脚踩住了按钮。

好了这里只是一个简单的想法逻辑,但具体的实现过程还是稍微有些复杂的。中间还运用到了TouchScript中的TUIO协议。

略。

这篇文档由于时间原因我写的比较仓促,写得不好的地方还请多多包涵,谢谢(*^_^*)

Unity分屏之使用TUIO实现互动投影相关推荐

  1. Unity 分屏操作

    Unity编辑器: 1.Game窗口 Add Tab->Game 2.增加一个摄像机(Camera)用于在分屏显示的窗口 3.设置Camer Inspector ->TargetDispl ...

  2. Unity分屏显示效果

    最近的项目遇到了分屏显示的需求,特此来研究一下方法.大体效果如下所示. 1.最简单粗暴的办法 复制4分相同的场景 包括NGUI界面和Cube对象 分别拖到4个不同的区域对调节摄像机的视图大小范围 这种 ...

  3. 安卓Unity分屏设置

    1.安卓分屏设置 1Camera 1Canvas :分2个UIPanel(1个作为上部份 1个作为下部份) 2.Camera设置

  4. Unity多屏,自定义屏幕大小

    @https://blog.csdn.net/m0_37381690/article/details/90047390 Unity 分屏,多屏,自定义屏幕大小 先看效果吧 新的改变 分屏,在Unity ...

  5. Unity中Oculus分屏相机和普通相机一键切换

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/50462157 作者:car ...

  6. Unity 多屏(分屏)显示,Muti_Display

    Unity 多屏(分屏)显示,Muti_Display 最近项目有个需求,主要用于在展厅的展示游戏. 比如,在一个很大的展厅,很大的显示屏挂在墙上,我们不可能通过操作墙上那块显示器上的按钮来控制游戏. ...

  7. Unity录屏功能插件NatCorder使用简记

    Unity录屏功能插件NatCorder使用简记 简单介绍 插件下载 使用简介 代码 参考链接 简单介绍 NatCorder 是一个轻量级且易于使用的全功能视频录制 API,适用于 iOS.Andro ...

  8. Android系统的三种分屏显示模式

    Google在Android 7.0中引入了一个新特性--多窗口支持,允许用户一次在屏幕上打开两个应用.在手持设备上,两个应用可以在"分屏"模式中左右并排或上下并排显示.在电视设备 ...

  9. Unity3d+Android:分屏小窗还原分辨率触摸异常

    小米OPPO手机小窗或者分屏再恢复全屏,游戏的分辨率触摸异常 小窗事件打印 01-07 11:32:48.604: E/SmallWindowStateHelper(3005): updateSmal ...

  10. [U3D+Vuforia+VR眼镜]分屏设置指南

    版本: ​ unity 2018.2.14f1 Vuforia 7.2.20 关键: ​ 添加cardboard ​ 将视觉改变为"video see Through"(windo ...

最新文章

  1. ISDN,俗称一线通!
  2. 用Leangoo思维导图管理OKR,目标管理
  3. 确认访问用户身份的认证
  4. android java.lang.linkageerror_使用eclipse中的maven构建web应用出现 java.lang.LinkageError异常...
  5. bootstrap-表单
  6. Go语言开发设置代理Goproxy,提高Go安装模块速度
  7. 网平差中的基线定权(松弛因子)
  8. 2008下搭建easypanel(康乐)虚拟主机控制面板
  9. 华为MA5626-8密码恢复及设置
  10. 什么是瀑布图_什么是瀑布图以及为什么我需要一个
  11. 2017年数据库技术盘点
  12. frl啥意思_轻钢笔记《FRL60/60/60是什么意思?》
  13. 简单介绍psutil库(virtual_memory()、cpu_percent()
  14. 天地图key申请_关于天地图官网资源的一些记录
  15. 【JZOJ 省选模拟】我的朋友们
  16. 专升本管理学知识点总结——组织
  17. 圆是由原子构成的吗?
  18. 小白易语言注册机post 取短信内容、单线程实战,软件日志 day06
  19. op 环路 开环 闭环 增益的 关系 术语
  20. 韩赛尔与格蕾特:女巫猎人(Hansel and Gretel:Witch Hunters)

热门文章

  1. 在谷歌浏览器中安装IE Tab插件
  2. 左程云中级提升班-9在有限时间内获得最大奖励以及需要的最少时长问题
  3. HTML5前端开发实战01-学生信息表
  4. 为什么你需要软件运维服务
  5. 计算机网络练习题-4
  6. Weblogic安装及配置
  7. 深度学习中的激活函数及其作用
  8. testbed常见问题及处理(1)
  9. 无线ap ntp服务器,我有一优科 ZoneFlex 7982 的无线AP,怎样可以进AP系统进行设置...
  10. wincc mysql_Wincc操作数据库SQLSERVER