基于Hololens开发—本地化空间锚点

本地化空间锚基于Hololens的空间映射,本项目本章内容主要是对Hololens端的离线瞄点进行保存,当再次启用项目时将数据进行读取重置当前位置。具体过程见“注释”

public class SpaceAnchorController : MonoBehaviour
{public string ObjectAnchorStoreName;WorldAnchorStore anchorStore;bool Placing = false;void Start(){//获取WorldAnchorStore 对象WorldAnchorStore.GetAsync(AnchorStoreReady);}private void AnchorStoreReady(WorldAnchorStore store){anchorStore = store;string[] ids = anchorStore.GetAllIds();//遍历之前保存的空间锚,载入指定id场景对象信息for (int index = 0; index < ids.Length; index++){if (ids[index] == ObjectAnchorStoreName){WorldAnchor wa = anchorStore.Load(ids[index], gameObject);break;}}}// Update is called once per framevoid Update(){if (Placing){//当Cube处于可移动状态,根据凝视射线的位置,更新Cube的位置gameObject.transform.position = Camera.main.transform.position + Camera.main.transform.forward * 2;}}public   void OnSelect(){if (anchorStore == null){return;}if (Placing){//当再次点击全息对象时,保存空间锚信息WorldAnchor attachingAnchor = gameObject.AddComponent<WorldAnchor>();if (attachingAnchor.isLocated){bool saved = anchorStore.Save(ObjectAnchorStoreName, attachingAnchor);}else{//有时空间锚能够立刻被定位到。这时候,给对象添加空间锚后,空间锚组件的isLocated属性//值将会被设为true,这时OnTrackingChanged事件将不会被触发。因此,在添加空间锚组件//后,推荐立刻使用初始的isLocated状态去调用OnTrackingChanged事件attachingAnchor.OnTrackingChanged += AttachingAnchor_OnTrackingChanged;}}else{//当全息对象已附加空间锚组件后,它不能被移动。如果你需要移动全息对象的话,那么你必须这样做://1.立刻销毁空间锚组件//2.移动全息对象//3.添加一个新的空间锚到全息对象上WorldAnchor anchor = gameObject.GetComponent<WorldAnchor>();if (anchor != null){DestroyImmediate(anchor);}string[] ids = anchorStore.GetAllIds();for (int index = 0; index < ids.Length; index++){if (ids[index] == ObjectAnchorStoreName){bool deleted = anchorStore.Delete(ids[index]);break;}}}Placing = !Placing;}private void AttachingAnchor_OnTrackingChanged(WorldAnchor self, bool located){if (located){bool saved = anchorStore.Save(ObjectAnchorStoreName, self);self.OnTrackingChanged -= AttachingAnchor_OnTrackingChanged;}}
}

基于Hololens开发---本地化空间锚点相关推荐

  1. HoloLens开发手记 - 空间映射(SpatialMapping)

    空间映射提供了HoloLens周围环境中真实世界表面的详细表示,允许开发人员创建令人信服的混合现实体验.通过将真实世界与虚拟世界合并,应用可以使全息图看起来是真实的.通过提供熟悉的现实世界行为和交互, ...

  2. 第十九篇:UE4基于nDisplay开发Cave空间(一)

    一年没写博客了,主要太忙了,今年完成了人生中的几件大事,哈哈哈.....好不容易闲下来,之前写过两篇使用UE4 开发Cave空间的文章,后来发现UE4 有一个nDisplay的插件可以用于Cave的开 ...

  3. Hololens 开发笔记(10)——World Anchor

    Hololens 实现全息体验的一个特性就是场景保持.当用户离开场景或关闭应用时,场景中的全息图会被保存在所放置的位置,当用户回到场景或重新打开应用时,能够准确的还原之前场景内的全息内容. World ...

  4. [洪流学堂]Hololens开发高级篇5:空间映射(Spatial mapping)

