配置EasyAR Unity SDK
- 格式:docx
- 大小:306.06 KB
- 文档页数:6
这篇文章介绍如何运行EasyAR unity样例。
*如果你需要使用EasyAR.unitypackage配置EasyAR,请阅读这篇文章。
Pre-Requirements
Unity 4.6或更新版本
(如果要发布Android应用)Android SDK with Build Tools 至少需要版本20.0.0 (如果要发布iOS应用)IPhone或IPad或其它真实Apple设备(EasyAR不支持在虚拟机上运行)
打开样例
首先你需要打开unity样例工程并打开样例中的场景。
Unity 4 如下图所示,
而Unity 5 如下,
使用Unity 5打开工程之后,需要按照Unity的说明升级工程。
升级之后就可以正常使用,配置和Unity 4相同。
输入Key
找到‘EasyAR’object 并在inspector中输入‘Key’。
如果key是非法的,程序初始化将会失败,可能显示黑屏。
按照下面的说明在TextArea 中填入Key。
就是这么简单!现在就可以在包括Windows/Mac/Android/iOS所有平台上运行Unity 样例了。
XCode 配置
*如果你在使用最新的Unity版本,Unity会自动完成这个步骤。
如果你在生成iOS app,在Unity打包生成Xcode工程之后,需要多一步设置。
XCode 6.x:添加“libc++.dylib”到链接选项中
XCode 7.x:添加“libc++.tbd”到链接选项中。
并设置“Enable Bitcode”为“NO”。
easyar 开发步骤EasyAR是一款跨平台的增强现实(AR)开发工具,提供了丰富的AR功能和易于使用的开发接口。
下面将详细介绍EasyAR的开发步骤:第一步:环境搭建在开始EasyAR开发之前,首先需要搭建开发环境。
EasyAR支持多种开发平台,包括Android、iOS、Windows和Unity。
根据自己的需求选择相应的平台,并按照EasyAR官方文档提供的指导进行环境搭建。
第二步:项目创建在环境搭建完成后,可以开始创建EasyAR项目。
在项目中引入EasyAR SDK,并根据需要选择相应的AR功能模块。
EasyAR提供了丰富的AR功能,如图像识别、二维码识别、SLAM定位等。
根据项目需求选择相应的功能模块,并进行相应的配置。
第三步:图像识别在EasyAR中,图像识别是一项重要的功能。
通过图像识别技术,可以实现对现实世界中的图像进行识别和跟踪。
在项目中集成图像识别功能,可以通过EasyAR提供的API实现对图像的加载、识别和跟踪。
在识别到图像后,可以通过在图像上叠加虚拟内容来实现AR效果。
第四步:交互设计在AR应用中,交互是一个重要的环节。
通过在现实世界中叠加虚拟内容,用户可以与虚拟内容进行交互。
在设计交互时,需要考虑用户的体验和操作习惯。
EasyAR提供了丰富的交互功能,如手势识别、触摸事件等,可以根据项目需求选择相应的交互方式。
第五步:AR应用开发在完成图像识别和交互设计后,可以开始进行AR应用的开发。
根据项目需求,可以使用EasyAR提供的API进行虚拟内容的渲染、动画和效果实现。
EasyAR提供了易于使用的开发接口,可以快速实现AR应用的开发。
第六步:测试和调试在开发过程中,需要进行测试和调试。
通过测试和调试,可以发现和解决AR应用中的问题,保证应用的稳定性和性能。
EasyAR提供了丰富的测试和调试工具,如EasyAR Studio和EasyAR Player,可以帮助开发者进行测试和调试工作。
2020.19网络信息工程基于EasyAR 的图像识别技术的研究陈爱群I 宋晓莉$(1.长沙经济技术开发区城建开发有限公司,湖南长沙, 410000 ; 2.湖南工业职业技术学院,湖南长沙, 410000 )摘要:本文借助EasyAR4. 0对单个图像跟踪技术进行了深入的研究。
关键词:EasyAR ;增强现实技术;图像识别技术Research on image recognition tech no l ogy based on easyarChen Aiqun 1, Song Xiaoli 2(1. Changsha Economic and Technological Development Zone Urban Construction Development Co.,Ltd, Changsha Hunan, 410000; 2. Hunan Industry Polytechnic, Changsha Hunan, 410000)Abstract : With the help of easyar4.0, this paper makes an in-depth study on single image tracking technology.Keywords : easyar : augmented reality technology; image recognition technology1 EasyAR4. 0 简介EasyAR Sense 是AR 引擎,提供感知真实世界的能力。
EasyAR Sense Unity Plugin 是EasyAR Sense 的Unity 插件。
EasyAR Sense 4.0提供免费个人版、月付费专业版和定制化功能企业版三种订阅模式。
EasyAR 平台具备AR Cloud 、手势识别、姿态识别、WebAR 以及EasyAR CRS 和EasyAR Sense 等功能。
unity3d在菜单栏,⼀键设置Playersetting及⾃动打包并设置apk的存储位置项⽬进⾏中,领导要求能够进⾏⼀键设置Player settings及⾃动打包并设置apk的位置,所以⾃⼰就上⽹搜索了很多⼤神的⽂章.最后是完成了领导需要的功能,在这⾥记录并分享⼀下(此项指针对安卓apk)1.设置Player settingsprivate static void SetBwPlayerSetting(string bundleIdentifier,string keyStoreName,string keystorePass="123456") { panyName = COMPANYNAME; PlayerSettings.productName = PRODUCTNAME; PlayerSettings.applicationIdentifier = bundleIdentifier;// "com.playbyone.chyz.bw"; PlayerSettings.bundleVersion = BUNDLEVERSION; PlayerSettings.Android.bundleVersionCode = BUNDLEVERSIONCODE; PlayerSettings.Android.keystoreName = keyStoreName; PlayerSettings.keystorePass = keystorePass;} 上述代码能够改变图中红⾊框选的部分2.更改Plugins-->Android下的sdk,因为,不同的渠道使⽤不同的sdk⽂件3.检测Plugins-->Android下的sdk渠道更改完成(也是参考了上述的⽂章,帮助很⼤,并且在参考3.1的基础上完成了⾃⼰的需求)4.检测到⽂件已是最新的之后,开始执⾏打包命令(照例是看了⾬松⼤神的打包,然后发现shell什么的完全不会,然后截选了⾥⾯⾃⼰能够使⽤的代码)1using System;2using System.Collections;3using System.Collections.Generic;4using System.IO;5using UnityEditor;6using UnityEngine;789public class BwUnityScripsCompiling:AssetPostprocessor {1011//private static List<string> BuildApk = new List<string>();12private static bool BuildApk = false;13//private static bool BuildFinish = false;1415public static void StartBuildApk()16 {17 BuildApk = true;18//BuildFinish = false;19return;20 }21///<summary>22///进⾏update绑定23///</summary>24static BwUnityScripsCompiling()25 {26 EditorApplication.update += Update;27 }28///<summary>29///检测导⼊.删除,移动,资源,使⽤ PlayerPrefs.SetInt进⾏存储30///</summary>31///<param name="importedAssets"></param>32///<param name="deletedAssets"></param>33///<param name="movedAssets"></param>34///<param name="movedFromAssetPaths"></param>35public static void OnPostprocessAllAssets(36 String[] importedAssets,37 String[] deletedAssets,38 String[] movedAssets,39 String[] movedFromAssetPaths) {40 List<string> importedKeys = new List<string>() { "Assets/Plugins/Android/StoreSDK" };// 可添加⽂件夹⼦集41for (int i = 0; i < importedAssets.Length; i++) {42for (int j = 0; j < importedKeys.Count; j++) {43if (importedAssets[i].Contains(importedKeys[j])) {44 PlayerPrefs.SetInt("ImportScripts", 1);45return;46 }47 }48 }49 }50///<summary>51///判断unity编译更新⽂件是否完成52///</summary>53private static void Update() {54bool importScripts = Convert.ToBoolean(PlayerPrefs.GetInt("ImportScripts", 1));55if (importScripts && !EditorApplication.isCompiling) {56 OnUnityScripsCompilingCompleted();57 importScripts = false;58 PlayerPrefs.SetInt("ImportScripts", 0);59 EditorApplication.update -= Update;60 }61 }62///<summary>63/// unity⽂件编译完成之后,可执⾏打包动作64///</summary>65private static void OnUnityScripsCompilingCompleted() {66 Debug.Log("Unity Scrips Compiling completed.Start building........");67if (BuildApk == false)68return;69 BuildApk = false;70 BuildGameBag();71 }72///<summary>73///⽅法⼀:使⽤虚拟按键执⾏打包程序执⾏:File-->Buile&Run74///</summary>75///<param name="bVk"></param>76///<param name="bScan"></param>77///<param name="dwFlags"></param>78///<param name="dwExtraInfo"></param>79//[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)]80//private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);81//public static void BuildGameBag()82//{83// const byte VK_CONTROL = 0x11;84// const byte VK_B = 0x42;85// const int KEYEVENTF_DOWN = 0x00;86// const int KEYEVENTF_KEYUP = 0x02;8788// keybd_event(VK_CONTROL, 0, KEYEVENTF_DOWN, 0);89// keybd_event(VK_B, 0, KEYEVENTF_DOWN, 0);90// keybd_event(VK_B, 0, KEYEVENTF_KEYUP, 0);91// keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);92//}939495//在这⾥找出你当前⼯程所有的场景⽂件,假设你只想把部分的scene⽂件打包那么这⾥可以写你的条件判断总之返回⼀个字符串数组。
Unity3DSDK接⼊教程请选中您要保存的内容,粘贴到此⽂本框使⽤简述本⽂档介绍了GVoice游戏语⾳C#接⼝SDK的接⼊⽅法,适⽤于Unity3D引擎开发的游戏。
GVoice游戏语⾳⽬前提供了实时语⾳(Real-Time)、语⾳消息 (Message)两⼤功能。
实时语⾳能够让多名玩家进⾏实时语⾳聊天。
语⾳消息为⽤户提供快速录制并向其他玩家发送⼀段语⾳消息的能⼒。
实时语⾳分为⼩队语⾳、国战语⾳两种模式。
如果⼀个房间内同时聊天的玩家⼩于20⼈,则使⽤⼩队语⾳模式,这时玩家可以⾃由发⾔(该模式常⽤于队友间沟通)。
当⼀个房间内语⾳聊天的玩家⼤于20⼈时,则使⽤国战语⾳模式,在国战语⾳中,允许开发者控制发⾔权限,同时说话⼈数不得超过5⼈(该模式常⽤于团战指挥、主播)。
GVoice 客户端SDK接⼝主要分成三个部分:基本API、以及语⾳消息API。
开通服务⾸先登录注册⽤户并创建应⽤,然后按照如下步骤开通语⾳服务:开通完成后,可以获得对应GameID和GameKey,这对组合值在后⾯的接⼝中需要使⽤系统配置开通服务后可以在管理界⾯上下载SDK安装包,下载地址SDK下载。
下载SDK包解压后,⽬录结构如下: iOS系统配置将压缩包中的 dist\Unity3D\Plugins\iOS\ GCloudVoice.bundle 整个⽂件夹拷贝到⾃⼰的⼯程MyProj\Assets\Plugins\iOS ⽬录下。
链接发布包中静态库dist\Unity3D\Plugins\iOS\libGCloudVoice.a,,在Unity3d导出的Xcode ⼯程中,同时需要链接如下6个系统库: Android系统将压缩包中的 dist\Unity3D\Plugins\Android ⽬录下的 GCloudVoice、assets 两个⽂件夹拷贝到⾃⼰的⼯程MyProj\Assets\Plugins\Android⽬录下。
Unity编译时找不到AndroidSDK的问题Unabletolisttargetpla。
现象在⽤ Unity 编译 Android 平台的应⽤时,遇到 Unable to list target platforms 的问题。
错误提⽰详细错误描述如下:Error:Invalid command androidUnityEditor.BuildPlayerWindow:BuildPlayerAndRun()CommandInvokationFailure: Unable to list target platforms. Please make sure the android sdk path is correct. See the Console for more details.C:\Program Files\Java\jdk1.8.0_91\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="D:/Android/sdk\tools" -Dfile.encoding=UTF8 -jar "D:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -stderr[Error:Invalid command android]stdout[]mand.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir,System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)UnityEditor.Android.AndroidSDKTools.RunCommandSafe (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExitwaitingForProcessToExit, System.String errorMsg)UnityEditor.BuildPlayerWindow:BuildPlayerAndRun()原因原因简单描述Unity 在编译时会调⽤ Android SDK tools 中的 android 命令,⽽在新版本的 Android SDK tools 中,android这个命令已经废弃了,导致Unity ⽆法正常编译。
EasyAR是好用免费的全平台AR(Augmented Reality,增强现实)引擎。
EasyAR支持使用平面目标的AR,支持1000个以上本地目标的流畅加载和识别,支持基于硬解码的视频(包括透明视频和流媒体)的播放,支持二维码识别。
EasyAR支持PC和移动设备等多个平台,EasyAR不会显示水印,也没有识别次数限制。
在拿到EasyAR package或EasyAR样例之后,你需要一个key才能使用。
请确保在使用EasyAR之前阅读以下内容。
免费注册使用EasyAR之前需要使用邮箱在注册*如果邮箱已经在视+官网( )注册,可以直接登录。
KEY的获取为了初始化EasyAR SDK,需要先在网页系统中生成key。
创建应用,输入应用名称和Bundle ID(移动应用必填),点击确定后生成Key如果需要在Android/iOS设备上使用EasyAR,必须填写Bundle ID/Package Name,这个与你所创建的应用的Bundle ID/Package Name必须一致,否则可能初始化失败。
在创建应用之后,创建过程填写的数据仍可修改。
在创建之后,你可以在下图位置获得key。
修改用户名(可选)登录并点击右上角图标,编辑基本信息即可修改系统生成的用户名。
EasyAR网站和论坛使用相同的用户名,可以使用邮箱或用户名来登录EasyAR网站和论坛。
你可以在EasyAR官网点击“社区”进入EasyAR论坛。
注意:用户名只可修改一次。
接下来呢?现在你已经知道了如何使用EasyAR网站来管理你的应用。
你可以在下面这些链接或EasyAR网站上其它文章中获取关于EasyAR更详细的信息。
你可以从这里看到EasyAR最近的更新内容和新特性。
你可以从这里找到EasyAR的平台需求。
你可以从下面这些文章中了解如何编译和运行EasyAR的样例。
编译运行EasyAR的Unity样例编译运行EasyAR的Android样例(非Unity)编译运行EasyAR的iOS样例(非Unity)你可以从下面这些文章中了解如何使用EasyAR的发布包来配置自己的工程。
用户指南*本文档只包含EasyAR的基础使用和配置指南,如需更详细文档,请登录阅读。
1.0⏹修改关于Unity 5支持情况的描述⏹Unity 样例已从SDK包中分离⏹添加构建和运行样例的说明平台支持EasyAR 是跨平台的 AR SDK,支持以下操作系统Windows 7sp1 - 10Mac OS XAndroid 4或更高版本iOS 7或更高版本3D 引擎支持Android/iOS GLES2Unity 3D未来更多(内嵌和外接)Unity兼容性EasyAR支持Unity4和Unity5。
我们在以下版本中测试过:4.6.5, 4.6.9, 5.0.3, 5.1.4, 5.2.2, 5.2.3。
安装需求如果你准备在windows系统中使用EasyAR,需要先从这里下载安装Visual C++ Redistributable for Visual Studio 2015 (相关文件也可以在SDK压缩包中找到)。
*注意:即便系统中装有Visual C++ Redistributable for Visual Studio2005/2008/2010/2012/2013,还是需要安装Visual C++ Redistributable for Visual Studio 2015。
*注意:某些第三方修改过的Windows 8.1系统可能会遇到Visual C++ Redistributable for Visual Studio 2015无法安装的情况。
如果你的系统是Windows 8.1并且遇到这种问题,可以尝试在网上搜索解决方案,如果无法解决,建议安装微软官方系统(无修改,非ghost)并更新到最新。
使用EasyAR之前需要使用邮箱在注册。
*如果邮箱已经在视+官网()注册,可以直接登录.KEY为了初始化 EasyAR SDK,需要先在网页系统中生成key。
创建应用,输入应用名称和Bundle ID(移动应用必填),点击确定后生成 Key如果需要在Android/iOS设备上使用EasyAR,必须填写Bundle ID/Package Name,这个与你所创建的应用的Bundle ID/Package Name必须一致,否则可能初始化失败。
这篇文章介绍如何使用EasyAR.unitypackage配置EasyAR。
*如果你需要运行EasyAR unity样例,请阅读这篇文章。
安装需求
Unity 4.6或更新版本
(如果要发布Android应用)Android SDK with Build Tools 至少需要版本20.0.0 (如果要发布iOS应用)IPhone或IPad或其它真实Apple设备(EasyAR不支持在虚拟机上运行)
导入Package
首先,你需要下载EasyAR压缩包,找到EasyAR.unitypackage,打开并导入到Unity中。
初始化EasyAR
为了让EasyAR正常工作,你需要将EasyAR prefab或其它prefabs添加到场景。
拖拽EasyAR Prefab到场景中。
你可以在登录EasyAR网站后创建key。
你可以在这里找到如何操作。
然后使用这个key 来初始化EasyAR。
可以添加如下两行代码到你的初始化代码中。
ARBuilder.Instance.InitializeEasyAR(key);
ARBuilder.Instance.EasyBuild();
如果使用默认配置(CameraDeviceBaseBehaviour.CaptureWhenStart是启用的)EasyAR 将在MonoBehaviour.Start调用的时候开始运行。
所以最好将上面两行代码放到Awake 里面。
如果你想看到和样例一样的输入key的框,可以创建一个脚本并添加以下代码,并把这个脚本拖拽到EasyAR prefab上面。
using UnityEngine;
namespace EasyAR
{
public class ARIsEasyBehaviour : MonoBehaviour
{
[TextArea(1, 10)]
public string Key;
private void Awake()
{
ARBuilder.Instance.InitializeEasyAR(Key);
ARBuilder.Instance.EasyBuild();
}
}
}
添加ImageTarget
ImageTarget有许多用法,可以参考HelloARTarget样例。
如果需要在场景中静态配置ImageTarget,需要拖拽一个ImageTarget Prefab到场景中。
如何配置可以参考ImageTarget Prefab和ImageTargetBaseBehaviour。
Target事件
你可以在ImageTargetBehaviour中处理target相关事件
public class EasyImageTargetBehaviour : ImageTargetBehaviour, ITargetEventHandler {
void ITargetEventHandler.OnTargetFound(Target target)
{
Debug.Log("Found: " + target.Id);
}
void ITargetEventHandler.OnTargetLost(Target target)
{
Debug.Log("Lost: " + target.Id);
}
void ITargetEventHandler.OnTargetLoad(Target target, bool status)
{
Debug.Log("Load target (" + status + "): " + target.Id + " -> " + ); }
void ITargetEventHandler.OnTargetUnload(Target target, bool status)
{
Debug.Log("Unload target (" + status + "): " + target.Id + " -> " + ); }
}
或是在实现了ITargetEventHandler接口的全局target管理器中处理target事件
public class EasyARTargetMananger : MonoBehaviour, ITargetEventHandler
{
void ITargetEventHandler.OnTargetFound(Target target)
{
Debug.Log("Found: " + target.Id);
}
void ITargetEventHandler.OnTargetLost(Target target)
{
Debug.Log("Lost: " + target.Id);
}
void ITargetEventHandler.OnTargetLoad(Target target, bool status)
{
Debug.Log("Load target (" + status + "): " + target.Id + " -> " + ); }
void ITargetEventHandler.OnTargetUnload(Target target, bool status)
{
Debug.Log("Unload target (" + status + "): " + target.Id + " -> " + ); }
}
你可以在这些事件中控制ImageTarget节点下物体的显示/隐藏。
Bundle ID(Android/iOS)
你需要在生成Android/iOS应用的时候设置bundle ID。
bundle ID 应该与easyar网页上生成的ID 相同。
否则可能造成SDK初始化失败并黑屏。
如果是在Mac or Windows 上,这个ID就不需要了。
Graphics API(Android/iOS)
在导出Android和iOS应用的时候,需要设置graphics API 为OpenGL ES 2.0。
这个设置在不同的Unity版本中有所不同。
Unity 4.x 中设置如下
Unity 5.x 设置如下
XCode 配置(iOS)
*如果你在使用最新的Unity版本,Unity会自动完成这个步骤。
如果你在生成iOS app,在Unity打包生成Xcode工程之后,需要多一步设置。
XCode 6.x:添加“libc++.dylib”到链接选项中
XCode 7.x:添加“libc++.tbd”到链接选项中。
并设置“Enable Bitcode”为“NO”。