Unity Pico MR注意事项

1.版本问题

MR这块,SDK 2.5.0的版本不支持pico4 Ultra!!

pico4 Ultra必须用pico SDK3.0以上的版本!

2.在使用空间锚点时,有可能会在创建锚点的时候返回结果ERROR_VALIDATION_FAILURE,这个如果你确定传入的参数都没有问题,那么就可能是还没开启空间锚点,需要先开空间锚点功能,代码和PXR_Manager设置都要

3.开启功能时,需要延迟两秒,不要在游戏一运行时就开启,比如开启锚点或者房间标定

4.关于场景标定的坐标相关

场景标定中,我们需要获取物体的坐标和旋转信息,比如:

csharp 复制代码
public static PxrResult GetSceneBox3DData(ulong anchorHandle, out Vector3 position, out Quaternion rotation, out Vector3 extent)

获取3D物体的数据,但是我们要注意,这些场景锚点的position,rotation,都是相对于锚点坐标的偏移

并不能直接将position赋值给cube.transform.position,他是以锚点为原点的,所以实际上使用的时候,可以如下做法:

1.创建一个空物体

2.将锚点坐标handPos和锚点旋转handleRotation赋值给空物体

3.然后再把position赋值给cube

4.之后将cube设置为锚点物体的子物体,代码如下

csharp 复制代码
PxrResult posResult = PXR_MixedReality.LocateAnchor(handle, out handlePos, out handleRotation);

var result = PXR_MixedReality.GetSceneBox3DData(handle, out var position, out var newRotation, out var extent);
var sceneAnchor = new GameObject(handle.ToString());
var box3D = GameObject.CreatePrimitive(PrimitiveType.Cube);
box3D.transform.localPosition = position;
box3D.transform.rotation = newRotation;
box3D.transform.localScale = extent;
box3D.transform.SetParent(sceneAnchor.transform);
sceneAnchor.transform.rotation = handleRotation;
sceneAnchor.transform.position = handlePos;
相关推荐
weixin_4215850121 天前
如何将论文中的方法推广到脑肿瘤切除手术前的MR图像和切除手术后的超声图像
mr
無森~1 个月前
HBase与MR、Hive整合
hive·hbase·mr
Hody911 个月前
【XR技术介绍】一文理清 OpenVR、OpenXR、SteamVR 与各厂商 SDK等容易混淆的概念
ar·vr·mr
kdyqcsxt662 个月前
MR-H3高速环块磨损试验机
mr
hkNaruto2 个月前
【gitlab】通过 `pre-receive` 钩子控制 MR 合并时的分支路径合并方向,阻止未经允许的合并路径
elasticsearch·gitlab·mr
fcm193 个月前
pico之坑VR变MR
vr·mr
RedMery3 个月前
环境Ubuntu 25.04,RTX4090,CUDA12.8下的Mr.DETR、Detectron2、detrex、Transformer安装
ubuntu·transformer·mr
Jonathan Star3 个月前
master 分支必须做严格的分支保护,禁止直接 push,所有变更必须通过 PR/MR + 审核后合并
mr
大江东去浪淘尽千古风流人物3 个月前
【DSP】向量化操作的误差来源分析及其经典解决方案
linux·运维·人工智能·算法·vr·dsp开发·mr