Unity分屏之使用TUIO实现互动投影

Unity-TouchScripts中使用TUIO的记录和简单的代码分析 端午三天假,刚过完端午就被老板拉过去加班去了,端午三天假加了两天班,好了不吐槽了。记录一下Unity通过TouchScript插件中TUIO协议的使用以及代码的简单分析。 先说一下项目的大致情况,对方通过TUIO协议发送Blob格式的消息,发送的Blob消息中的面积(Area)是一个识别的重要信息,但TouchScript中返回的是Pointer类,但这个类中并没有我需要的消息。后来分析了一下代码的流向最终拿到了需要的信息。 TuioInput.cs 首先分析一下Tuio的输入,先看一下Unity函数 阅读详情
AI摘要

本文介绍了Unity项目的两个功能实现,一是分屏功能,利用Unity官方Multi - display功能,通过配置Game视图、Camera相机、Canvas画布并激活双屏来实现;二是触控投影互动,分为接收投影操作和根据反馈调用应用逻辑两步,还用到雷达设备和TouchScript的TUIO协议。

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

针对以上这个需求,本篇文章主要讲两个内容:
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

图1:具有目标显示选项的Camera Inspector

 

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,768
            Display.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地屏效果的简单实现流程 Unity实现地屏展示开发流程,简单易学,方便移植。 阅读详情

相关推荐

Unity3D触控开发资源包:基于TUIO技术

在Unity3D中实现触控功能,首先需要熟悉该引擎提供的触控输入API。Unity3D提供了一套丰富的触控API,允许开发者捕获和处理用户的触控输入。通过这些API,可以访问设备触摸屏上的手指触摸点的移动、压力、面积等信息。// 获取当前触摸点的数量// 遍历所有触摸点i++) {// 获取触摸点的位置// 获取触摸点的初始位置// 获取触摸点的移动距离// 获取触摸点的触控压力// 判断触摸点是否是新的触摸// 判断触摸点是否被抬起。

weixin_28235889的博客 1143

Unity TUIO雷达入门

相信能够看到这篇文章的朋友应该都知道什么是雷达TUIO,这里就不多做介绍。我在这里只是说明怎么做。 1,首先打开Unity新建一个工程,对于Unity的版本没有要求(不过现在大家用的版本应该都至少在2018版本了吧); 2,下载TUIO的插件TouchScripts,直接在Unity商店里搜索TouchScripts下载,这个插件是免费的; 3,下载好之后我们直接导入插件就好了,导入后我们可以在菜单Window找到TouchScript-Settings进行设置,记得勾选上下图按钮,以便我们能够接收到雷达

weixin_43956644的博客 8784

unity+tuio实现触屏demo

unity+tuio协议的多点触控,简单的Demo...........................

UNITY TUIO的使用

一 、点击一个物体要发生的事情 1、把预制体TouchManager 拖到 Hierarchy 试图中 2、在TouchManager的 Inspector 中添加一个组件《Tuio Input》 3、在Main Camera上添加一个组件《Standard Layer》, 3、在需要的点击的物体上添加一个主键《Press Gesture》 4、在需要点击的物体上添......

幻辰科技 nbhctec.com 2587

TUIO结合Unity使用的案例

TUIO结合Unity使用的案例,有利于更好的学习Unity与TUIO

Unity TUIO模拟器

unity 现成的tuio雷达模拟器,可以用来对接unity项目的互动大屏开发,这个是非常好用的模拟器,亲测可用,有问题可以找我、

【Unity】雷达+Unity +TUIO 介绍一

1.首先介绍一下 什么是雷达 雷达互动软件对比传统互动产品优势 1.不依赖于显示系统:雷达触控可以独立于现实系统存在,不依赖于现实系统的平台。这使得雷达触控系统完全超越了传统多点触摸系统的模式,灵活适用于任何常规显示系统。 2.不依赖于介质:雷达触控使用了业界顶尖的红外捕捉技术,可以在空气中形成一道不可见的多点触摸墙;完全脱离了传统触摸设备对触摸表面的依赖,让用户体验更加自然舒适。 3.触摸...

阿黄的博客 2万+

Unity3D互动投影捕鱼案例

Unity3D互动投影捕鱼案例,非代码版,仅案例,需要或者喜欢的可以下载测试,画面清晰美观,互动投影功能测试首选案例,技术交流可加扣扣群:1021663975

【亲测免费】 探索多点触控的无限可能:Unity + TUIO 触屏 Demo 推荐

探索多点触控的无限可能:Unity + TUIO 触屏 Demo 推荐 【下载地址】UnityTUIO实现触屏Demo 本资源文件提供了一个基于 Unity 和 TUIO 协议的多点触控 Demo。通过这个 Demo,您可以快速了解如何在 Unity 中集成 TUIO 协议,实现多点触控功能 ...

gitblog_09747的博客 1421

TUIO协议 unity

