当前位置: 首页 > article >正文

Pico 4 Enterprise(企业版)与Unity的交互-有线串流调试篇

  入手了Pico 4 E做VR开发,谁知入了天坑...根据官方文档,尝试了串流助手、企业串流、PICO Developer Center,陷入了各种版本问题、环境问题的陷阱。而且Pico4E的OS自24年12开始就不再更新,头盔中预装的企业串流版本也较低,网上与Pico4E相符的解决方案少之又少……总之折腾了好几天,终于完成了万里长征的第一步——解决了有线串流连接的问题,即使用有线串流实时预览Unity生产的VR场景。(为什么使用有线串流呢?条件限制,路由器太老,无法使用无线。)

  下面开始详细记录串流连接的过程:

目录

1. 基本情况

2. 电脑端安装软件

3. 使用“企业串流”和“SteamVR”串流连接头盔和电脑

4. Unity安装插件

5. Unity中的环境设置

6. 建立测试场景

7. 运行测试场景

8. 其他问题


1. 基本情况

  (1)大致的思路是:Unity->SteamVR->企业串流->USB3.0连接头盔

  (2)电脑端的情况:

            操作系统:Windows10或Windows11

            显卡:NVidia 3060

            Unity:2023.2.20f1c1

  (3)头盔端的情况:

             硬件:Pico 4 Enterprise(企业版)

             操作系统版本:V5.9.9 (无法更新)

             企业串流版本:V1.2.9 (无法更新)

  (4)连接线情况:使用TypeC转USB3.0线,插在电脑USB3.0口(蓝色)

2. 电脑端安装软件

  (1)安装“企业串流”:

    有些教程介绍的“Pico互联”、“Pico游戏串流助手”,以及最新的“PICO Developer Center”等软件,都与头盔中的串流软件版本有冲突,试过下载各种历史版本都不行,最后还是老实安装“企业串流”。下载地址为:企业串流下载

  找到适合的版本下载并默认安装。

  (2)安装Steam VR:

  

     先要安装Steam,下载地址为:Steam软件下载,点击“安装STEAM”默认安装。安装完成后注册账号并登录。

     之后选择“库”->搜索“steamvr"->安装 软件会自动安装

3. 使用“企业串流”和“SteamVR”串流连接头盔和电脑

  (1)打开“企业串流”软件,选择USB连接方式

  (2)根据“企业串流”软件提示,将头盔使用Type-C转USB3.0连接到电脑,并点击“下一步”

  (3)VR头盔端也需要打开“企业串流”

  (4)“企业串流”软件会自动启动SteamVR,连接成功后,会显示如下画面

  SteamVR会显示连接成功的绿色图标

  头盔中会显示SteamVR的界面

4. Unity安装插件

   (1)在Hub中安装Unity编辑器之时,需要添加Android模块

  (2)新建工程:普通工程即可

  (3) 下载安装插件:Window->Package Manager->搜索“XR”,搜索出来的XR Interaction ToolkitOpenXR Plugin都要安装;

  在安装XR Interaction Toolkit时会出现一个警告窗口,直接选择“Yes”;

  XR Interaction Toolkit安装完成后,再下载一个示例场景,以便于头盔和手柄的设置;

5. Unity中的环境设置

  (1)打开Unity菜单栏中的Edit->Project Settings,设置XR Plug-in Management,勾选“OpenXR”;

  安卓部分也需要勾选一下。注* (亲测)这里的OpenXR如果不勾选,手柄激光线无法使用。

  (2)设置下面的OpenXR项,点击“+”号,这里没有Pico相关的项目,以“Oculus Touch Controller Profile”代替;最上方的渲染模式设置为“Multi-pass”;

  (3) 暂时先设置这些,因为我目前只需要实现串流调试。如果需要将场景文件传输到头盔中,脱离电脑运行VR场景,那还需要对Android平台的设置。

