Hololens开发手记——Unity之World Anchor空间锚
来源:互联网 发布:his医疗软件 编辑:程序博客网 时间:2024/06/08 05:10
World Anchor空间锚提供了一种能够将物体保留在特定位置和旋转状态上的方法。这保证了全息对象的稳定性,同时提供了后续在真实世界中保持全息对象位置的能力。简单地说,你可以为全息物体来添加空间锚点,这样就能在后续步骤中将全息物体准确恢复到它原来的位置。
Adding a World Anchor 添加空间锚
命名空间: UnityEngine.VR.WSA
类型: WorldAnchor
Unity中添加空间锚的方式很简单,如下:
WorldAnchor anchor = gameObject.AddComponent<WorldAnchor>();
Removing a World Anchor 移除空间锚
如果你不再想将GameObject固定在特定位置,同时在场景中也不想移动它,,那么可以调用Destroy()方法来销毁WorldAnchor组件,如下:
Destroy(gameObject.GetComponent<WorldAnchor>());
如果你想要立刻在场景中移动对象,那么需要调用DestroyImmediate()来销毁空间锚组件,如下:
DestroyImmediate(gameObject.GetComponent<WorldAnchor>());
Moving a World Anchored GameObject 移动锚定的全息对象
当全息对象已附加空间锚组件后,它不能被移动。如果你需要一定全息对象的话,那么你必须这样做:
- 立刻销毁空间锚组件
- 移动全息对象
- 添加一个新的空间锚到全息对象上
DestroyImmediate(gameObject.GetComponent<WorldAnchor>());gameObject.transform.position = new Vector3(0, 0, 2);WorldAnchor anchor = gameObject.AddComponent<WorldAnchor>();
Handling Locatability Changes 处理可定位能力的变化
在某个时间点,空间锚可能不能够在世界中被定位到。如果这种情况发生,Unity将不能更新锚定对象的位置。在应用运行时,这也肯能会发生变化。不能够及时处理可定位能力的变化,可能会导致对象不会出现在准确的位置上。
为了追踪可定位能力的变化,需要采取如下做法:
- 订阅OnTrackingChanged事件
- 处理此事件
订阅事件
代码如下:
anchor.OnTrackingChanged += Anchor_OnTrackingChanged;
处理OnTrackingChanged事件
代码如下:
private void Anchor_OnTrackingChanged(WorldAnchor self, bool located){ // 根据定位状态简单的显示或者隐藏对象 self.gameObject.SetActiveRecursively(located);}
设定明确的初始状态
有时空间锚能够立刻被定位到。这时候,给对象添加空间锚后,空间锚组件的isLocated属性值将会被设为true,这是OnTrackingChanged事件将不会被触发。因此,在添加空间锚组件后,推荐立刻使用初始的isLocated状态去调用OnTrackingChanged事件,如下:
Anchor_OnTrackingChanged(anchor, anchor.isLocated);
阅读全文
0 0
- Hololens开发手记——Unity之World Anchor空间锚
- Hololens开发手记——Unity之Spatial Sounds空间声音
- hololens开发手记——Unity之语音输入
- Hololens开发手记--Unity之Persistence
- HoloLens开发手记 - 空间映射(SpatialMapping)
- Hololens开发手记 - 空间映射(放置物体)
- HoloLens开发手记
- HoloLens开发手记
- HoloLens开发手记
- Hololens开发之HoloToolkit+空间感知组件
- HoloLens开发——Locatable camera in Unity
- HoloLens开发手记 - UI搭建
- Unity Hololens开发教程
- [洪流学堂]Hololens开发入门篇2之Hello World
- Hololens开发之HoloLens简介
- HoloLens开发——Hololens Spatial mapping(空间映射)中移动子模型后父模型移动的实现方法
- Hololens入门之使用Unity开发一个简单的应用
- (四)Hololens Unity 开发之 凝视系统
- 基本数据类型、包装类、String类型之间的相互转换
- JQuery 动态加载CSS
- PHP数组和Json之间的转换
- 安卓中不同的类之间交互,用接口比较好
- JavaScript设计模式之代理模式
- Hololens开发手记——Unity之World Anchor空间锚
- js插件获取当前所在的省市
- 我与python约个会:22.企业级开发基础3:类和对象
- 激光雷达定位(四)
- kgdb调试内核的环境搭建与使用教程
- 算法分析与设计第十四周:424. Longest Repeating Character Replacement
- kylin + Calcite + Saiku
- spring 前端使用ajax提交两个以上相同对象list到后台的处理
- WebView 在android中的使用详解