虚幻版Pico大空间VR入门教程 04 —— PicoOpenXR和PicoXR插件对于PDC串流、SteamVR串流、OpenXR串流对比 和 手势追踪对比

省流

串流方式最重要,笔者使用【Pico4UE 企业版】一体机,使用【PicoOpenXR插件+OpenXR插件】【企业串流v2.0的apk+exe应用】和【OpenXR串流方式】进行有线串流,

串流调试时可以正常手势追踪,打包apk和exe的VR手势追踪正常。

文章包含整理的百度云资源、SteamVR串流、不同UE版本的手势追踪对比记录,曾经的踩坑笔记(略长)。

插件文档 PicoXR和PicoOpenXR

插件文档 https://developer-cn.picoxr.com/document/

PicoXR 开发文档 https://developer-cn.picoxr.com/document/unreal/

PicoOpenXR 开发文档 https://developer-cn.picoxr.com/document/unreal-openxr/

插件下载 PicoXR和PicoOpenXR

Pico SDK 插件下载 https://developer-cn.picoxr.com/resources/

【注意事项】

PicoXR和PicoOpenXR两个插件不能同时启用,否则打包错误或者闪退。

PicoOpenXR插件在UE5.3版本曾用名PicoForOpenXR

PicoXR插件只适用于一体机Android打包,不可以打包exe进行VR串流,适用于Pico应用市场和移动端大空间。

PicoOpenXR可以exe和apk打包,都可以适用于大空间

使用PicoXR插件时,也不能勾选OpenXR插件

PicoXR v3.2.0

SDK介绍 https://developer-cn.picoxr.com/document/unreal/about-sdk/

版本说明 https://developer-cn.picoxr.com/document/updates-unreal/

插件内的函数名前缀为缩写 PXR

PicoXR插件目前只更新到UE5.5,使用Pico官网下载或者使用Epic Fab商城下载都可以。

Pico官网插件下载包含PICOXR、PICOSpatialAudio、PICOEnterprise、OnlineSubsystemPICO

下载的文件夹内只使用到PicoXR,其他插件为Pico一体机的应用市场

20250903现已经更新至UE5.6

|---------------------|------------------------------------------------------------------------------------------------------------------------|
| 插件 | 说明 |
| OnlineSubsystemPICO | 平台服务功能相关的接口、蓝图和脚本。例如账号、好友、订阅、成就、社交等 |
| PICOEnterprise | 面向企业设备提供的接口和脚本。要查看该插件指南,前往 PICO Business 文档中心。 |
| PicoSpatialAudio | 空间音频相关的接口和脚本。 |
| PICOXR | 渲染、输入&追踪、环境感知及其它相关功能的接口、蓝图和脚本。 |

PicoOpenXR v1.5.0

SDK介绍 https://developer-cn.picoxr.com/document/unreal-openxr/details-on-pico-unreal-openxr-plugin-150/

版本说明 https://developer-cn.picoxr.com/document/updates-unreal-openxr/

Pico Live Preview v1.4.5

插件介绍 https://developer-cn.picoxr.com/document/unreal/preview-app-scenes/

用于搭配PDC预览,可以不用这个PicoLivePreview插件,改用SteamVR串流或者OpenXR串流进行预览。

旧版本v1.0.2只适配到UE5.3版本,今年5月才升级适配到UE5.5

如果想要5.3版本,官方不再提供旧版本,百度云中有留档文件

插件5.4社区版本【已过时】

https://www.bilibili.com/video/BV1oko7Y4EVU

https://github.com/MonsterGuo/UE5.4_Pico_Live_Preview

因为2025年5月官方才出的UE5.4版本,之前用过该插件版本,可以翻翻评价,社区作者推荐OpenXR串流。

串流工具下载

度盘整合包

链接:https://pan.baidu.com/s/13vO0SRWyeYUBLlp8KrdsUg?pwd=maki 提取码:maki

Pico互联.apk包名 com.picovr.picostreamassistant

企业串流.apk包名 com.picoxr.bstreamassistant

本专题基于设备Pico4UE企业版,系统版本5.13.3

pico互联最新版本10.6.6,度盘存放的apk和exe版本只有10.5.10和10.4.5

企业版Pico设备选择企业串流,企业串流1.2功能比2.0的多,具体可以看企业串流v1.2的PC端功能列表,官方技术的回访电话里介绍2.0目前还是beta抢先试用版本。

普通版Pico设备选择Pico互联,企业版设备也能用互联进行串流但是无手势追踪功能。

SteamVR v1.27.5

安装Steam,然后添加SteamVR安装,

如果无联网环境,可以先下载Pico企业教程文档中Steam v1.27.5.7z离线安装包进行安装。

笔者使用SteamVR最新版本2.12.14,支持VR串流时的手势追踪(只有企业串流v2.0可以)

https://business.picoxr.com/cn/doc/Business-Streaming

PDC v1.4.6

PDC下载 https://developer-cn.picoxr.com/resources/#pdc

安装和操作流程介绍 https://developer-cn.picoxr.com/document/unreal/pdc-tool/

Pico互联 v10.5.10

PC端下载Pico互联.exe https://www.picoxr.com/cn/software/pico-link

Pico互联.apk包名 com.picovr.picostreamassistant

非企业版一体机用户,例如Pico4、Pico4Pro、Pico4U,

请在PC和一体机设备,都下载同一个版本号的exe和apk,让PC和一体机处于同一个局域网wifi网段。

当前Pico互联最新版本为 v10.6.6,一体机通过内置的pico应用市场下载更新。(如果是企业版本一体机则无法从Pico应用商城下载任何app,可以通过PC adb安装)

