AR--小Demo--伴旅

原创 2015年11月17日 17:29:20

抽点时间出来研究AR,完成下两个月前自己的一个idea,可惜的是到现在它已经再没必要做下去,没了意义,当初的激情已经不再。扩展还是很容易,毕竟留了接口。

说真的AR入门还是很简单,缺的的是idea.

如果想把Ar融入到游戏中貌似还是有点难,想到的就只有卡牌。

1.界面。
开始
拍照

支持触摸缩小放大模型

简单的点击模型互动


熟悉unity 动画系统


一。准备
1.登陆https://developer.vuforia.com/注册账号
2.http://www.arvrschool.com/read.php?tid=325&fid=21准备工作
二。导入模型在ARCamera里面有一项 Data Set Load Behaviour 选择下面的Load Data Set starvuforia Activate
三。开始界面。
四。主界面
1.拼UI,确定功能。
在MainStage里面负责监听AR的出现和消失事件,主要是显示主界面和隐藏主界面。
2.设计配置表,主要是为了以后维护简单只需要改配置表换资源就OK,扩展耶很容易.这步很重要。程序读取配置表自动生成选择界面UI.写配置实用Excel-->xml ,程序步骤:读取Xml解析所有数据


需求难点:1.识别出来图片时候要显示UI,没识别出来隐藏UI.
解决: DefaultTrackableEventHandler 是发现和丢失的函数
 2.UI界面没有显示出来。
  解决:选中UI的摄像机clear Flags-->Depth only, Depth 改后渲染就是它深度在ArCamera之上2
 3.自动生成UI排列,需要的是脑力。
 4.导出excle-->Xml http://zzfei.com/excel-to-xml/ 注意源xml格式

//平台路径

    public string PathRes()
     {
         string localPath =
         #if UNITY_EDITOR
          "file://" + UnityEngine.Application.streamingAssetsPath;
        #elif UNITY_ANDROID
          UnityEngine.Application.streamingAssetsPath;
        #endif


         return localPath;
     }

//解析我自己的配置文件xml
    public void ParseXml(WWW filePath, string SingleNode)
    {


            XmlDocument xmlDoc = new XmlDocument();
            Debug.Log(filePath.text);
            xmlDoc.LoadXml(filePath.text);
            XmlNodeList nodeList = xmlDoc.SelectSingleNode(SingleNode).ChildNodes;
            foreach (XmlElement xe in nodeList)
            {
                ModeData temp = new ModeData();
                int key = 0;
                foreach (XmlElement x1 in xe.ChildNodes)
                {
                    if (x1.Name == "ModeID") {
                        temp.ModeID = int.Parse(x1.InnerText);
                        key = temp.ModeID;
                    }
                    if (x1.Name == "StaticAutoType") temp.Type_Big = (int.Parse(x1.InnerText) == 1 ? StaticAutoType.Auto : StaticAutoType.Static);
                    if (x1.Name == "SubdivideType")
                    {
                        switch (x1.InnerText.ToString())
                        {
                            case "Anim":
                                temp.Type_little = SubdivideType.Anim;
                                break;
                            case "Person":
                                temp.Type_little = SubdivideType.Person;
                                break;
                            case "Traffic":
                                temp.Type_little = SubdivideType.Traffic;
                                break;
                            case "Military":
                                temp.Type_little = SubdivideType.Military;
                                break;
                            default:
                                break;
                        }  
                    }


                    if (x1.Name == "Name") temp.Name = x1.InnerText.ToString();
                    if (x1.Name == "ModePath") temp._modePath = x1.InnerText.ToString();
                    if (x1.Name == "HeadPath") temp._headPath = x1.InnerText.ToString();
                    if (x1.Name == "ChineseSound") temp.ChineseSound = x1.InnerText.ToString();
                    if (x1.Name == "EnglishSound") temp.EnglishSound = x1.InnerText.ToString();
                    if (x1.Name == "_callSound") temp._callSound = x1.InnerText.ToString();
                    if (x1.Name == "RunStr") temp.RunStr = x1.InnerText.ToString();
                    if (x1.Name == "WalkStr") temp.WalkStr = x1.InnerText.ToString();
                    if (x1.Name == "RelaxStr") temp.RelaxStr = x1.InnerText.ToString();
                }
                _allModes.Add(key, temp);
            }
       // }
        Debug.Log("Count : " + _allModes.Count);
        foreach (KeyValuePair<int,ModeData> temps in _allModes)
        {
            Debug.Log("_modePath : " + temps.Value._modePath);
        }
        //ModuleManager.Instance.AddModule(ModuleType.MainModule, new GameEvent(MainNotice.SHOW_MAIN));
        StageManager.Instance.EnterStart();
    }

链接: http://pan.baidu.com/s/1sj8BzKp 密码: jzae




相关文章推荐

Android AR ---HelloAR(用的EasyAR 免费版)

前些天看见一个demo,扫描特定的形状,屏幕上会出现对应的小娃娃做相应的动作(3d的,不管你屏幕怎么动,他都是在固定的位置)。 这就引起了我的好奇心,查了半天,最后找到了一个,叫EasyAR的。 ...
  • geanwen
  • geanwen
  • 2017年08月31日 17:37
  • 358

Android Studio上Vuforia AR引擎入门Demo

前言:去年VR火得一塌糊涂,但也没拿出像样的成绩单,反而为广大宅男带来福利(呵呵,你懂的。。。) 但是这毕竟是一大趋势,而与VR同样吸引人的还有AR和MR技术,它三分别代表Virtual Realit...
  • zeqiao
  • zeqiao
  • 2017年01月19日 16:44
  • 2014

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

【Android】增强现实应用——AR画报

作品视频链接:http://v.youku.com/v_show/id_XMTU4Mzg4MzY1Mg==.html Ø  【作品名称】:《AR画报》 Ø  【实验目的】 在Android系统上...

搭建Android AR技术开发环境(Aqumented Reality)

AR(Augmented Reality)技术:增强现实是一种全新的人机交互技术 ,利用这样一种技术 ,可以模拟真实的现场景观 ,它是以交互性和构想为基本特征的计算机高级人机界面。使用者不仅能够通过虚...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

用Unity3D实现简易的AR Demo

用Unity3D实现简易的AR Demo AR(Augmented Reality),即增强现实技术,是一种实时地计算摄影机影像的位置及角度并加上处理相应图像的技术,这种技术的目标是在屏幕上把虚拟世...
  • snk1996
  • snk1996
  • 2015年10月07日 20:47
  • 5619

利用手机传感器定位的AR demo

手机传感器测距定位,随着手机位置和姿态的变化,在地平面上显示一辆汽车的3D模型,达到在实际环境移动观察一辆汽车的效果。...

ios 简单模仿随便走的AR功能一

好久没写博客了,把最近的一些研究写下来, 先来张随便走的截图,如下:
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AR--小Demo--伴旅
举报原因:
原因补充:

(最多只允许输入30个字)