为了增加游戏的乐趣性,我对项目进行了Unity3D的引入,经过一番折腾,终于做出了一个基本的AR探索模式的基本雏形。

  途中的小方块就是虚拟物体,因为是静态图片,所以也不能看出什么来,只能文字形容一下:方块自身带有自转功能,且所有的方块是围绕着Unity主摄像机公转,这就像太阳系。

  上面都是废话,实际跟AR有关系的效果是这样的:

  场景本身是一个具有东南西北指向的坐标系,然后我们的主摄像机(打开应用后的镜头)就处于所有方块的中间,也就是公转中心,而主摄像机本身加入了陀螺仪传感器,会跟着手机实际镜头的角度变化而移动,这样解释可能不清楚,打个比方,就说上图的方块,如果我手机往其他任何角度位置转动,方块出现在手机上的位置是会根据镜头旋转角度的相反方向而改变的,这样就产生了真是的场景效果。

 [图的中心位置,就是主摄像机的位置]

 

 在制作此效果时,所遇到的比较大的难题是:

    因为我们只是开启了背景摄像头,也就是说,“实景”只不过是一个“背景”。举一个栗子:

  根据上方的那张图片,我们可以看出,黑色方块,是离我们比较近的,至少比“脚”离镜头更近一些,因为方块挡住了脚。那假设,你现在,拿你的小手指,竖在你镜头面前最近的位置,你会发现。。不管你手指离摄像机多近,方块依然在你手指前面,会挡着你的手指,造成不真实的感觉。我们希望达到的效果,自然是根据手指的位置,判断小方块到底是在手指的前面,还是手指的后面,从而改变方块究竟是遮住手指,还是手指遮住方块。如果说,解决的办法,恐怕我目前的水准是办不到,而且这个也超出了我的技术领域,毕竟我不是做图像识别技术的。解决的方法可能可以这样子:摄像机采集图像中的物体,然后根据物体的透视效果,判断物体距离镜头的距离,然后可以有接口能返回物体离镜头距离的数值,这样后面的效果处理啊,距离判断啊,就是我这个领域能做的事了。看来要达到真正的AR应用,还需要大厂的SDK支持。

【CityHunter】Unity3D设计AR探索模式的更多相关文章

  1. php模式设计之 工厂模式

    承接上篇php模式设计之 单例模式,(虽然好像关系不大).今天讲述第二种基础的模式设计——工厂模式. 那么何为工厂模式? 从名字来看,似乎看不出什么端倪.工厂模式,和生产有关?还是和生产流程有关?难道 ...

  2. 基于 MongoDB 动态字段设计的探索 (二) 聚合操作

    业务需求及设计见前文:基于 MongoDB 动态字段设计的探索 根据专业计算各科平均分 (总分.最高分.最低分) public Object avg(String major){ Aggregatio ...

  3. .NET 云原生架构师训练营(设计原则与模式)--学习笔记

    在复杂系统的架构设计中引入设计原则与模式,能够极大降低复杂系统开发.和维护的成本 目录 几个问题 为什么要学习设计模式 优良架构设计的具体指标 理解复杂系统 面向对象思想(指导复杂系统的分析.设计.实 ...

  4. 【Unity3D】AR应用中,关于东南西北方位的判断。

    这篇文章的应用场景是这样子的: 首先我们要做的是一个带有LBS定位服务(比如高德地图.百度地图等)AR功能,在这个场景中,会有一些地图上的”点“(如派出所.学校)是我们需要显示在我们的AR镜头上的,如 ...

  5. 高通vuforia+Unity3D 制作ar app

    很简单就可以用Unity3D做出增强现实的一个小例子 新人第一次写博客,若出现错误望指正^_^ 需要下载de东西: unity3d 5.0 http://unity3d.com/get-unity   ...

  6. Android 腾讯入门教程( 智能手表UI设计 和 MVC模式 )

    *****注意到mvc 在android 中是如何进行分层分域执行各自的功能.**** 官方推荐的按钮尺寸是48像素 前端之Android入门(1):环境配置 前端之Android入门(2):程序目录 ...

  7. (十三)WebGIS中工具栏的设计之命令模式

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 从这一章节开始我们将正式进入WebGIS的工具栏中相关功能的 ...

  8. .NET应用架构设计—工作单元模式(摆脱过程式代码的重要思想,代替DDD实现轻量级业务)

    阅读目录: 1.背景介绍 2.过程式代码的真正困境 3.工作单元模式的简单示例 4.总结 1.背景介绍 一直都在谈论面向对象开发,但是开发企业应用系统时,使用面向对象开发最大的问题就是在于,多个对象之 ...

  9. .NET应用架构设计—表模块模式与事务脚本模式的代码编写

    阅读目录: 1.背景介绍 2.简单介绍表模块模式.事务脚本模式 3.正确的编写表模块模式.事务脚本模式的代码 4.总结 1.背景介绍 要想正确的设计系统架构就必须能正确的搞懂每个架构模式的用意,而不是 ...

随机推荐

  1. SortedMap基本特性

    特性: 继承与Map. 提供对key(自然排序顺序或者SortedMap创建时提供的Comparator)的全排序. key必须实现Comparable接口,以便于进行相互比较. 应用于对map的遍历 ...

  2. spark streaming 与 kafka 结合使用的一些概念理解

    1. createStream会使用 Receiver:而createDirectStream不会,数据会通过driver接收. 2.createStream使用 Receiver 源源不断的接收数据 ...

  3. Oracle创建表空间和用户

    用户名为:C##NEWO ============================================================================= /*分为四步 */ ...

  4. [原创]kali linux下破解wifi密码以及局域网渗透

    无线破解是进行无线渗透的第一步.破解无线目前只有两种方法:抓包.跑pin. 破解无线方法一:抓包.我是在kali linux下进行的. 将无线网卡的模式调为监听模式. airmon-ng start ...

  5. Linux下安装Nginx1.9.3

    操作系统:CentOS6.5 64bit Nginx: 1.9.3 1.下载Nginx [root@iZ94jj63a3sZ softs]# wget http://nginx.org/downloa ...

  6. Ubuntu14-04 MySQL-5.6.21通用二进制安装

    #卸载mysql /etc/init.d/mysqld stop &> /dev/null killall mysqld &> /dev/null sudo rm -rf ...

  7. Tomcat关闭日志catalina.out

    catalina.out文件会越来越大,对系统的稳定造成了一定的影响.conf/logging.properties 一般在部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统 ...

  8. Nginx manifest 实现 HTML5 Application Cache

    什么是Application Cache HTML5引入了应用程序缓存技术,意味着web应用可进行缓存,并在没有网络的情况下使用,通过创建cache manifest文件,可以轻松的创建离线应用. A ...

  9. Merge k Sorted Lists

    1. Merge Two Sorted Lists 我们先来看这个 问题: Merge two sorted linked lists and return it as a new list. The ...

  10. Java中Array.sort()的几种用法(需要初始化要排序的对象)

    ====================================================== 1.Arrays.sort(int[] a) 这种形式是对一个数组的所有元素进行排序,并且 ...