普通版一体机用户直接在Pico应用市场更新,例如Pico4,Pico4U

企业版使用Pico互联(邪道)

企业版设备Pico4UE,因为无法从Pico官方商城应用市场下载更新Pico互联app,如图:

在下一小节【串流方式选择】中介绍邪道方法。

企业串流 v1.2.10

企业串流.apk和exe v1.2.10 https://business.picoxr.com/cn/doc/Business-Streaming

企业串流.apk包名 com.picoxr.bstreamassistant

通用功能 和 实验室

1.2版本比2.0实验版多了很多功能,但是少了OpenXR串流,只有SteamVR串流

企业串流 v2.0

企业串流.apk和exe v2.0.0 https://business.picoxr.com/cn/doc/Business-Streamingv2

企业串流.apk包名 com.picoxr.bstreamassistant

通用功能 和 实验室

2.0比1.2少了很多功能,但是多了OpenXR串流方式,可以选择SteamVR或OpenXR串流

串流方式选择

【总结】

Pico串流可以分为:

①使用PicoXR+PicoLivePreview插件的【PDC串流调试】,最后安装apk,再投屏到PC显示器实现伪串流。

②使用PicoOpenXR+OpenXR插件的【Pico互联 v10.5.10】【企业串流v1.2】【企业串流v2.0】,Pico互联和企业串流2.0这两个应用的PC端还可以选择【SteamVR串流】【OpenXR串流】,企业串流v1.2只能选择SteamVR串流

PDC串流主要用于开发apk时,直接使用PC端进行串流调试。

三个串流应用安装时PC端和apk端的版本号要同步,而且必须PC和apk的应用名字相同才能配对串流成功,避免冲突,pc和apk只选其中一款串流应用进行安装,其他版本卸载

例如:一体机安装企业串流v2.apk,就不能和PC端的Pico互联.exe进行串流,只能和PC端的企业串流v2.exe进行串流。

PDC串流调试,项目加载PicoXR插件和PicoLivePreview插件,打包apk不影响,打包exe不支持,即使单独勾选PicoXR打包exe成功也不能使用VR串流。

SteamVR串流,项目加载PicoOpenXR + OpenXR插件,(PicoXR插件不支持PC的SteamXR串流模式)

OpenXR串流,项目加载PicoOpenXR + OpenXR插件,(PicoXR插件不支持PC的OpenXR串流模式)

**注意:**①PicoXR和PicoOpenXR插件互斥,只能选择其一。

②如果想打包Android,两插件选其一都能打包apk,PicoXR插件功能比PicoOpenXR多一点,UE5.6未来PicoOpenXR将渐渐补完PicoXR的独有功能。

③如果想打包exe,进行PC端的VR串流画面给头显,只有选择OpenXR+PicoOpenXR。

④安装PC端的PDC、互联、串流软件时,关闭PC端的防火墙,例如360安全卫士

PDC串流调试 【不推荐】

PDC安装操作流程 https://developer-cn.picoxr.com/document/unreal/pdc-faq/

想使用PDC串流,只能搭配使用PicoXR + PicoLivePreview插件,项目需求是打包Android apk。

【个人不推荐PDC串流调试,只推荐安装PDC】

笔者安装PDC的目的,是用于复制获取Pico一体机内的截图录屏和log

**理由是:**虽然可以PDC串流时调用手势开发,但是rhi为DirectX 11 和PDC串流使得显卡满载导致画面太卡出现拖影黑块,影响优化判断,

串流调试结束后,如果使用PicoXR插件打包apk时,需要切回Direct12和勾选实例化立体(Instanced Stereo),

打包安卓,虽然可以直接在UE5里BuildRun On Device,一键打包apk并安装到设备,但是有概率连接设备异常导致安装失败,猜测理由是要唤醒头显,通过按手柄按键可以部署安装成功

所以测试时打包apk,再手动运行install bat文件进行安装,一切效果以一体机安装apk后的真机效果为准。

如果需求是打包exe进行PC串流,则只能改成勾选OpenXR+PicoOpenXR插件。

**注意:**使用PDC串流时,可以把企业串流或者pico互联的app和exe都关闭。

如果打开2个VR项目,第2个打开项目的PDC串流预览按钮是灰色的,估计PDC串流服务只能单例。

如果想切换PicoOpenXR插件并改回OpenXR/SteamVR串流,发现PC端VR运行时的预览窗口大小不对,可以通过删除项目工程的缓存文件进行修复。

安装PDC的工具包【串流服务】时注意关闭360软件,如图

(仅 PICO 4 Ultra) 前往 设置 > 通用,关闭 电脑互联自动发现 开关,然后再将其开启,从而为 PDC 工具开启串流模式。

开启pdc插件后,引擎默认的fps无法显示

插件说明 PicoLivePreview

PicoLivePreview是基于PicoXR的拓展插件

UE5.1~5.3使用的插件PICO Live Preview Plugin-1.0.2

UE5.4~5.5使用的插件PICO Live Preview Plugin-1.4.5

**正确操作:**PDC串流插件勾选 PicoXR + PicoLivePreview,如图:(错误操作打包exe时,取消勾选PicoLivePreview插件,能打包exe成功,但是不能VR串流就没有意义)

串流成功 手势效果

基于PicoXR插件的手势逻辑,实现教程方法在【手势追踪对比】小节。

PDC串流,PicoXR插件+PicoLivePreview插件,手势捏Pinch事件开启Menu菜单

【踩坑】错误操作记录:

以下基本为UE5.3 虚幻默认VR模板 VRTemplate,使用PicoXR和PicoLivePreview插件的打包exe和apk测试和踩坑记录。

