对于一段有趣的游戏体验,玩家会希望炫耀、记录和分享。对于VR,通过一个单一的矩形屏幕观看玩家所见并不能传达全部的感觉。这意味着,旁观者通常会觉得“观看玩家视角”的体验太过无趣。如何解决这个问题呢?Unity的工程师Tom Baird将会在本文中给出答案。

我希望制作一个简单的初始系统,展示如何设置旁观者摄像机,为那些不在VR体验之中的观众增加更多的乐趣。幸运的是,已有一些发布的示例,成功设计了不错的旁观者视图。本项目的目标是基于那些设计构建一个旁观者系统,紧凑便携,可轻松集成到你自己的项目中。

源代码下载

你可以访问Github下载本文的项目源代码《Spectating VR》。

地址:https://github.com/Unity-Technologies/VR-Spectator-Sample        unity正版软件--官方指定代理广州元易qq微信2853068008

注意:该项目需要Unity 2017.2或更高版本。

新建一个基本的旁观者摄像机

首先我要做的是新建一个旁观者(Spectator)专用的摄像机。我创建了第二个摄像机,并将它面对我的第一个最初的摄像机。然后在Camera Settings中,将Target Eye 设置为 None (Main Display) 。

在编辑器中运行项目,Unity的游戏视图已经与VR头盔中的显示不同。就是那么简单!

制作一个玩家

如果将那个旁观者摄像机指向自己,并点击运行,将不会看到任何东西!我需要在这个世界中创建一个代表自己的化身。我使用Unity内置的形状创建了不错的头部和手部模型,将它们连接到一起作为头和手。我希望它们能跟真实世界中的跟踪设备一起移动。在Unity 2017.2中,新组件Tracked Pose Driver可以将这些链接到一起。将它添加到一个游戏对象上,设置希望使用头盔还是控制器,那个游戏对象就会成为你指定VR硬件在游戏内的代理对象,实时更新。这使得快速创建一套玩家VR装配变得十分轻松方便。

添加摄像机角度

现在我想要更多的游戏内角度。我所需要的只是一些世界位置,以及叫做Spectator Controller的一小段脚本,来遍历这些位置。这个脚本的核心是跟踪摄像机当前的变换。

在示例中,我们跟踪的是m_CurrentTransform。我希望摄像机可以在虚拟现实玩家视角和旁观者视角间切换,所以我把它和VR控制器上的触摸板/摇杆点击,以及键盘上的空格键连接到了一起。这个Spectator Controller的第二个职责是启用和禁用当前活动摄像机的颜色和取景器。我将创建一个名为CameraAttachPoint的MonoBehaviour,用于处理那些特定于我的高科技摄像机和取景器的元素。

游戏内旁观者摄像机预览

接下来,我希望能在VR中看到旁观者的视角。只有实时看到自己的样子,才能知道自己的姿势是否够棒。所以我需要一个渲染目标以及一个额外的摄像机。

如果我将旁观者摄像机渲染到一个渲染目标,那随后就可以将输出同时重定向到世界中的纹理,以及对应Main Display的摄像机上。这个部分只需要再多一点资源,它们就在Assets/RenderTarget文件夹中。

我还需要第三个摄像机。我现在有三个摄像机:VR摄像机、旁观者摄像机,以及旁观者显示摄像机,这个用于获取旁观者摄像机的渲染目标并显示给用户。我这里将选择使用一个Canvas UI对象,以便能在随后添加一个对VR玩家和任何旁观者渲染对象不可见的额外UI。

与摄像机交互 unity正版软件--官方指定代理广州元易qq微信2853068008

现在我可以看到自己跳舞了,我不想一个个的遍历预设角度,我想要自己进行设置。我想要能够抓住那架摄像机,好好地秀自己一把。为此,我需要构建一个叫做Grabber的小组件。这是一个简单的系统:当按下触发键时,会检查在一个特定图层上某个半径内的所有物理对象。在触发键按住的同时,会持续更新任何被发现的物体的位置和旋转,以匹配抓取手的位置。很简单,但能达成目的。

关于移动摄像机的一个重要提示:将摄像机像一个小布偶一样到处乱扔,可能会让旁观者感到头晕不适。如果没有强大的内耳,你将很难适应不规则的运动。因此所有的摄像机运动(Grabber和Spectator Controller的行为)都包含了平滑的设置。这些平滑的值,从0(没有平滑)到1(永久停留在原始位置),将在起始和理想的摄像机位置和方向之间使用线性插值来平滑任何突然的运动。0.1基本上已经足够,但这是一个个人偏好,并和实际环境相关,所以可以根据需要进行调整。

后续步骤及注意事项

现在已把所有东西都打包妥当。我有一系列可以切换的旁观者摄像机,你可以对它们进行抓取、摆拍,并呈现在虚拟现实的世界里。我仍然需要一种方法来确保用户知道他们可以操纵什么,而不会干扰旁观者的观看。由于我已经为旁观者和玩家配备了不同的摄像机,所以使用摄像机层遮罩来创建一个只有玩家的图层,并在那里放置指令是一件很简单的事。

值得注意的是,所有这些摄像机对性能会产生影响。我们把整个世界绘制了二次,然后在第三次中重新渲染了旁观者的视图。在不使用的情况下禁用两个旁观者摄像机将是一个有用的补充。要做到那一点,可以关闭旁观者摄像机和旁观者视图摄像机,这样系统将会回退到最初“玩家视角渲染”的旁观模式。

就谈到这里,剩下的留给你们。现在已有一个可抓取的,可移动旁观者摄像机,它有自己的游戏内取景器和两个分别对应玩家和旁观者的独立的UI。把它拿出来,替换资源,改变摄像机的切换行为和UI,把这个项目变成你自己的。

