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;
相关推荐
万里长江横渡17 小时前
三菱MR-JE系列伺服报警信息查看
制造·mr
源远流长jerry11 天前
RDMA Memory Region (MR) 机制详解:地址转换与内存保护
linux·服务器·网络·tcp/ip·架构·mr
C澒20 天前
供应链产研交付提效:前端多业务线新增样板间页面统计方案
前端·mr
weixin_421585011 个月前
如何将论文中的方法推广到脑肿瘤切除手术前的MR图像和切除手术后的超声图像
mr
無森~2 个月前
HBase与MR、Hive整合
hive·hbase·mr
Hody912 个月前
【XR技术介绍】一文理清 OpenVR、OpenXR、SteamVR 与各厂商 SDK等容易混淆的概念
ar·vr·mr
kdyqcsxt662 个月前
MR-H3高速环块磨损试验机
mr
hkNaruto3 个月前
【gitlab】通过 `pre-receive` 钩子控制 MR 合并时的分支路径合并方向,阻止未经允许的合并路径
elasticsearch·gitlab·mr
fcm193 个月前
pico之坑VR变MR
vr·mr