**总结:**PicoXR针对一体机Android开发(打包exe的部分可以跳过,我顺手做的对比记录),如果单独勾选PicoXR,虚幻的VR运行按钮无法使用,所以需要勾选PicoLivePreview提供VR运行支撑。

PicoXR和OpenXR不能一起使用。

PicoLivePreview和 PicoOpenXR 不能一起使用,因为PicoLivePreview 是基于PicoXR插件,PicoLivePreview 调用的都是PXR函数。PicoOpenXR基于OpenXR。

备注0: 如果勾选PicoXR+OpenXR,没有PDC串流,可以VR启动,打包apk报错,特别注意: 打包exe和VR启动都能SteamVR串流(如图),即使不勾选OpenXRHandTracking,也有手势追踪的手腕定位**(反直觉)**,

因为OpenXR提供VR操作运行支撑,所以为了避免混淆,UE5.4 PicoXR插件的环境提示Fix只能单选PicoXR。

备注1: 如果勾选PicoXR+PicoLivePreview,可以正常PDC串流调试。打包apk正常,打包exe报错(反直觉),解决方法是打包exe时取消勾选PicoLivePreview插件。打包exe也没意义,PicoXR插件不支持PC运行VR串流。

备注2: 如果无PicoXR,只勾选PicoLivePreview,增强输入的配置中依旧有PicoXR插件同款的按键映射。可以正常PDC串流调试。打包apk成功但是启动闪退。打包exe成功但是无法启动运行。毕竟缺少PicoXR基础插件。

备注3: 如果无PicoXR,勾选PicoLivePreview +OpenXR,可以正常PDC串流调试。打包apk成功但是运行显示的为2D模式平板画面(如图)。打包exe报错提示缺失PXR相关Cpp文件。

因为有OpenXR插件,所以就可以打包apk给Occulus quest 设备VR运行使用。因为没有PicoOpenXR插件,所以Pico设备无法VR运行,只能2D平民运行apk。

(补充记录:社区PicoLivePreview5.4插件版本,打包exe成功但是启动报错退出)

备注4: 如果无PicoXR,勾选PicoLivePreview + PicoOpenXR + OpenXR,可以正常PDC串流调试。

打包apk正常运行VR,但是按键逻辑不是执行PicoXR的按键映射,执行PicoOpenXR的函数和按键映射。打包exe报错提示缺失PXR相关Cpp文件。

VR教程 元小先

https://www.bilibili.com/video/BV1TXHme8ELd?&p=5 大空间开发可以参考元小先VR教程

针对一体机开发,选择厂家的PicoXR,则一定要关闭OpenXR,避免冲突

VR 预览按钮灰色失效

PDC预览按钮正常如图:

在 Unreal 项目编辑页面,确认工具栏中 Live Preview Link 为亮起状态。若灰色未亮起,检查头显与电脑是否成功连接。

实时预览功能目前仅支持 DirectX 11 (DX11) 图形接口。请前往 编辑 > 项目设置 > 平台 >Windows > 目标 RHT 选卡下,检查 默认RHI 设置是否为 DirectX 11。

UE5 引擎,还需要在 引擎 > 渲染 > VR 选卡下,取消勾选 实例化立体(Instanced Stereo) 选项,否则预览时左眼无图像。

提示异常"串流运行时服务"

可能为防火墙问题,关闭防火墙。

可能是被其他应用占用服务冲突,关闭PC和一体机的"Pico互联",关闭任务管理器"ps_service"进程并重启PDC,关闭任务管理的UE应用程序,或是插把USB线,重新安装pdc和重启电脑或一体机。

PDC显示"连接异常",也有可能是显示错误,不影响截屏和串流,可以尝试预览串流。如图

PDC串流导致显卡满载特别卡

此处用2070作为测试显卡,差距特别明显

有线PDC串流显卡满载100%

有线PDC串流后,默认的空白场景,也是显示显卡满载

这是有线SteamVR串流,显卡渲染只有20%

----------------------------------

企业串流 v2.0

使用PicoOpenXR + OpenXR插件 + OpenHandTracking

企业串流.apk包名 com.picoxr.bstreamassistant

Pico互联.apk包名 com.picovr.picostreamassistant

**注意:**安装 企业串流2.0.apk 后,如果一体机启动 企业串流2.0.apk 闪退,可能是一体机的 Pico互联.apk 占用端口了,

使用adb命令无法卸载 Pico互联.apk ,可以使用【搞机工具箱】非root模式强制卸载 Pico互联.apk,保证没有其他互联app作为干扰 。(操作教程在企业串流 v1.2 中介绍)

1 安装相同版本的企业串流应用,头戴端出厂设置一般是1.2版本,官网下载版本是2.0,两者之间不能互通

2 针对头戴端的app 打开即闪退问题,需要在设置-通用-将自动发现关闭

https://www.bilibili.com/video/BV1rxGRzTEPm 群主视频 无需SteamVR进行串流,视频内为Pico互联版本,可以作为参考。企业版一体机设备就用企业串流2.0。

https://www.bilibili.com/video/BV1Sf421X7NZ 群主视频 OpenXR串流身体追踪

环境检测没有只要求SteamVR,所以SteamVR或者OpenXR都可以进行串流

选择OpenXR串流

在企业串联 v2.0.exe中,选择默认串流方式为OpenXR串流。

注意:如果切换串流方式后,还是无法VR运行后串流画面,可能是服务被占用,关闭企业串流应用后,关闭任务管理器的ps_service进程

然后通过add_runtime.bat强制切换为OpenXR串流方式。