6. 建立测试场景

  (1)建立一个平面Plane,用于承载第一人称控制器(有重力);

  (2)在Hierarchy中空白处点右键->XR->XR Origin(VR),建立了“XR Interaction Manager”和“XR Origin (XR Rig)”两项;

  (3)在XR Origin (XR Rig)上点右键->XR->Locomotion System,在XR Origin (XR Rig)下面建立一个Locomotion System

  (4)配置手柄:在Hierarchy中选择“Left Controller”,按下面的这个设置按键,在弹出窗口中选择“XRI Default Left Controller”设置文件,右手柄“Right Controller”也使用类似的设置方式,不同的是右手柄的设置文件选择“XRI Default Right Controller”;

  需要注意的是设置完成后,“Left Controller”中所有的设置项目都有“Left”,“Right Controller”中所有的设置项目都有“Right”

  (5)配置Locomotion System:对于用于实现旋转功能的"Snap Turn Provider(Action-based)"脚本,点击设置按钮,选择“XRI Default Snap Turn”

  再将其中的“System”一项设置为“Locomotion System”,并取消勾选其中的Left Hand Snap Turn Action,因为我们习惯使用右手柄的摇杆实现转向;

  点击下面的“AddComponent”按钮,添加ConstrainedMoveProvider(Action-based)脚本,这个脚本控制的是持续移动

  选择同样的默认设置文件:

  与设置转向脚本一样,“System”一项设置为“Locomotion System”,并且取消“Right Hand Move Action”,让右手柄只执行旋转的功能;

  最后,Locomotion System中的“Locomotion System”脚本,“XR Origin”一项设置为6.(2)中建立的这个“XR Origin (XR Rig)”,也就是第一人称控制器本身;

7. 运行测试场景

  保持3.中的“企业串流”和“SteamVR”的连接,并且将平台切换至Android,连接上设备。

  这样基本就可以了,不需要使用这里的Build或者Build And Run ,直接在Unity编辑器中运行Unity场景,就能从头盔中看见场景,并且可以使用手柄摇杆控制视角旋转和平移;如果在“SteamVR”的菜单中选择“显示VR视图”,就能实时在电脑端看到VR头盔中的画面。

  以上基本完成了有线串流调试Pico4E的方法,但有时运行过程还会产生一些问题。

8. 其他问题

  虽然之前测试成功了,但是有时不经意改变环境后,会有连接不上、运行错误、手柄失去作用等等问题,以下有几个我自己遇到的常见问题:

  (1)一些基本错误,可以自动修复:在Project Settings->XR Plug-in Management->Project Vlidation中,可以看到系统的一些报错,直接点击“Fix All”按钮。有些问题可以自动修复,有些问题会有修复的提示;

  (2)密码问题:在Project Settings->Player->安卓平台->Publishing Settings中,需要设置发布的密码,这个我也不太清楚,跟着官方文档设置即可:签名关联的 APK 数量超出限制如何处理?

  (3)Pico平台的设置:菜单栏中的PICO菜单,这个只要是安装了PICO Integration SDK都会出现在这里,需要设置一下设备号,这个设备号可以照抄File->Build Setting->Android->Run Device中的设备号(括号内的号码)

  

  以上所有的设置基本覆盖了,我在运行过程中的问题,不过难保之后会有新的问题产生。

相关文章:

Pico 4 Enterprise(企业版)与Unity的交互-有线串流调试篇

入手了Pico 4 E做VR开发,谁知入了天坑...根据官方文档,尝试了串流助手、企业串流、PICO Developer Center,陷入了各种版本问题、环境问题的陷阱。而且Pico4E的OS自24年12开始就不再更新,头盔中预装的企业串流版本也较低&#xff0…...

DeepSeek-R1:使用KTransformers实现高效部署指南

KTransformers作为一个开源框架,专门为优化大规模语言模型的推理过程而设计。它支持GPU/CPU异构计算,并针对MoE架构的稀疏性进行了特别优化,可以有效降低硬件要求,允许用户在有限的资源下运行像DeepSeek-R1这样庞大的模型。 硬件…...

企业日常工作中常用的 Linux 操作系统命令整理

Linux 操作系统命令整理 在企业级运维、开发和日常工作中,Linux 命令是绕不开的核心技能。不论是日志排查、进程管理,还是高效运维优化,掌握这些命令都能让你事半功倍!本篇文章整理了自己在日常工作中积累最常用的 Linux 命令&am…...

任务9:交换机基础及配置

CSDN 原创主页:不羁https://blog.csdn.net/2303_76492156?typeblog 一、交换机基础 交换机的概念:交换机是一种网络设备,用于连接多台计算机或网络设备,实现数据包在局域网内的快速交换。交换机基于MAC地址来转发数据包&#x…...

Notepad++ 8.6.7 安装与配置全攻略(Windows平台)

