【CityHunter】Unity3D设计AR探索模式

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

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

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

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

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

 

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

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

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

【CityHunter】Unity3D设计AR探索模式

时间: 2024-08-11 02:09:23

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

php模式设计之 工厂模式

承接上篇php模式设计之 单例模式,(虽然好像关系不大).今天讲述第二种基础的模式设计——工厂模式. 那么何为工厂模式? 从名字来看,似乎看不出什么端倪.工厂模式,和生产有关?还是和生产流程有关?难道还和工厂领导有关?和领导秘书有关?秘书...     好了不卖关子了,所谓工厂模式还真和生产有关.生产什么呢?生产出来的是一个实例对象.通过什么设备生产?通过一个工厂类生产.怎么生产呢?工厂类调用自身静态方法来生产对象实例. 工厂模式有一个关键的构造,根据一般原则命名为Factory的静态方法,然而

大话设计の创建型模式

在前面设计模式汇总中我们从宏观整理了设计模式中整体分类,下面针对其中的创建型模式单独讨论内部的分类原则和哥哥设计创建型模式的核心思想.请看下图: 首先区分工厂三姐妹我们可以设想一个情景,制造车的工厂,三者是逐级在顶层进行抽象的关系大概的类图如下图: 简单工厂是只有一个工作车间一整条生产线 工厂方法是根据需要自动建造多个车间多条生产线 抽象工厂是由不同系列不同牌子的工厂 另外的两种设计模式比较容易,创建式模式是稳定住对象内部建构过程或者顺序,建造的表示可以是个性化的,从而将建造于表示分离.原型模式

vuforia 结合 unity3d 开发 AR 的 androidAPP 总结

原地址:https://software.intel.com/zh-cn/blogs/2014/07/09/vuforia-unity3d-ar-androidapp/?utm_campaign=CSDN&utm_source=intel.csdn.net&utm_medium=Link&utm_content=%20others-vuforia 整个开发过程的流程是这样的: 1.在unity3D中生成3D人像: 2.在vuforia官网注册,上传识别图像: 3.下载图像unity

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

业务需求及设计见前文:基于 MongoDB 动态字段设计的探索 根据专业计算各科平均分 (总分.最高分.最低分) public Object avg(String major){ Aggregation aggregation = Aggregation.newAggregation( Aggregation.unwind("courseList"), Aggregation.match(Criteria.where("major").is(major)), Agg

.NET应用架构设计—工作单元模式(摆脱过程式代码的重要思想,逆袭DDD)

阅读目录: 1.背景介绍 2.过程式代码的真正困境 3.工作单元模式的简单示例 4.总结 1.背景介绍 一直都在谈论面向对象开发,但是开发企业应用系统时,使用面向对象开发最大的问题就是在于,多个对象之间的互操作需要涉及数据库操作.两个业务逻辑对象彼此之间需要互相调用,如果之间的互相操作是在一个业务事务范围内的,很容易完成,但是如果本次业务逻辑操作涉及到多个业务对象一起协作完成时问题就来了. 在以往,我们使用过程式的代码(事务脚本模式),将所有与本次业务事务范围内相关的所有逻辑都写在一个大的代码中

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

阅读目录: 1.背景介绍 2.简单介绍表模块模式.事务脚本模式 3.正确的编写表模块模式.事务脚本模式的代码 4.总结 1.背景介绍 要想正确的设计系统架构就必须能正确的搞懂每个架构模式的用意,而不是胡子眉毛一把抓.现在有一个现象是什么呢,项目的结构从表面上看是很不错,层分的很合理,其实对业务系统来说也就那么几种层设计方法,但是现在很多项目的逻辑架构的设计不是理想,有很多概念大家并不是很了解,当然也许每个人对技术的追求不同罢了.不管你追求不追求,事实我们还是要去往正确的方向努力才对的. 很多人包

C#面向对象设计之——命令模式(十五)

一.前言 命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,另外对请求排队或记录请求日志,以及支持可撤销的操作. 二.结构图 三.实例代码 namespace 命令模式 { class Program { static void Main(string[] args) { //开店前的准备 Barbecuer boy = new Barbecuer(); Command bakeMuttonCommand1 = new BakeMuttonCommand(boy); Co

C#面向对象设计之——桥接模式(八)

一.前言 桥接模式就是将抽象部分和它的实现部分分离,使它们都可以独立地变化.抽象与它的实现分离,实现是指抽象类和它的派生类用来实现自己的对象.就手机而言,手机既可以用品牌来分类,也可以以功能来分类. 在面向对象设计中,我们有一个很重要的原则:合成/聚合复用原则,即优先使用对象合成/聚合,而不是类继承. 对象的继承关系是在编译时就已经定好了,所以无法再运行时改变从父类继承发生的变化.当你需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或者被其他更适合的类替换,这种依赖关系限制了

php模式设计之 策略模式

策略模式: 策略模式设计帮助构建的对象不必自身包含逻辑,而是能够根据需要利用其他对象中的算法. 使用场景: 例如有一个CD类,我们类存储了CD的信息. 原先的时候,我们在CD类中直接调用getCD方法给出XML的结果 随着业务扩展,需求方提出需要JSON数据格式输出 这个时候我们引进了策略模式,可以让使用方根据需求自由选择是输出XML还是JSON 代码实例: <?php //策略模式 //cd类 class cd { protected $cdArr; public function __con