批处理文件路径在企业串流文件夹子目录下 D:\SoftProgram\Pico\Business Streaming 2.0\openvr_driver\resources\ps_xrt

(如果想切换回SteamVR默认串流,则运行change_runtime_to_steamvr.bat)写文档做对比时,常用这两个bat文件做切换处理。

运行add_runtime.bat,输入yes即可。

【可跳过】openxr-explorer 切换默认串流方法

下载地址 https://github.com/maluoi/openxr-explorer

微软开发分享:OpenXR测试开发利器------OpenXR Explorer

说明介绍 https://news.nweon.com/89386

运行openxr-explorer.exe 切换默认串流方式"PicoStreamingXR",即为Pico默认的"OpenXR串流"方式

OpenXR串流时的窗口名后缀:显示的是PicoStreamingXR

串流成功 效果图

pc和一体机安装相同版本号的企业串流 v2.0。

企业串流2.0.apk中,选择有线连接或者WiFi连接都可以。

**注意:**如果页面中可连接设备一直无法刷新出设备,断开重新usb连接无效后,Pico设备重启,PC任务管理器把ps_service和UE应用进程都关闭,再启动企业串流 2.0.exe和.apk或电脑。

OpenXR串流方式挺稳定的;SteamVR串流更容易出现连接中断的小问题。

OpenXR串流方式,启动项目就可以看到VR运行默认亮起;SteamVR串流启动后,再启动UE项目才能正常VR预览调试。

OpenXR串流,性能占用不高;SteamVR串流启动后,因为Pico设备进入SteamVR默认黑色网格星空场景,一体机风扇转速提高扇热了。

(退出黑色网格场景,企业串流v2.apk页面,断开USB重连即可恢复)

SteamVR应用退出时,会连同UE项目一起退出。

【可跳过】无头显设备调试 快捷键M+O

OpenXR串流成功时显示Pico设备码,此码和PDC的设备相同,如图:(PDC设备码的图在提示异常小节)

OpenXR串流下,即使无VR设备,也可以运行VR启动

VR启动后,快捷键M+O,唤起VR模拟操作UI,可用于调试,避免来回戴上头盔(用的少,我选择TPS_Pawn调试)。

选择SteamVR串流

企业串流v2.exe中设置串流方式为SteamVR串流,其他操作与OpenXR串流方式相同,串流的手势追踪对比在下一节。

或者使用change_runtime_to_steamvr.bat 批处理 切换成SteamVR串流方式

串流成功 效果图

**注意:**如果页面中可连接设备一直无法刷新出设备,断开重新usb连接无效后,Pico设备重启,PC任务管理器把ps_service和UE应用进程都关闭,再启动一遍 企业串流 2.0 .exe和.apk。

SteamVR串流更容易出现连接中断的小问题。OpenXR串流方式挺稳定的。

SteamVR串流启动后,再启动UE项目才能正常VR预览调试;OpenXR串流方式,启动项目就可以看到VR运行默认亮起。

SteamVR串流启动后,Pico设备进入SteamVR默认黑色网格星空场景,未进入项目VideoEncode占用40%,一体机风扇转速提高扇热了。

(退出黑色网格星空场景,企业串流v2.apk页面,断开USB重连即可恢复)

SteamVR应用退出时,会连同UE项目一起退出。

SteamVR串流时的窗口名后缀:显示SteamVR

SteamVR默认的黑色网格星空场景:

串流方式 性能对比

OpenXR节约PC性能和Pico电量,UE项目未启动VR运行时,不使用PC显卡性能。

OpenXR串流和SteamVR启动VR运行时,GPU 9%,VideoEncode戴上头显33%,摘下头显20~27%。显卡显存占用分别4.5G和5.5G

SteamVR串流时,未启动项目VR,默认进入星空场景,此时PC渲染星空场景推送给Pico设备,导致Pico设备一直在耗电提高风扇转速。

Pico设备判断头显摘掉后,自动优化部分性能。

【可跳过】企业串流 v1.2

使用PicoOpenXR + OpenXR插件 + OpenHandTracking

企业串流.apk包名 com.picoxr.bstreamassistant

Pico互联.apk包名 com.picovr.picostreamassistant

注意:企业串流v1.2 只有SteamVR串流,没有OpenXR串流,SteamVR串流时没有手势追踪功能,手柄追踪正常,个人猜测P4UE的手柄追踪一直保活导致手势追踪有bug。

群里有小伙伴p4e + 企业串流v1.2 + steamvr 实现串流时手势追踪功能。我p4ue估计只能用企业串联v2.0实现手势追踪功能了。(pico技术服务没回答这个)

https://www.bilibili.com/video/BV1rxGRzTEPm 群主视频 无需SteamVR进行串流,视频内为Pico互联版本,可以作为参考。企业版一体机设备就用企业串流v2.0。

https://www.bilibili.com/video/BV1Sf421X7NZ 群主视频 OpenXR串流身体追踪

(企业v1.2连接时,似乎PDC的截屏录屏功能失效,可能服务进程冲突,重装pdc有概率修复)

卸载2.0

使用 adb uninstall com.picoxr.bstreamassistant 卸载2.0,pico一体机自动回退成v1.2版本

搞机工具箱 https://www.jamcz.com/

如果使用搞机工具箱卸载2.0,则无法通过安装软件的方式安装1.2版本apk,只能安装2.0,再adb uninstall卸载2.0(自动回退1.2)。

【只有】SteamVR串流

企业串流v1.2版本,无线和有线串流时,默认启动SteamVR,无法用.bat文件把串流方式改为PicoOpenXR

企业串流v1.2环境检测

PC端选择usb连接