unity tuoi 非常好的资源,unity的触摸例子-unity tuoi unity3D动画引擎编写的多点触摸效果,实现了tuio协议和unity3D的无缝结合,可以实现物体的旋转功能,初学者可以学习tuio的实用方法-unity3D animation engine written in multi-touch effect, achieved tuio agreements and unity3D seamless combination of object rotation function can be achieved, beginners can learn practical ways tuio

TUIO unity实现

TUIO的unity实现。需要另外下载TUIO server。

unity使用TUIO协议

先说说使用的插件吧,插件在unityAssetStore里可以下载,插件名称是:TouchScript 想要插件可以留言哦。 1、导入TouchScript插件包 2、包里Prefabs文件夹有两个预制体,把Cursors、TouchManager这两个预制体拖入场景中 3、选中TouchManager,在上面添加TuioInput组件(这里注意的是如果添加不上,找到此脚本打开删除class前...

qq_41025563的博客 7584

unity c# 触摸屏物体识别桌算法

unity c# 触摸屏物体识别桌算法。使用的是Lean Touch插件。仅供参考!!!

【Unity】雷达+Unity +TUIO 介绍二

在上一遍 我们大概了解TUIO协议 和雷达 都是什么鬼,这篇主要是介绍一下 unity 与 tuio 的通信  首先我们是在Unity 中引入了两个库 OSCsharp  TUIOsharp进行接收数据 具体库中信息可查看 https://github.com/valyard/TUIOsharp /* Simple TUIO v1.1 / OSC v1.1 network listen...

阿黄的博客 1万+

多相机标定与单应变换:用OpenCV实现BEV俯视全景图

多路监控画面分散在不同屏幕,难以快速理解全局空间关系。通过相机标定与畸变校正,利用单应矩阵将各视角图像投影到统一的地面坐标系,即可合成BEV鸟瞰全景图。该技术是车载360°环视系统和自动驾驶BEV感知的雏形,也适用于场地安防与移动机器人导航。基于Python+OpenCV的四路相机实现,完整覆盖标定、投影变换、多路羽化融合与实时优化,为多视角拼接和俯视全景图项目提供可复现的工程参考。

weixin_29056865的博客 244

std::map看来可以被淘汰了?可以用vector来替代,而且更好

vector的优势在于内存连续,可以先std::sort,然后std::lower_bound,或者std::binary_search。而std::map,insert的时候,需要new出内存。

tumu_C的博客 1019

TUIO是什么?

TUIO是什么?      TUIO(Table-Top User Interfaces Objects)是一种简单通用的协议,被设计于特定要求的触摸屏设备人机界面。灵感来自于互连的想法存在于各种表面互动的接口如reacTab或AudioTouch。TUIO协议已经在OpenSound Control上实施,并且可以在支持这种协议任何平台中使用。 简单的说:TUIO是一种格式化OSC数据的标准方法...

merryken的专栏 9280

告别高延迟!用RV1106+4G模块+libdatachannel搭建低功耗WebRTC监控,保姆级避坑指南

本文详细介绍了如何利用RV1106低功耗处理器、4G模块和libdatachannel库构建嵌入式WebRTC监控系统,解决高延迟问题。通过硬件选型、系统优化和核心代码实现,提供了一套完整的低功耗实时视频传输方案,特别适合智能安防和工业物联网应用。

weixin_42527401的博客 192

有趣的互动投影成为吸引观众的重要手段

随着技术与创意应用的不断进步,有趣的互动体验和定制的互动投影系统已成为吸引用户的主要特点。动态主题视觉场景改变了传统商业空间静态单一娱乐形式,采用互动投影游戏,游客不仅可以快乐观看,还可以移动身体,参与互动,对用户有很强的吸引力,创意互动游戏,让观众玩得更有趣,帮助引流引客。交互式投影系统中显示的内容也可以根据用户的需要定制。该项目包括波纹、汇聚、碰撞、分散、擦除、跟踪等展现形式,可以在你的脚下产生各种特效图像,让你愉快的融入到奇妙的世界。美妙的视觉效果和奇妙的动作反馈可以吸引用户停下来,让更多的游客参与互

411

ElementUI中的el-table解决宽度问题 - 根据内容自动撑开

在使用element-ui中,会发现表格组件el-table在未指定宽度情况下,会自动计算并给表格宽度赋值。但实际开发中,有时需要根据内容实际长度自动撑开显示,由内容的多少而决定表格的宽度,而不是默认宽度为100%。在默认情况下表格宽度为100%显示,并且列项未指定宽度情况下,剩余部分会平均分配宽度,本案例实际需求是由内容自动撑开显示。componentUpdated

觉醒法师的专栏 1万+

Apollo&Carla联合仿真环境搭建与实战调试

本文详细介绍了Apollo与Carla联合仿真环境的搭建与实战调试流程,涵盖硬件配置、软件依赖安装、Apollo环境配置、Carla仿真器安装、桥接服务设置以及常见问题解决方案。通过逐步指导,帮助开发者高效实现自动驾驶仿真测试,提升开发效率。

ee345的博客 200
下一篇: Unity(可编辑,可输入)下拉选择框,带文本联想。
爱学习的狗头
博客等级 码龄9年 61粉丝 3原创
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值