Unity分屏之使用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协议。

略。

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

  • 24
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Unity互动投影TUIO)是一种集成在Unity引擎中的交互式投影解决方案。TUIO可以识别和跟踪使用者的手势,借助投影设备将图像投影到真实世界的物体表面上。 使用Unity互动投影可以创建各种令人惊叹的互动投影项目。在Unity开发环境中,可以通过添加TUIO插件来实现不同手势的识别和追踪,例如手指点击、拖动、缩放等。这些手势可以用于操控投影表面上的虚拟对象,创造出与物体互动的效果。 Unity互动投影的应用场景非常广泛。它可以用于展览、商业演示、游戏娱乐等领域。例如,在一个展览中,使用者可以通过手势在投影表面上遥控操作一个虚拟汽车,感受驾驶的乐趣;在商业演示中,使用者可以通过手势操作虚拟产品模型,展示其功能和特点;在游戏娱乐中,玩家可以通过手势控制角色在投影表面上移动和攻击敌人。 Unity互动投影的优势在于其简单易用和灵活性。借助Unity引擎的强大功能和可视化编辑器,开发者可以轻松创建交互式投影项目,并根据需要进行定制和扩展。同时,Unity互动投影也支持多点触控和多人同时互动,使得用户可以在同一个投影表面上共同操作。 总而言之,Unity互动投影TUIO)是一种强大的交互式投影解决方案,可通过Unity引擎实现各种令人惊叹的投影项目。它可以广泛应用于展览、商业演示和游戏娱乐等领域,为用户提供独特、沉浸式的互动体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值