PC端选择USB数据线时,一体机页面才会刷新出主机设备,或者pc端任务管理关闭ps_service并重启应用或者关闭杀毒软件并重启电脑

(如果还是不行,则使用搞机工具箱卸载pico互联,安装企业v2,再adb uninstall回退v1.2,挺玄学的)

串流成功 效果图

企业串联v1.2默认只有选择SteamVR串流,一体机中界面提示默认启动SteamVR

PC端的SteamVR成功后,正式串流成功,但是SteamVR不像企业串流2.0连接时有显示手势追踪成功的图标。

【失败】手势追踪

企业一体机内VR画面,放置一会儿手柄,Pico系统已经识别到手势追踪(手的碰撞警戒),但是VR项目内的手势追踪失败。

此时SteamVR的手柄图标高亮表示正在连接。

此时项目内获取控制器数据依旧是true Hand。

个人猜测SteamVR串流时,手柄一直处于保活状态,即使Pico系统触发手势追踪,项目内也无法正常获取手势追踪数据。

个人尝试过把Pico系统设置的互动改为只有手势操作,进入VR串流后,在项目中也无法正常获取手势追踪数据。

(群友的p4e支持企业串流v1.2的手势追踪,我p4ue放弃企业串流v1.2串流这条路线。)

【可跳过】Pico互联 v10.5.10

使用PicoOpenXR + OpenXR插件 + OpenHandTracking

企业串流.apk包名 com.picoxr.bstreamassistant

Pico互联.apk包名 com.picovr.picostreamassistant

**注意:**群主视频使用普通版本一体机,在Pico互联v10.5.10版本中可以使用OpenXR串流。

企业一体机邪道安装Pico互联V10.5.10只能SteamVR串流,批处理修改OpenXR串流方式则串流失败,

企业一体机在Pico互联的SteamVR串流时没有手势追踪功能,手柄追踪正常,个人猜测手柄追踪一直保活导致手势追踪有bug。

https://www.bilibili.com/video/BV1rxGRzTEPm 群主视频 无需SteamVR进行串流,视频内为Pico互联版本,可以作为参考。企业版一体机设备就用企业串流v2.0。

https://www.bilibili.com/video/BV1Sf421X7NZ 群主视频 OpenXR串流身体追踪

PC端安装Pico互联 v10.5.10.exe时,会覆盖企业串流v2.0.exe。个人猜测这两个应用属于换壳应用。

( 因为企业串流v2.0.apk在一体机中退出时,弹窗提示退出pico互联。企业串流v1.2.apk退出时,弹窗提示退出企业串流。 )

企业版用户无法通过pico的应用市场更新Pico互联,可以从p4的一体机中,通过搞机工具箱,把apk提取出来,再安装到p4ue一体机中。属于邪道玩法。

当前最新版10.6.6,我这里只备份到10.5.10版本,已放度盘。

企业版的Pico互联通过 开发者开启显示 互联应用

开发者选项,点开设置→开发者→企业设置→基础设置(左侧第一个类选项)→系统应用→自定义资源库→打开互联的应用开关

版本不对则提示更新,但是企业版无法应用市场更新app

Pico互联环境检测SteamVR

串流成功 效果图

连接成功后,有概率导致pdc连接失效,暂时断开串流,pdc就正常连接读取数据。

PC端选择USB数据线时,一体机页面才会刷新出主机设备,或者pc端任务管理关闭ps_service并重启应用或者关闭杀毒软件并重启电脑

(如果还是不行,则使用搞机工具箱卸载pico互联,卸载企业串流,重新安装pico互联.apk,挺玄学的)

串流成功并激活SteamVR,PC画面投屏到一体机,点击右上角【返回SteamVR】进行VR操作

【注意】如果有线串联后,UE SteamVR启动后,再打开PDC获取截图文件,延迟增加。关闭PDC后,需要断开Pico互联的usb连接或者重启SteamVR才可以重新连接。(玄学记录)

【失败】手势追踪

企业一体机内VR画面,即使闲置了手柄,Pico系统已经识别到手势追踪(手的碰撞警戒),但是VR项目内的手势追踪失败。

此时SteamVR的手柄图标高亮表示正在连接。

此时项目内获取控制器数为false Hand。(与企业串流v1.2不同)

个人猜测SteamVR串流时,手柄一直处于保活状态,即使Pico系统触发手势追踪,项目内也无法正常获取手势追踪数据。

Pico系统设置的互动改为只有手势操作,进入VR串流后,也无法再项目获取手势追踪数据。

(群友的普通版P4P一体机,可以通过Pico互联正常使用串流时的手势追踪功能)

手柄追踪正常追踪坐标,但是骨骼位置有偏移量,需要调整。

------------------------------------

手势追踪对比

【总结】

设备为企业版一体机P4ue,串流基于企业串流v2.0,企业串流v1.2,Pico互联10.5.10

手势追踪记录总结:

PDC调试模式,使用PicoXR插件,项目VR运行时,PDC串流调试时的手势追踪成功,打包exe无法PC串流。

无串流模式, 使用PicoXR插件,打包apk,手势追踪成功

企业串流v2.0,使用PicoOpenXR插件,打包exe,在OpenXR模式,PC串流的手势追踪成功

企业串流v2.0,使用PicoOpenXR插件,打包exe,在SteamVR模式,PC串流的手势追踪成功

无串流模式, 使用PicoOpenXR插件,打包apk,手势追踪成功

企业串流v1.2,使用PicoOpenXR插件,打包exe,只能SteamVR模式,PC串流的手势追踪【失败】

Pico互联v10.5.10,使用PicoOpenXR插件,打包exe,只能SteamVR模式,PC串的流手势追踪【失败】