一、软件定位与核心优势 Notepad 是开源免费的代码/文本编辑器,支持超过80种编程语言的高亮显示,相比系统自带记事本具有以下优势: 轻量高效:启动速度比同类软件快30%插件扩展:支持NppExec、JSON Viewer等200插件跨文…...

SpringMVC请求处理流程:DispatcherServlet工作原理

文章目录 引言一、DispatcherServlet概述二、DispatcherServlet初始化过程三、请求接收与处理器匹配四、请求参数绑定与处理器执行五、视图解析与渲染六、异常处理机制总结 引言 SpringMVC框架是Java Web开发中最流行的MVC框架之一,其核心组件DispatcherServlet作为…...

YOLOv8目标检测推理流程及C++代码

这部分主要是使用c++对Onnx模型进行推理,边先贴代码,过段时间再详细补充下代码说明。 代码主要分成三部分,1.main_det.cpp推理函数主入口;2.inference_det.h 头文件及inference_det.cpp具体函数实现;3.CMakeList.txt. 1.main_det 推理配置信息全部写在config.txt中,执行…...

解锁数据潜能,永洪科技以数据之力简化中粮可口可乐决策之路

企业数字化转型是指企业利用数字技术和信息通信技术来改变自身的商业模式、流程和增值服务,以提高企业的竞争力和创新能力。数字化转型已经成为企业发展的重要战略,尤其在当前信息技术高速发展的时代。数字化转型还涉及到企业与消费者之间的互动和沟通。…...

Redis3 Hash 类型命令详解

1. 什么是 Redis Hash? Redis Hash 是一种 键值对集合,类似于 Java 里的 HashMap,可以用来存储对象的数据。例如,你可以将用户信息存储在 Redis 的 Hash 结构中,每个字段代表用户的一个属性。 示例: HSE…...

双链路提升网络传输的可靠性扩展可用带宽

为了提升网络传输的可靠性或增加网络可用带宽, 通常使用双链路冗余备份或者双链路聚合的方式。 本文介绍几种双链路网络通信的案例。 5GWiFi冗余传输 双Socket绑定不同网络接口:通过Android的ConnectivityManager绑定5G蜂窝网络和WiFi的Socket连接&…...

深入浅出:UniApp 从入门到精通全指南

https://juejin.cn/post/7440119937644101684 uni-app官网 uniapp安卓离线打包流程_uniapp离线打包-CSDN博客 本文是关于 UniApp 从入门到精通的全指南,涵盖基础入门(环境搭建、创建项目、项目结构、编写运行)、核心概念与进阶知识&#x…...

MDM 如何彻底改变医疗设备的远程管理

在现代医疗行业迅速发展的格局中,医院和诊所越来越依赖诸如医疗平板和移动工作站等移动设备。这些设备在提高工作效率和提供卓越的患者护理方面发挥着关键作用。然而,随着它们的广泛使用,也带来了一系列挑战,例如在不同地点确保数…...

前端性能优化之同时插入100000个元素页面不卡顿

面试官:同时插入100000个元素怎么让页面不卡顿 优化前写法 首先我们来看下面的一段,点击按钮后,循环100000次,每次都插入一个元素,并且插入区域上方还有一个小球在滚动,在插入的过程中我们可以观察小球的…...

PHP之Cookie和Session

在你有别的编程语言的基础下,你想学习PHP,可能要了解的一些关于cookie和session的信息。 Cookie 参数信息 setcookie(name,value,expire, path, domain); name : Cookie的名称。 value : Cookie的值。 expire : Cookie的过期时间,可以是一…...

vscode 配置debug的环境

