众所周知,VR并不是单个技术,是很多的技术的集合,包括很多的内容, 比方说Unity知识和C#,这个是基础。除此之外还有视觉方面的技术,比如贝叶斯网络和卡尔曼滤波等等。以及图形学也算是重中之重,如果想更上一层楼的话,3D重建等等的就不必多说。
此处就不过多赘述,单纯从VR开发的角度去看待。
VR开发自然是需要设备的,市面上的设备知名的比如Pico啊HTC VIVE啊还有Oculus。
在PC机领域HTC充当了大佬的角色,网络上有关于HTC的教程一抓一大把,开发相对来说还可以的。就是它是PC机的,拽着个线还得有定位器是不太方便的,不过现在也出了一体机,那就方便的多了,但是就是贵啊。
安卓一体机里我认为比较出彩的是Pico和Oculus。目前一个是Pico Neo3 一个是Oculus Quest2,一个是国内的字节一个是国外的脸书还是挺厉害的。
我个人对这两个设备不知可否。
上周收集资料做了个对比,可能有的数据不是很准确,有什么需要更正的地方还请各位大佬批评指正。(_)
这些设备各有优缺点吧,根据自己的需求选择适合自己的才是最好的
因为我们的业务需要,所以选择了Pico Neo3 Pro作为开发设备。
Pico的官方文档说实话我看不太懂,当然这也和我本人的水平有关,没辙,还是得继续学习……
话不多说下面进入正题。
有这么几个东西,头显是必须的,手柄当然也是,但是手套我平时用的着实是不多。。。
支持 DP 连接
可以通过定制的高速多媒体DP线通过虚拟现实耳机上的特殊 DP 接口将 Pico Neo3 Pro 或 Pico Neo3 Pro Eye 与 PC 或笔记本电脑连接。(这个得下载串流助手什么的,因为我电脑没有DP口只能作罢)
它支持接近 4K 的原始分辨率和 72Hz 或 90Hz 的刷新率,以从您的 PC 或笔记本电脑流式传输 VR 内容(这个还是不错的)。
6DoF光学定位系统
这个蛮不错的
获取到手柄输入
撞击点位置生成一个预制体
一、导入Pico SDK
Pico SDK下载地址:点击此处
把下载好的Pico SDK解压后,记住这个位置的这个文件。
在Unity中,打开Package Manager,点击左上角的加号“+”,选择从硬盘中添加。在弹出的选择框,把刚刚的package.json文件选中,然后点确定就可以了,等待导入。
导入成功后,找到XR Interaction ToolKit这个插件
XR 交互工具包的旧版本(0.9.4 预览版,可升级为新版本)自动集成到 Pico Unity 集成 SDK 中。
启用Pico SDK
点击菜单栏的edit -> project settings
点击XR Plugin-in Management
勾选Pico XR,这样,项目就可以在PicoXR上适配。如果在PC端进行同步调试需要勾选全部的 PicoXR选项
设置Minimum API Level
点击菜单栏 edit -> project settings -> player -> others Settings -> identification
将Minimum API Level设置为Android 8.1 (API 级别 27)
将目标 API 级别设置 为 自动(最高安装)。
设置这个是因为Pico SDK内置的aar依赖组件,最低支持的Android版本为Android 8.1,而Pico Neo 3本身其实是一个Android 10的ROM
在 配置下:
将脚本后端设置 为 IL2CPP。
将Target Architectures设置 为 ARM64 并取消选中 ARMv7
在旧版本XR中,先创建一个Room-Scale XR Rig对象。这个对象就会对应我们Pico头显的位置, 运行后我们的转头,移动等,都会反应到这个对象上。
XR更新后的选项为XR Origin(VR)
其中的脚本与对象都选择与Device-based相关。
UI交互则需要选择XR中的UI Canvas才可以通过VR进行交互。
XR Rig(XR Origin): 挂载用于场景管理和控制的组件和脚本,处理用户在 Unity 世界空间中的位置
Camera Offset:同步 HMD 的 6DoF (光学定位系统)数据,使相机和手控器在场景中移动。
Main Camera:XR 相机,用于捕捉虚拟世界并将其显示给玩家。
LeftHand(RightHand)Controller :左右手控制器
在XR Rig对象上挂载如下脚本
Locomotion System脚本是负责玩家到目标点的移动,用于对XR Rig对象的控制,此脚本只能对一个XR Rig对象负责。
Teleportation Provider脚本是负责将Locomotion System与目标进行绑定
PXR_Manager 是打包在 Pico Unity 集成 SDK 中的一个重要脚本。可以使用它来管理主要的 VR 功能,例如屏幕渐变、眼球追踪和内容保护
手控制器也是 XR 应用程序的重要组成部分。它们使用户能够与虚拟世界进行交互,从而增强身临其境的体验
可以在红色框的位置,定制枪、魔杖或拳击手套等各种形状的控制器模型
地面被点击后,会通过Teleportation Provider,找到下面的Locomotion System对象,然后Locomotion System又会找到对应的XR Origin对象
手控制器:挂载脚本
XR Controller:对手控制器的跟踪类型,输入方式,模型样式等进行设置
XR Ray Interactor:处理手柄射线与远距离目标交互逻辑,设置手柄射线的交互逻辑与类型(三种曲线:直线,弹丸曲线,贝塞尔曲线)
Line Renderrer:Unity线渲染器
XR Interactor Line Visual:手柄射线样式
场景漫游与传送:
Teleportation Area脚本:在场景中,对漫游场景绑定该脚本,实现任意区域传送
Teleportation Area脚本是负责区域传送,可以传送到地面的任意位置。(可设置传送层级)
(与之对应的是Teleportation Anchor脚本,锚点传送,只能传送到指定点位)
地面被点击后,会通过Teleportation Provider,找到下面的Locomotion System对象,然后Locomotion System又会找到对应的XR Rig对象
Teleportation Anchor脚本:锚点传送,指定点位
与上一个不同的是,Teleportation Anchor Transform是锚点位置,可以设置一个空物体作为其地面的子物体作为传送点位。
所有传送到此平面的玩家都会被固定在锚点的位置。
将Pico Neo3用USB数据线连接电脑,并且开启Neo3的开发者模式。
开启开发者模式方法:
https://sdk.picovr.com/docs/FAQ/chapter_one.html
可使用Preview Tool工具(官网下载),进行实时预览。(PC端与Pico均需要同时打开Preview Tool工具应用)
Preview Tool下载地址:点这里
不过有一说一啊,这个Preview Tool工具不是很好用,无线连接取决于网络,我一般是只能第一次能连上,之后就连不上了。有线连接就没有成功过,一直在转圈圈,后来我把数据线插在了DP的口上,然后退出串流助手的应用,打开Preview Tool的应用,然后再点有线连接,居然可以成功连接,但是有一个弊端,不知道是不是我的设备的问题,我的设备里是没有画面的,电脑上的Game窗口一开始有画面是可以预览的,后来不知道为什么就有没有预览画面了,我就只能在Scene窗口去看效果,不是很方便。Oculus不知道怎么回事,据说是得有FB的账号,还得小蹄子,怪费事的,就拉到了。
方法一:点击菜单栏 File -> Build Settings,打开Build Settings弹窗
在Run Device中选择对应的Pico设备。
方法二:点击菜单栏 File -> Build and Run,首次发布需要设置文件保存路径。
Pico Unity XR SDK:这里是链接
链接: link.
本文章参考学习B站UP主:https://space.bilibili.com/15752216
以上框图均为本人整理分析制作,有需要转载的请联系我谢谢。
如果帮到了你还请点个赞,xiexie~