PicoOpenXR插件

群主的手势追踪视频教程 https://www.bilibili.com/video/BV1q84y1u7vi

PicoOpenXR手势追踪文档 https://developer-cn.picoxr.com/document/unreal-openxr/hand-tracking/

插件勾选 OpenXR + PicoOpenXR + OpenXRHandTracking + (调试手指骨骼可视化 XR Visualization)

项目设置里勾选允许 Hand Tracking

手势组件层级结构

Hand Tracking Component PICO 为 PICO_HandTrackingComponent.h 的 C++基础组件

Pico默认手势组件

添加两个HandTrackingComponentPICO,分为左右手,进行手动参数配置(PicoXR就提供了配置好参数的组件)

OpenXR 串流手势成功

XR Visualization 手势可视化插件,显示手指骨骼位置用方块示意,打包不支持shipping模式,左右眼有坐标系差别,左眼镜头内坐标系正常,截图的是右眼画面。

(如果取消勾选 Mobile Multi-View,左眼无画面,此时截图右眼画面内的可视化插件坐标系正常)

DrawDebugCoordinateSystem 蓝图接口仅调试,显示手指骨骼位置用坐标系示意, 打包不支持shipping模式。

**注意:**OpenXR串流时默认无法在手势追踪时同步给MotionController坐标,因为此时的MotionController的动作源MotionSource为LeftGrip,改为LeftWrist即可

对比打包apk时,MotionController的VR默认机器手掌模型使用LeftGrip导致坐标有偏差,需要根据项目需求调整MotionSource动作源和偏移量,相关优化在下小节。

SteamVR 串流手势成功

SteamVR串流,可以查看是否捕获到手势追踪。

**注意:**SteamVR串流时,MotionController默认使用LeftGrip也可以同步手势坐标,Pico手掌和MotionController机器手掌坐标近似。

对比OpenXR串流时无法获得MotionController的LeftGrip动作源坐标。

打包apk时,MotionController的VR默认机器手掌模型使用LeftGrip导致坐标有偏差,需要根据项目需求调整MotionSource动作源和偏移量,相关优化在下小节。

因为VR商城模板基本都有手掌的互动逻辑,可以把MotionControll拟合坐标到Pico手势追踪中,做碰撞处理判断。

【踩坑】错误操作记录:

如果不勾选 手势追踪插件OpenXRHandTracking,只勾选 OpenXR + PicoOpenXR插件

PC串流条件下,只能识别到Pico系统级别的手势追踪捕获的手掌心(中间白色圆圈),和手势追踪捕获到真人手掌即将靠近安全区域的警告。没有捕获手指头骨骼节点的坐标。

安卓打包条件下,系统手势追踪不仅有捕获到手掌心,还把手掌坐标映射给了MotionController,所以同步了VR默认模板的机器手掌模型坐标。没有捕获手指头骨骼节点的坐标。

ps.掌心朝内握拳触发关闭应用;掌心朝内握拳再保持握拳掌心朝外触发重置坐标手势。企业版本一体机可以关闭这个手势,因为掌心朝内握拳的事件太容易触发了。

【优化】移动光照偏灰

PC和移动端的光照环境的色差问题,打包apk的画面默认偏灰

1:修改预览设置改为Android Vulkan Mobile,此模式下无法使用地编功能,画面偏灰。

2:添加后处理,把自动曝光改为手动,并修改曝光补偿为10,此时预览Android Vulkan Mobile 和 预览D3D SM6 的对比PC画面、头显画面和apk打包头显画面,

仍有一点色差,apk依旧偏灰一点,不确定如何更进一步优化,有知道的小伙伴欢迎进群讨论。

3:打包apk后,关闭自动曝光的环境光照色差和PC D3D SM6预览 和 PC Android Vulkan Mobile预览近似。

【优化】机器手掌朝向

VR机器手掌模型,默认y轴正向。

Pico新版本手掌模型,默认x轴正向

VR模板中默认左右手掌模型的偏移量

MotionController组件的OpenXR默认动作源:LeftGrip 和 RightGrip

OpenXR

LeftGrip动作源模式下,手掌HandLeft默认坐标系,手柄追踪时的机器手掌模型位置正确;手势追踪时无手掌模型但是可以用Pico手势追踪组件的手掌模型。

(所以手柄操作时是MotionController,手势操作时是HandTrackingComponentPICO)

用手势追踪驱动MotionController的理由是很多VR模板都是操作MotionController的手掌/手柄模型。

按照PicoOpenXR文档,驱动 Motion Controller的动作源改为Left Wrist,

此时手势追踪时有默认机器手掌模型和Pico手掌模型跟随追踪坐标,但是手柄追踪时则无数据且Pico手掌留在丢失追踪坐标的位置,需要动态修改动作源。

因为机器手掌默认y朝向,要匹配成Pico手掌位置的默认x朝向,所以机器手掌的相对旋转绕z轴旋转-90°。

手势追踪时,可以驱动机器手掌和Pico手掌。

手柄追踪时,pico手掌模型丢失追踪目标坐标,停留在原地。

注意动态修改数据源时:

Left false Hand

Right false Hand

无手势无手柄 False Hand

手柄追踪时为False Hand

手势追踪时为True Hand

暂时不了解OpenXR串流时,手柄追踪时也是返回Hand

SteamVR

和OpenXR串流时返回值不一样:

无手势无手柄 False Hand

手柄追踪时为true Hand 【不一样】

手势追踪时为True Hand

如果用OpenXR串流的坐标系,手势追踪时,MotionController控制的机器手掌有偏移误差,需要微调