我已尽力让它保持轻量,易于分拆,环境和可视化的资源很容易被排除,并且只有最少限度的自定义脚本。这将是一个开始了解Cinemachine的好地方,选择合适的角度,保持良好的动作视图。心灵手巧的开发者甚至可以为旁观者UI和输入添加更多的东西,并设计出一种新的不对称风格的游戏方式,使旁观者可以成为真正的参与者。

unity正版软件--官方指定代理广州元易qq微信2853068008

实现VR的旁观者系统相关推荐

  1. 北航教授李帅:“VR+医疗”仿真系统及关键技术分享

    "走进高校" CARA 第二期学术讲堂:智能几何计算篇,直播已圆满结束.错过直播的小伙伴,福利来了,CV君已将回放视频整理完毕,欢迎收看! 第二 part,是李帅老师的学术分享,主 ...

  2. 3d在线展示线上VR全景展示系统

    商迪3D打造的VR全景展示系统采用3D大数据可视化挖掘.分析以及特征工程等技术,对业务背景进行调研和3D可视化场景的规划,对结构化和非结构化数据进行全量分析,完成信息化系统的3D全景展示,VR全景展示 ...

  3. 广州峰巅计算机招聘信息,AR/VR虚拟仿真系统

    VR消防体验系统是结合了计算机技术,三维建模技术,虚拟现实技术等开发的基于家庭为场景的模拟仿真学习软件, 逼真的画面冲击视觉,让体验者真正的意识到火灾的严重性和破坏性, 场景可设置为家庭火灾逃生,公交 ...

  4. 轨道列车救援VR模拟仿真系统

    列车故障是地铁运营中常见的问题,如何迅速准确地救援列车故障是保障地铁运营安全的重要措施.为此,广州华锐互动提供轨道列车救援VR模拟仿真系统定制开发,可以在安全.高效的情况下进行列车故障救援演练,有效提 ...

  5. 哈尔滨3D可视化数字孪生工厂,三维可视化大数据平台,智慧工厂VR虚拟仿真系统,大屏可视化展示系统

    哈尔滨3D可视化数字孪生工厂,三维可视化大数据平台,智慧工厂VR虚拟仿真系统,大屏可视化展示系统.数字孪生的概念近年来逐渐进入大家的视野,它是指利用数字模型.传感器数据.系统数据等将物理世界在虚拟空间 ...

  6. 高校实验室安全VR教育培训系统

    天津瀚海星云数字科技有限公司(以下简称瀚海星云)成立于2011年,坐落于天津滨海高新区华核心区-华苑产业园区海泰创新基地.是国内领先的VR内容开发公司,主营业务为VR工业信息化建设和VR高校实验室建设 ...

  7. 潍坊工厂车间数字化vr三维仿真系统,vr电力虚拟仿真培训系统,vr消防安全教育体验馆

    潍坊工厂车间数字化vr三维仿真系统,vr电力虚拟仿真培训系统,vr消防安全教育体验馆.电力系统由输电.变电.配电和用电等环节组成的电力生产与消费系统.由于电力系统规模大.设备种类多.专业分工细,对供电 ...

  8. VR垃圾分类体验系统,VR垃圾分类知识抢答软件开发

    VR垃圾分类系统为垃圾分类知识介绍.垃圾分类小游戏等选择体验垃圾分类的学习环境直观.生动让体验者对垃圾分类科普知识更容易理解,印象更深刻. 产品介绍: 1.系统通过软件通过了互动小游戏的模式,让参与者 ...

  9. 开源全景平台网站VR源码系统 完整程序代码+搭建教程

    今天分享一个720 VR全景制作网站源码,亲测好用,带详细搭建教程,功能十分强大,是一套可以制作各行各业全景的平台网站源码,切图效率非常高.   春哥720VR全景通商业运营版源码系统是一款基于php ...

最新文章

  1. SpringBoot 接口幂等性的实现方案
  2. Python-time
  3. poj 1751 Highways 最小生成树Kruskal(、Prim还没写
  4. php 空二位数组,php对二维数组进行相关操作(排序、转换、去空白等),php二维数组_PHP教程...
  5. linux 内核优化
  6. redis下key的过期时间详解
  7. C言语次序查找算法及代码
  8. mac 向mysql输入 数据_(mac系统下)mysql 入门
  9. 【Ubuntu和本地电脑互传文件】
  10. 怎样在线分解gif图片?如何将gif拆分为静态图片?
  11. Vite 使用TSX/JSX
  12. 为何日本手机走不出国门?
  13. Springboot毕业设计管理系统毕业设计-附源码221032
  14. 使用RocketMQ进行银行转账
  15. 微信小程序 navigator 导航
  16. 04 Response对象的status_code属性可以获取响应状态码
  17. NRF51822 2.4G无线
  18. 物联网技术部培训---贪心算法
  19. 应该如何进行程序化交易系统的检验?
  20. 如何使用Mixins?mixins混入使用方法

热门文章

  1. android程序运行机制,Win10如何运行Android与iOS应用?运行机制分析
  2. 小妞会装机 -- 一个装机软件的开发笔记(五)
  3. 基于SSH的新农村农舍养殖管理系统开发
  4. JRebel 坡接方法(和网上大部分不一样)
  5. 文档空白页删除办法-从空白页出现的原因解决
  6. 基姆拉尔森计算公式(快速推导当前日期是周几)
  7. 抨击世俗:月光族 我用奢侈作青春LOGO[转载]
  8. RAID磁盘阵列技术简述
  9. RAID 廉价冗余磁盘阵列
  10. 就不告诉你 就不告诉你~