vscode配置debug的环境 配置好python解释器, ctrl shift P 就可以指定python了。 当前环境下建立 .vscode 文件夹新建 .vscode/launch.json 文件文件的配置如下 {"version": "0.2.0","configurations": [{"name": &qu…...

socket基础学习以及java搭建

在 Java 中,Socket 编程用于实现网络通信。Java 提供了丰富的网络 API,使得通过 Socket 进行通信变得简单和高效。Java 的 Socket 编程常见于客户端-服务器应用中,比如聊天程序、文件传输工具等。 1. Socket 基本概念 Socket 编程的基本概念…...

Exoplayer2源码编译FFmpeg拓展模块实现音频软解码

在前面文章最新版本Exoplayer扩展FFmpeg音频软解码保姆级教程中介绍了最新版本的Exoplayer(androidx.Media3)编译FFmpeg模块的流程,有就是media3版本的explayer最低支持的sdk版本是21也就是Android5.x,但是市面上还是有很多IOT设备是很老的android4.4(sdk19)的&…...

Docker安装嵌入框架Text Embeddings Inference (TEI)

Docker安装Text Embeddings Inference (TEI) 1 简单介绍 文本嵌入推理(TEI,Text Embeddings Inference )是HuggingFace研发的一个用于部署和服务开源文本嵌入和序列分类模型的工具包。TEI兼容OpenAI的嵌入模型的规范。 # 官网地址 https:/…...

使用easyocr、PyPDF2对图像及PDF文档进行识别

一、概述 本 Python 脚本的主要功能是对当前目录及其子目录下的图片和 PDF 文件进行光学字符识别(OCR)处理。它使用 easyocr 库处理图片中的文字,使用 PyPDF2 库提取 PDF 文件中的文本,并将处理结果保存为文本文件。同时&#xff…...

MAUI(C#)安卓开发起步

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...

oracle decode

1. 基本语法 DECODE(expression, search1, result1, search2, result2, ..., default_result) expression :需要比较的表达式或列。search1, search2, ... :要匹配的值。result1, result2, ... :当 expression 等于 search 时返回的结果。def…...

826考研

初试总分第一的hh佬小红书:https://www.xiaohongshu.com/user/profile/64e106aa000000000100fe33 深研院巨佬经验贴:https://zhuanlan.zhihu.com/p/690464528 本部羊神经验贴:https://zhuanlan.zhihu.com/p/689494655 本部学硕佬经验贴&#…...

PPT小黑第26套

对应大猫28 层次级别是错的,看着是十页,导入ppt之后四十多页 选中所有 红色蓝色黑色 文本选择标题:选择 -格式相似文本(检查有没有漏选 漏选的话 按住ctrl 点下一个) 要求新建幻灯片中不包含原素材中的任何格式&…...

【Linux-网络】HTTP的清风与HTTPS的密语

🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚 引言 📚 一、HTTP 📖 1.概述 📖 2.URL &#x1f5…...

Vue 与 Nuxt 的区别

Nuxt 实现服务端渲染SSR Nuxt.js 是基于 Vue.js 的一个框架,它为构建 Vue.js 应用提供了更高级的功能和更便捷的开发体验。 一、定位与功能 Vue.js 是一个前端 JavaScript 框架,专注于构建用户界面和单页应用(SPA)。 核心功能…...

华为OD机试-最长的密码(Java 2024 E卷 100分)

题目描述 小王正在进行游戏大闯关,有一个关卡需要输入一个密码才能通过。密码获得的条件如下: 在一个密码本中,每一页都有一个由26个小写字母组成的密码,每一页的密码不同。需要从这个密码本中寻找这样一个最长的密码,从它的末尾开始依次去掉一位得到的新密码也在密码本…...

利用golang embed特性嵌入前端资源问题解决

embed嵌入前端资源,配置前端路由的代码如下 func StartHttpService(port string, assetsFs embed.FS) error {//r : gin.Default()gin.SetMode(gin.ReleaseMode)r : gin.New()r.Use(CORSMiddleware())// 静态文件服务dist, err : fs.Sub(assetsFs, "assets/di…...

解决docker认证问题 failed to authorize: failed to fetch oauth token

报错信息[bash1]解决方案 全局代理打开“buildkit”: false ,见[图1] [bash1] >docker build -t ffpg . [] Building 71.8s (3/3) FINISHED docker:desktop-linux> [internal] load bui…...

【Flink银行反欺诈系统设计方案】3.欺诈的7种场景和架构方案、核心表设计

【Flink银行反欺诈系统设计方案】3.欺诈的7种场景和架构方案、核心表设计 1. **欺诈场景分类与案例说明**1.1 **大额交易欺诈**1.2 **异地交易欺诈**1.3 **高频交易欺诈**1.4 **异常时间交易欺诈**1.5 **账户行为异常**1.6 **设备指纹异常**1.7 **交易金额突变** 2. **普适性软…...

docker拉取失败

备份原始配置文件 sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak 清理或修复 daemon.json 文件 sudo nano /etc/docker/daemon.json 删除 文件中的所有内容,确保文件为空。 cv下面这个文件内容 { "registry-mirrors": [ &…...