手柄追踪时,pico手掌模型追踪手柄坐标,手柄按键可以控制MotionController的机器手掌和Pico组件的手掌模型的握拳动画。

Android PicoOpenXR

与OpenXR串流时,效果基本一致。

Android PicoXR

MotionControl的MotionSource为Left和Right

驱动MotionController的机器手掌模型时,其偏移量比较特殊。

和OpenXR串流时返回值不一样:

无手势无手柄 true Controller

手柄追踪时为 true Controller

手势追踪时为 true Controller

手势追踪时,MotionController的机器手柄丢失追踪模板,停留在原地

手柄追踪时,Pico手掌隐藏。

PicoXR插件

PicoXR手势追踪文档 https://developer-cn.picoxr.com/document/unreal/hand-tracking/

插件勾选PicoXR,关闭OpenXR,关闭PicoLivePreview

项目设置里--PicoXR Settings 在 控制器(Controller) 下,将 HandTracking Support 设置为 Controllers and Hands 或 Hands Only

手势追踪功能仅支持 64 位应用开发,使用前请确保在 编辑 > 项目设置 > 平台 > Android > 构建 下勾选 支持 arm64 并取消勾选 支持 armv7。UE5 中已默认勾选 支持 arm64

手势组件层级结构

PICOXRHand Compoenet 为 PXR_HandComponent.h 的 C++基础组件

└─ BP_XRHandComponent 挂载了BP_Ray对象,用于每帧显示白色箭头,手势捏Pinch时变化箭头形态。

└─ BP_XRHandComponent_Left | BP_XRHandComponent_Right 默认配置了左右手的骨骼名映射

使用Pico默认手势模型 BP_XRHandComponent_Left | BP_XRHandComponent_Right 的 Bone Name Mappings 左右手骨骼映射

复制代码
((Palm, "left_palm"),(Wrist, "left_wrist"),(ThumbMetacarpal, "left_thumb_metacarpal"),(ThumbProximal, "left_thumb_proximal"),(ThumbDistal, "left_thumb_distal"),(ThumbTip, "left_thumb_tip"),(IndexMetacarpal, "left_index_metacarpal"),(IndexProximal, "left_index_proximal"),(IndexIntermediate, "left_index_intermediate"),(IndexDistal, "left_index_distal"),(IndexTip, "left_index_tip"),(MiddleMetacarpal, "left_middle_metacarpal"),(MiddleProximal, "left_middle_proximal"),(MiddleIntermediate, "left_middle_intermediate"),(MiddleDistal, "left_middle_distal"),(MiddleTip, "left_middle_tip"),(RingMetacarpal, "left_ring_metacarpal"),(RingProximal, "left_ring_proximal"),(RingIntermediate, "left_ring_intermediate"),(RingDistal, "left_ring_distal"),(RingTip, "left_ring_tip"),(LittleMetacarpal, "left_little_metacarpal"),(LittleProximal, "left_little_proximal"),(LittleIntermediate, "left_little_intermediate"),(LittleDistal, "left_little_distal"),(LittleTip, "left_little_tip"))

((Palm, "right_palm"),(Wrist, "right_wrist"),(ThumbMetacarpal, "right_thumb_metacarpal"),(ThumbProximal, "right_thumb_proximal"),(ThumbDistal, "right_thumb_distal"),(ThumbTip, "right_thumb_tip"),(IndexMetacarpal, "right_index_metacarpal"),(IndexProximal, "right_index_proximal"),(IndexIntermediate, "right_index_intermediate"),(IndexDistal, "right_index_distal"),(IndexTip, "right_index_tip"),(MiddleMetacarpal, "right_middle_metacarpal"),(MiddleProximal, "right_middle_proximal"),(MiddleIntermediate, "right_middle_intermediate"),(MiddleDistal, "right_middle_distal"),(MiddleTip, "right_middle_tip"),(RingMetacarpal, "right_ring_metacarpal"),(RingProximal, "right_ring_proximal"),(RingIntermediate, "right_ring_intermediate"),(RingDistal, "right_ring_distal"),(RingTip, "right_ring_tip"),(LittleMetacarpal, "right_little_metacarpal"),(LittleProximal, "right_little_proximal"),(LittleIntermediate, "right_little_intermediate"),(LittleDistal, "right_little_distal"),(LittleTip, "right_little_tip"))

默认手势触发 捏Pinch

输入映射上下文 InputMappingContext 中添加左手"捏"手势事件,弹出Menu菜单

默认动作映射只有捏Pinch

PDC串流,PicoXR插件+PicoLivePreview插件,手势捏Pinch事件开启Menu菜单。

MotionController组件的默认动作源:LeftGrip 和 RightGrip

【踩坑】错误操作记录:

PicoXR手势追踪时无控制器数据

因为MenuUI挂载在VR模板的控制器MotionController上,在PDC串流或者apk真机运行时,使用PicoXR的手势追踪时,MotionController动作源为LeftGrip时获取不到数据。

使用Pico手柄时,MotionController正常获取数据。当重新捕获手势追踪时,PDC串流模式下手柄控制器数据归0,UE手掌模型位置归0;apk真机手柄位置固定在历史位置。

需要修改MotionController的MotionSource动作源为Left

如果抄PicoOpenXR手势追踪文档的蓝图代码,最开始以为能共用,但是 Get Motion Controller Data获取Device Visual Device数据只有true Controller,没有Hand

PicoOpenXR手势追踪教程 UE5.3

群主视频 https://www.bilibili.com/video/BV1q84y1u7vi

1.勾选插件OpenXR + PicoOpenXR

OpenXR_HandTracking插件 ,

XR Visualization , (可视化插件用于画小方块,不支持shipping模式,左右眼有视差)

