精华内容
下载资源
问答
  • 1 /************************************************* 2 * 项目名称:AR截图 ... 5 * 脚本功能:截取当前手机界面图片到系统相册截图中 6 * ***********************************************/...
     1 /*************************************************
     2  * 项目名称:AR截图
     3  * 脚本创建人:魔卡
     4  * 脚本创建时间:2018.10.02
     5  * 脚本功能:截取当前手机界面图片到系统相册截图中
     6  * ***********************************************/
     7 using System.Collections;
     8 using System.Collections.Generic;
     9 using System.IO;
    10 using UnityEngine;
    11 using UnityEngine.UI;
    12 
    13 public class ScreenShot : MonoBehaviour
    14 {
    15     private Button m_screenShotBtn;//截屏按钮
    16 
    17     void Awake()
    18     {
    19         //初始化
    20         m_screenShotBtn = transform.Find("ScreenShotBtn").GetComponent<Button>();
    21         m_screenShotBtn.onClick.AddListener(OnScreenShotBtnClick);
    22     }
    23 
    24     /// <summary>
    25     /// 自定义截屏功能,截屏按钮点击触发
    26     /// </summary>
    27     public void OnScreenShotBtnClick()
    28     {
    29 
    30 
    31         //使用当前时间作为图片名称
    32         System.DateTime tNowTime = System.DateTime.Now;
    33         string tTime = tNowTime.ToString();
    34         //去除两边空格
    35         tTime = tTime.Trim();
    36         //将“/”用“-”代替
    37         tTime = tTime.Replace("/", "-");
    38 
    39         //存储为png格式的
    40         string tFileName = "ARScreenShot" + tTime + ".png";
    41 
    42         //判断当前运行环境
    43         if (Application.platform == RuntimePlatform.Android)
    44         {
    45             //生成一个Texture2D (参数为:宽,高,纹理,是否使用映射)
    46             Texture2D tTexture2D = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
    47             //读取Texture2D到本身上
    48             tTexture2D.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
    49             //图片应用一下
    50             tTexture2D.Apply();
    51 
    52             //将图片转换为二进制进行写入
    53             byte[] tBytes = tTexture2D.EncodeToPNG();
    54 
    55             //写入地址
    56             //此处注意,写入的地址是当前手机截屏的默认地址,其他地址也可以存储但是在图册中不会显示出来
    57             string tDestination = "/sdcard/DCIM/Screenshots";
    58 
    59             //判断当前文件夹是否存在,不存在则进行创建
    60             if (!Directory.Exists(tDestination))
    61             {
    62                 Directory.CreateDirectory(tDestination);
    63             }
    64 
    65             //截图存储路径名
    66             string tSavePath = tDestination + "/" + tFileName;
    67 
    68             File.WriteAllBytes(tSavePath, tBytes);
    69         }
    70     }
    71 }

    效果图如下:

     

    转载于:https://www.cnblogs.com/mrmocha/p/9738879.html

    展开全文
  • 它不需要深度感应器和多余的摄像头就可以让更多Android手机具有AR功能。  ARCore将很快应用到谷歌Pixel、Galaxy S8和其他几款手机中。而且,从一开始,它就支持Java、Unity和Unreal编程语言。  简而言之,它看...

      据外媒报道,本周早些时候,谷歌(微博)宣布了基于软件的AR解决方案ARCore。它不需要深度感应器和多余的摄像头就可以让更多Android手机具有AR功能。

      ARCore将很快应用到谷歌Pixel、Galaxy S8和其他几款手机中。而且,从一开始,它就支持Java、Unity和Unreal编程语言。

      简而言之,它看起来就像是谷歌对苹果ARKit的回应。

      但是,谷歌增强现实和虚拟现实副总裁克雷-贝沃((Clay Bavor)却不这么认为。相反,他表示,谷歌早在2014年就推出了首个开发工具包Tango,而且一直在逐步迈向他们憧憬的未来:将AR体验提供给全世界无数人。具体而言,谷歌希望在未来几个月内让1亿部Android手机具有AR功能。

      “我喜欢称它为拟真计算,而不喜欢用一些行业术语,如VR、AR和MR等。我们这里所谈的就是将电脑产生的图像无缝地加入到人们的真实体验中。”贝沃说,“我们的目标就是让AR成为Android上的主流功能。我们在几年前就认为,基于智能手机的AR将会变成下一个热点。首款Tango开发工具包是在2014年推出的。我们超越了硬件的局限性,不需要深度感应器或额外跟踪摄像头,我们向世界证明了利用消费者级别的感应器就能够实现强大的AR体验。”

      这并不是夸张的说法。现在,在一般的谷歌Pixel和三星Galaxy S8手机上,你可以看到各种AR效果:机器人在桌面上行走并向你招手,树木从几厘米成长到几米高,甚至还有巨大的狮子张牙舞爪地望着你,你感觉你好像身临其境。强大的AR体验感觉就像魔幻一般。

      “但是,要实现这一切,我们还有很多工作要做。”贝沃承认,“我们知道,它必须实现规模化,因此我们一直在研发基于软件的解决方案如ARCore,省去了额外的感应器。我们感觉这项技术已经准备到位。我们已想出了几种典型的AR应用情景。因此,我们很高兴推出ARCore。”

      其中一个应用情景就是网购。在家庭用品购物网站Wayfair上,只要使用一个插件,你就可以看到实时测量一个房间,并在其中摆放一把椅子的情形。这样的体验可以应用到其他购物活动和室内设计中。

      贝沃给出的一个应用情景是通过使用VPS(虚拟定位服务)来实现的。“我们一直在尝试各种工具、服务和应用,以期让ARCore成为开发者的强大工具。”贝沃说,“其中一个例子就是VPS。ARCore和VPS是天然的搭档。事实上,我们打造VPS就是为了用ARCore在Android手机上推广AR功能。”

      想一想吧,在AR中,你可以回到某个建筑物,并看到它的招牌,随着岁月的流逝,这个建筑物已经老化。或者你的朋友向你推荐某个餐馆,你想通过AR看看它的环境。这就是我们憧憬的未来。我们离这个未来越来越近了。我们现在尚未达到那一步,但这是我们这辈子中可以实现的目标。

      “另一个例子是我们希望让开发者更容易进行3D建模,尤其是利用Java打造传统智能手机应用的开发者。”贝沃说,“我们知道,很多希望开发3D模型和AR的人并不懂Maya和Unity等编程语言。因此,我们打造了应用程序Blocks,希望让那些从未做过3D模型的人更方便地打造3D模型。我们甚至可以让人们方便地将3D模型从Blocks导入到他们正在开发的ARCore应用程序中。”

      事实上,上面提到的桌面上的机器人和树木就是直接在Blocks里面创立,然后导入到ARCore中的。

      “我们还在尝试开发一种浏览器,可以将所有ARCore功能整合到网络浏览器中。”贝沃解释说,“你只要会一点点Java,一点点HTML技术,你就可以打造AR体验。ARCore可嵌入浏览器中。谷歌就是从网络上诞生的,我们热爱网络,我们希望让更多开发者来打造AR体验。值得指出的是,这种浏览器有一个版本支持Android手机上的ARCore,还有一个版本支持iOS手机上的ARKit。因此,开发者可以打造跨平台的AR体验。”

    展开全文
  • 手机AR扫图使用文档

    2020-07-24 16:13:12
    手机AR扫图使用文档 我们的 app 需要一台设备和app扫图所需要的特定的图片。 1、打开 App,进入界面,会看到一个轮播图,这是介绍此app所能识别到的特定图片。 2、点击轮播的图片或者是下方的扫图按钮,都可以进入到...

    手机AR扫图使用文档

    我们的 app 需要一台设备和app扫图所需要的特定的图片。
    1、打开 App,点击允许访问摄像头,用于AR扫描功能,进入界面,会看到一个轮播图,这是介绍此app所能识别到的特定图片。
    2、点击轮播的图片或者是下方的扫图按钮,都可以进入到接下来的扫图功能界面。
    3、进入到扫图功能界面后会出现一个广告界面,这个广告界面会停留3秒自动消失,或者您可以点击右下角的跳过,跳过广告页。
    4、然后就进入到我们的扫图界面,app会调用摄像机,然后我们就可以将摄像机对准我们特定的识别图,识别成功后会出现相对应的AR模型。
    5、目前app的特定识别图如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    另外:此App完全免费
    演示视频链接:https://v.youku.com/v_show/id_XNDc2NTcxNzg0NA==.html

    展开全文
  • 【实例简介】手机相机识别实现ar测距,至少三年以上开发经验才能跑通 .../// AR尺子AR功能管理 public class ARRulerFoundtion: ARObjectSceneBase { /// 判断是否识别到平面 private bool m_IsPla

    【实例简介】手机相机识别实现ar测距,至少三年以上开发经验才能跑通

    【实例截图】

    在这里插入图片描述
    文件:590m.com/f/25127180-490561034-8afed0(访问密码:551685)

    【核心代码】

    using UnityEngine;
    using UnityEngine.XR.ARFoundation;

    /// AR尺子AR功能管理
    public class ARRulerFoundtion: ARObjectSceneBase
    {
    /// 判断是否识别到平面
    private bool m_IsPlaneChanged = false;

    /// <summary>瞄准器模型</summary>
    private GameObject m_TakeAim;
    /// <summary>屏幕中心位置</summary>
    private Vector2 m_ScreenCenter;
    
    
    /// <summary>Awake</summary>
    public override void OnAwake()
    {
        base.OnAwake();
    
        m_ScreenCenter = new Vector2(Screen.width / 2, Screen.height / 2);
        m_TakeAim = Instantiate(Resources.Load("Prefabs/TakeAim") as GameObject, transform);
        m_TakeAim.name = "TakeAim";
        m_TakeAim.SetActive(false);
    }
    
    /// <summary>Update</summary>
    public override void OnUpdate()
    {
        base.OnUpdate();
        if (isSupportAR) Raycast(m_ScreenCenter, UpdateTakeAimPosition);
    }
    
    /// <summary>AR初始化完成</summary>
    public override void OnInitARFinish()
    {
        base.OnInitARFinish();
        Debug.Log(GetType() "/InitARFinish()/初始化AR完成!");
    
        ARRulerSceneManager.Instance.uIManager.FindPanelPanelSetActive(true);
    
        planeEffectManager.SetAllPlanesActive(false);
    }
    
    /// <summary>平面识别发送改变</summary>
    public override void OnPlanesChanged(ARPlanesChangedEventArgs obj)
    {
        base.OnPlanesChanged(obj);
        if (m_IsPlaneChanged) return;
        m_IsPlaneChanged = true;
    
        ARRulerSceneManager.Instance.uIManager.ButtonsPanelSetActive(true);
        ARRulerSceneManager.Instance.uIManager.FindPanelPanelSetActive(false);
    }
    
    /// <summary>更新瞄准器的位置信息</summary>
    private void UpdateTakeAimPosition(bool hit, ARRaycastHit aRRaycastHit)
    {
        m_TakeAim.SetActive(hit);
    
        ARRulerSceneManager.Instance.uIManager.AddButtonInteractable(hit);
        ARRulerSceneManager.Instance.uIManager.TakePhotosButtonInteractable(hit);
    
        if (hit)
        {
            m_TakeAim.transform.position = aRRaycastHit.pose.position;
            m_TakeAim.transform.rotation = aRRaycastHit.pose.rotation;
    
            Vector3 size = Vector3.one;
            float value = 1;
            if (aRRaycastHit.distance < 1) value = 3.3f;
            else if (aRRaycastHit.distance < 2) value = 4;
            else value = aRRaycastHit.distance * 2;
            m_TakeAim.transform.localScale = size * value;
        }
    }
    

    以下内容无关:

    -------------------------------------------分割线---------------------------------------------

    前面我们对IS25WP系列Flash的Dummy Cycle设置很了解了,那么IS25LP系列Flash是不是一样的设计呢?我们查看IS25LP064A数据手册来确认一下。

    我们找到如下Read Dummy Cycle与最大工作频率的对应表,从表里可以看到当IS25LP工作在Fast Read Quad I/O模式时,默认的6个Dummy Cycle适用的最大工作频率是104MHz(这点上与IS25WP系列是一致的),不过与IS25WP系列不同的是IS25LP系列Dummy Cycle仅有四档(2bit设置,对应4/6/8/10四种值),而IS25WP系列Dummy Cycle有十五档(4bit设置,对应1-15取值),所以Dummy Cycle设计在IS25LP上其实是精简版。

    二、如何更改Flash里的Dummy Cycle?
      意识到IS25LP与IS25WP在Dummy Cycle设计上的差异,改起来就容易了。我们继续看Flash数据手册,IS25LP064A内部有个8bit的Read Register,其bit4-bit3是Dummy Cycles设置(精简设计一),寄存器类型里标明仅易失性一种属性(精简设计二)。

    在IS25LP064A的指令集表里,可以看到专门写Read Register的指令,即SRP指令,注意指令值就是唯一的0xC0(精简设计三)。

    分析到这里,额外的小工程修改Dummy Cycle是不可能了,只能老老实实在i.MXRT每次启动时直接借助FDCB启动头里的设置用SRP指令更改Flash的Dummy Cycle,即如下所示:

    // 设置Dummy Cycle数
    #define FLASH_DUMMY_CYCLES 8
    #define FLASH_DUMMY_VALUE 0x2
    // 写Read Register时序在LUT中的index(可自定义位置,但不要占BootROM预设的几个时序位置)
    #define CMD_LUT_SEQ_IDX_SET_READ_PARAM 7
    // BootROM中预设的LUT命令时序的index
    #define CMD_LUT_SEQ_IDX_READ 0
    #define CMD_LUT_SEQ_IDX_READSTATUS 1
    #define CMD_LUT_SEQ_IDX_WRITEENABLE 3

    const flexspi_nor_config_t qspiflash_config = {
    .memConfig =
    {
    .tag = FLEXSPI_CFG_BLK_TAG,
    .version = FLEXSPI_CFG_BLK_VERSION,
    .readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
    .csHoldTime = 3u,
    .csSetupTime = 3u,
    // Enable Safe configuration
    .controllerMiscOption = 0x10,
    .deviceType = kFlexSpiDeviceType_SerialNOR,
    .sflashPadType = kSerialFlash_4Pads,
    .serialClkFreq = kFlexSpiSerialClk_133MHz,
    .sflashA1Size = 8u * 1024u * 1024u,
    // 使能Flash寄存器配置操作
    .configCmdEnable = 1u,
    .configModeType[0] = kDeviceConfigCmdType_Generic,
    // 指示Flash寄存器配置时序在LUT中index
    .configCmdSeqs[0] =
    {
    .seqNum = 1,
    .seqId = CMD_LUT_SEQ_IDX_SET_READ_PARAM,
    .reserved = 0,
    },
    // 设定Flash寄存器配置值(这里就是写入Read Register的值)
    // Note1: 这里写入Read Register的值在IS25WP系列和IS25LP系列有区别
    .configCmdArgs[0] = FLASH_DUMMY_VALUE << 3,
    .lookupTable =
    {
    // Fast Read Quad I/O
    [4CMD_LUT_SEQ_IDX_READ] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
    [4
    CMD_LUT_SEQ_IDX_READ + 1] = FLEXSPI_LUT_SEQ(MODE8_SDR, FLEXSPI_4PAD, 0x00, DUMMY_SDR, FLEXSPI_4PAD, FLASH_DUMMY_CYCLES-2),
    [4*CMD_LUT_SEQ_IDX_READ + 2] = FLEXSPI_LUT_SEQ(READ_SDR, FLEXSPI_4PAD, 0x04, STOP, FLEXSPI_1PAD, 0x00),

                    // READ STATUS REGISTER
                    [4*CMD_LUT_SEQ_IDX_READSTATUS]         = FLEXSPI_LUT_SEQ(CMD_SDR,   FLEXSPI_1PAD, 0x05, READ_SDR,  FLEXSPI_1PAD, 0x01),
                    [4*CMD_LUT_SEQ_IDX_READSTATUS + 1]     = FLEXSPI_LUT_SEQ(STOP,      FLEXSPI_1PAD, 0x00, 0, 0, 0),
                   
                    // WRTIE ENABLE
                    [4*CMD_LUT_SEQ_IDX_WRITEENABLE]        = FLEXSPI_LUT_SEQ(CMD_SDR,   FLEXSPI_1PAD, 0x06, STOP,      FLEXSPI_1PAD, 0x00),
    
                    // Flash寄存器配置时序(这个时序需要上面READ STATUS, WRITE ENABLE的配合)
                    // Note2: 这里写入的指令在IS25WP系列和IS25LP系列有区别
                    [4*CMD_LUT_SEQ_IDX_SET_READ_PARAM]     = FLEXSPI_LUT_SEQ(CMD_SDR,   FLEXSPI_1PAD, 0xC0, WRITE_SDR, FLEXSPI_1PAD, 0x01),
                    [4*CMD_LUT_SEQ_IDX_SET_READ_PARAM + 1] = FLEXSPI_LUT_SEQ(STOP,      FLEXSPI_1PAD, 0x00, 0, 0, 0),
                },
        },
    .pageSize           = 256u,
    .sectorSize         = 4u * 1024u,
    .blockSize          = 64u * 1024u,
    .isUniformBlockSize = false,
    

    };

    展开全文
  • 黑科技|你们要的手机AR导航来了!

    千次阅读 2020-08-24 17:56:45
    高德地图最新发布了v10.60新版本,上线了手机端的AR驾车导航功能,可为用户带来更加直观的路线、方向和车道级实景导航体验。手机AR驾车导航很多人在驾车时,即使开着地图导航,可能也会在...
  • ARNavigation 利用OpenGL ES、手机传感器、相机和调用百度语音包服务,实现AR+语音播报导航功能(导航功能为模拟,Android) 关键步骤说明请见我的博客:
  • Google Maps有时会有个令人困扰的问题,使用者虽然有地图可看,但经常搞不清...去年Google I/O曾经展示过视觉定位功能,现在Google宣布正在测试名为全球定位(Global Localization)的AR定位功能,结合手机相机、Go...
  • 关键代码如下: using System; using System.Collections; using System.Collections.Generic; using System.IO;...using UnityEngine;...public class ScreenShot : MonoBehaviour { ... public Cam...
  • 一. 图片识别触发与图片移出视角触发 ImageTarget身上“Default Trackable Event Handler”脚本中 “OnTrackingFound”方法:图片识别... 对应的手机操作手势 1. Input.touchCount==1 //操作的手指数量 2. Inp...
  • 切换AR / USD(或本地货币)显示 深色主题支持 检测原生主题 根据主题redux商店设置主题 设置状态栏颜色 推送通知 电容器TODOS: 添加IOS对电容器暗模式的支持( ) 添加IOS对电容器-biometric-auth的支持( )(已...
  • #游戏unity#AR手机游戏的平台构建在上篇博客中,博主向大家简单又通俗易懂的介绍了ARAR手机游戏领域的应用,而这篇文章,博主将教大家如何构建一个AR手机游戏平台。要知道,只有构建平台后,我们才可以开始进行...
  • 1.创建一个Button按钮右键 --> UI--> Button 2.点击Button 里On Click的 小圆圈 搜索ARSession 这是EasyAR 写好的功能 如果想学习更多案例 可以在 Samples --> Scenes ...
  • 不鸣则已,一鸣惊人的惠普,将在其全新智能手机Elite x3上加入AR功能。 在手机市场遭遇过滑铁卢的惠普,又准备借助其最新推出的Elite x3重新杀回去,他们这次放了个大招,宣称要在Elite x3中加入AR...
  • 当前,AR 应用依旧以搭载相对简陋的手机、Pad 等传统移动设备为主,面对更高端的需求,往往无法充分发挥优势,满足更高要求的应用。而真正意义上的 AR 移动设备则有着难以企及的高昂成本和差强人意的使用体验,这...
  •  这个demo是我当初为了做AR导航做的一个小项目,是自己模拟的一段导航路径,主要是实现打开摄像头将路径进行渲染,通过方向传感器,在手机摆动时而保持导航路径绝对方向不变,在本demo中并没有实际的路网。...
  • 在网上查了很多开启闪光灯方法,很多都是以前EasyAR版本的。 现在使用EasyAR 3.0 很多API方法变了 我试了 很多网上的方法 导到手机上...接下来是我 基于Easy3.0实现 开启和关闭闪光灯功能 1.在 EasyAR文件夹里 ...
  • Unity和Easy AR制作一个AR的APP

    千次阅读 2019-09-27 15:45:47
    功能就是:用手机扫描一个图片,然后会出现一个AR物体,当然这物体是你自己设置的模型。 首先说如何制作一个AR的APP需要准备什么,easy ar这个插件,我用的版本是2.2.0的;unity我用的是unity2018.2.3的; 在...
  • 8 月 24 日,在OPPO R17/R17 Pro发布会上,OPPO与高德地图宣布达成深度合作,将...据了解,高德与OPPO推出的AR步行导航将地图、手机摄像头与AR技术深度结合,由虚拟模型在真实世界中为用户指引方向,何处直行何处...
  • 新款iPhone被称为了第一款真正为AR打造的智能手机,A11 芯片让 iPhone 的 AR 功能可以更好的实现,GPU 能渲染更真实的图像,摄像头、陀螺仪专门为 AR 而校准,看来苹果对AR真是下了血本了。那么AR是啥?用我们手里的...
  • 继天猫AR-GO之后,阿里又放AR大招,手机淘宝AR-Tao开始内测,那么手机淘宝AR-Tao具体都有哪些功能上线呢?十二居带大家逐步使用体验一下。 一:手机淘宝AR-Tao是什么? 相信关注十二居的小伙伴都早就已经...
  • 其实编辑功能主要是将 从easyAR服务器下来下来的,之前上传的 点云信息,保存在本地,然后再在Unity中加载本地的点云信息,从而在场景中进行编辑。 创建EditeMapController.cs 本代码主要做的就是从服务器下载点云...
  • 本文介绍一个运行于 tango 手机的应用 demo,功能是测量人体高度。 效果预览 原理概述 该应用主要使用了 tango 的深度感知技术。 如上图,通过深度感知技术,我们可以获取设备周围物体的点云坐标集合。...
  • 扎克伯格描述说,“想下棋了,打个响指,就会出现一个棋盘,我们就可以一起来玩。...将来,你也可能甩掉如今24小时随身的智能手机,只需通过AR屏幕连接到计算机就可以使用手机所有功能,只要你喜欢将电脑“戴”在...
  • 近日,耐克宣布将为其自家的iOS版应用SNKRS增添AR功能,并使用该功能独家发布新款运动鞋。 据悉,运动鞋爱好者想要收藏到耐克的这款限量版运动鞋,需要的不仅是Money,还需要有足够的运气。首先,你需要在...
  • ar-cutpaste Demo展示 搭建前须知: 1.此功能基于python3.7 + 2.此功能分为三个模块 (1)移动设备端(TypeScript + node.js) (1)服务器端(python) (1)图层处理服务器端(python) 3.此功能需要提前掌握...
  • 在昨天的诺基亚世界大会有一个值得关注的消息...就像Layar等AR浏览器一样,Live View的基本功能是通过你手机的摄像头取景获取你附近的地点的信息:地标、ATM机,餐厅,商店等等。而在更新版本之后,增加了以下的新功...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 228
精华内容 91
关键字:

手机ar功能