    本教程基于Unity2017.2及Visual Studio 2017 本教程编写时间:2017年12月16日 本文内容提要 空间映射让holograms了解周围环境,将真实世界和虚拟世界更好地结合在 ...

  5. arcgis中python批处理_基于Python的ArcGIS空间数据格式批处理转换工具开发

    基于 Python 的 ArcGIS 空间数据格式批处理转换工具开 发 焦 洋,邓 鑫,李胜才 [摘 要] 摘 要 ArcGIS 仅提供了单个文件的空间数据格式转换工具.本文首先 研究基于 Pytho ...

  6. 空间素材代码_C++大神解读视频捕获程序,VC++基于Directx开发的源代码

    一款小巧的视频捕获程序,VC++6.0基于Directx开发的源代码,编译时需要Directx相关类库文件, 窗口表单编写的简单视频捕捉应用程序.这个工程既演示了窗口表单应用程序的创建,又演示了 Op ...

  7. HoloLens开发环境安装部署(基于Unity2018.4/VS2017/MRTK)

    HoloLens是微软的MR开发环境,网上有很多部署教程,我这里推一个博主的部署方法,大体上都差不多.用微软的官方平台把UWP程序部署到HoloLens眼镜里. HoloLens开发环境安装部署 一. ...

  8. HoloLens开发手记 - Unity development overview 使用Unity开发概述

    Unity Technical Preview for HoloLens最新发行版为:Beta 24,发布于 09/07/2016 开始使用Unity开发HoloLens应用之前,确保你已经安装好了必 ...

  9. Microsoft Hololens开发上手(4)

    磨刀不误砍柴功,我们总有一些小工程师,不了解全貌,不好好思考,上手就开始写代码,这种做法是非常不可取的.对于Hololens的开发也是一样.今天我们来重点看看Hololens里面的一些概念,比如Hol ...

最新文章

  1. TCP/IP反码求和校验
  2. 3——PHP 简单运算符的使用
  3. Linux下Apache虚拟主机配置
  4. 整理大型网站架构必知必会的几个服务器知识
  5. 爆笑:可怜的话剧演员
  6. GoLang学习笔记——data_type
  7. ARC080F - Prime Flip(贪心,差分,二分图匹配)
  8. 小米要用 AI + IoT 做年轻人的第一套智能家居
  9. 如何将servlet中的变量在jsp页面中显示---jsp中的jstl表达式(C标签)
  10. Win10文件管理器那些你不知道的秘密
  11. python爬虫搜索文献_【Python爬虫】爬取多关键字搜索的百度图片
  12. Jack Lin tools 3Dmax批渲染插件
  13. GridinSoft CHM编辑器3.2.0多语言,轻松快速地翻译CHM电子书
  14. 外贸企业域名邮箱怎么申请?
  15. 用border-color 的 transparent 制作一个三角形
  16. (转)少儿编程这么火, 究竟学哪一种语言最靠谱?这篇文章说透了!
  17. 《安富莱嵌入式周报》第210期:2021.04.26--2021.05.02
  18. php日志分析,PHP SeasLog实现高性能日志记录
  19. System Verilog简要笔记
  20. 百度升级烽火算法2.0,建议网站https改造打击网站劫持

热门文章

  1. WiFi认证—分析从连接WiFi到上网的全过程(一)
  2. iOS 图片模糊效果(高斯模糊)
  3. 年薪16薪,工作福利靠砸钱 ?在京东做测试员原来这么爽
  4. 并发编程-基础篇五-ThreadLocal
  5. vue引入外部js文件(第三方js工具或者jq库)
  6. 设计模式总结--------调停者模式
  7. 微信内置浏览器使用DevTools实现自动顶帖脚本
  8. DS18B20温度传感器arduino程序
  9. ESP8266-Arduino编程实例-MQ3酒精传感器驱动
  10. 会计中阿拉伯数字变数字繁体大写