Bug:UE5.1旧版本拉丝是因为pico在26个节点有4个不可用,0掌心,6食指掌骨,11号中指掌骨,16号无名指掌骨,和Tip;新版本骨骼完善不用删除

https://www.khronos.org/openxr/ 官网

https://registry.khronos.org/OpenXR/#apispecs API说明

https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html OPenXRHandTracking帮忙实现了

2.查找 XR_EXT_hand_tracking 12.36 可以查阅哪些设备支持

查找 Conventions of hand joints

javascript 复制代码
// Provided by XR_EXT_hand_tracking
typedef enum XrHandJointEXT {
    XR_HAND_JOINT_PALM_EXT = 0, //UE5.1旧版Pico不可用 掌心
    XR_HAND_JOINT_WRIST_EXT = 1,
    XR_HAND_JOINT_THUMB_METACARPAL_EXT = 2,
    XR_HAND_JOINT_THUMB_PROXIMAL_EXT = 3,
    XR_HAND_JOINT_THUMB_DISTAL_EXT = 4,
    XR_HAND_JOINT_THUMB_TIP_EXT = 5,
    XR_HAND_JOINT_INDEX_METACARPAL_EXT = 6, //UE5.1旧版Pico不可用 食指的掌骨
    XR_HAND_JOINT_INDEX_PROXIMAL_EXT = 7,
    XR_HAND_JOINT_INDEX_INTERMEDIATE_EXT = 8,
    XR_HAND_JOINT_INDEX_DISTAL_EXT = 9,
    XR_HAND_JOINT_INDEX_TIP_EXT = 10,
    XR_HAND_JOINT_MIDDLE_METACARPAL_EXT = 11, //UE5.1旧版Pico不可用 中指的掌骨
    XR_HAND_JOINT_MIDDLE_PROXIMAL_EXT = 12,
    XR_HAND_JOINT_MIDDLE_INTERMEDIATE_EXT = 13,
    XR_HAND_JOINT_MIDDLE_DISTAL_EXT = 14,
    XR_HAND_JOINT_MIDDLE_TIP_EXT = 15,
    XR_HAND_JOINT_RING_METACARPAL_EXT = 16, //UE5.1旧版Pico不可用 无名指的掌骨
    XR_HAND_JOINT_RING_PROXIMAL_EXT = 17,
    XR_HAND_JOINT_RING_INTERMEDIATE_EXT = 18,
    XR_HAND_JOINT_RING_DISTAL_EXT = 19,
    XR_HAND_JOINT_RING_TIP_EXT = 20,
    XR_HAND_JOINT_LITTLE_METACARPAL_EXT = 21,
    XR_HAND_JOINT_LITTLE_PROXIMAL_EXT = 22,
    XR_HAND_JOINT_LITTLE_INTERMEDIATE_EXT = 23,
    XR_HAND_JOINT_LITTLE_DISTAL_EXT = 24,
    XR_HAND_JOINT_LITTLE_TIP_EXT = 25,
    XR_HAND_JOINT_MAX_ENUM_EXT = 0x7FFFFFFF
} XrHandJointEXT;

3.勾选 Is Hand Tracking Used ,Pico应用市场可以识别支持手势(不勾选也能用)

4.MotionController 选择LeftWrist 和 RightWrist (从PicoXR改为PicoOpenXR时需要注意修改,变量不同)

没有掌心,不能用palm

旧版本手掌模型朝向

5.手掌朝上,掌心朝内 (Pitch=0.000000,Yaw=90.000000,Roll=-90.000000) 新版本Row不用转

旧版本UE5.3的Pico默认手掌朝向为X轴负方向,且骨骼节点命名与现在不同

6.为了驱动骨骼,不驱动MotionController,从RightWrist改为Right ,目的是测试,避免影响到Pico手掌模型的观察,

7.在DefaultRoot节点添加PicoHand组件HandTrackingComponentPICO,骨骼选择Pico默认骨骼

组件:HandTrackingComponentPICO 和 方法"GetMotionControllerData" 手势数据 都正常支持。

(picoXR的PICOXRHand 和 BP_XRHandComponent_Left 支持手势追踪,

PicoXR无法使用GetMotionControllerData ,打包apk和pdc的VR预览都不支持)

Apply Location to Every Bone 用于匹配大人小孩手指头长短

Auto Hide 未识别到手势自动隐藏

8.BoneMapping骨骼映射

相关推荐
qq_399407181 天前
2025年Unity国际版下载及安装
unity·游戏引擎
鹿野素材屋1 天前
Unity做出果冻胸部的效果
unity·游戏引擎
两水先木示1 天前
【Unity】坐标转换(屏幕坐标、世界坐标、UI坐标)
unity·游戏引擎·空间转换
老朱佩琪!1 天前
Unity模板方法模式
unity·游戏引擎·模板方法模式
又来0771 天前
Unity手柄按键映射表
unity·游戏引擎
AndrewHZ1 天前
【图像处理基石】VR的眩晕感是如何产生的?
图像处理·算法·计算机视觉·vr·cv·立体视觉·眩晕感
nnsix2 天前
Unity的dllType Native和Managed的区别
unity·游戏引擎
编码旅者2 天前
《Virt A Mate(VAM)》免安装豪华版v1.22中文汉化整合
游戏引擎·图形渲染·vr·动画
Clank的游戏栈2 天前
AI游戏开发全自动编程课程体系(Cursor版,支持Unity/Cocos, Laya后续支持)
人工智能·unity·游戏引擎
发际线危机121382 天前
Unity发布apk部分真机虚线采样变成实线问题
unity·游戏引擎