虚幻版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骨骼映射

相关推荐
maki0773 小时前
虚幻版Pico大空间VR入门教程 03 —— PicoXR插件和PicoOpenXR插件的文档对比记录
游戏引擎·虚幻·pico
maki0777 小时前
虚幻版Pico大空间VR入门教程 01 ——UE5 Android打包环境4.26~5.6
android·ue5·vr·虚幻·pico·大空间
maki0777 小时前
虚幻版Pico大空间VR入门教程 02 —— Pico设备选择
游戏引擎·vr·虚幻·pico
DoomGT10 小时前
UE5 - C++项目基础
c++·ue5·ue4·虚幻·虚幻引擎·unreal engine
HELLOMILI10 小时前
[UnrealEngine] 虚幻引擎UE5地形入门指南 | UE5地形教程(UE5 Terrain)
游戏·ue5·游戏引擎·虚幻·虚幻引擎·unreal engine
qq_205279051 天前
unity 读取PPT显示到屏幕功能
unity·游戏引擎·powerpoint
HELLOMILI1 天前
[UnrealEngine] 虚幻编辑器界面 | 虚幻界面详解 | UE5界面详解
游戏·ue5·编辑器·游戏引擎·虚幻·unreal engine
AA陈超2 天前
虚幻引擎UE5专用服务器游戏开发-32 使用Gameplay Tags阻止连招触发
c++·游戏·ue5·游戏引擎·虚幻
危险库2 天前
【UE4/UE5】在虚幻引擎中创建控制台指令的几种方法
c++·ue5·游戏引擎·ue4·虚幻