Loading...

2017.

欢迎使用NetSock

NetSock致力于通过持续性的新技术研发,让AR开发者有更大的想象和创造空间,产生出更多高质量的AR内容。
如果您初次了解NetSock,可以从这里开始学习如何使用我们的产品。

NetSock SDK使用文档_v0.1.0

简介

关于NetSock

NetSock是一款集成于Unity 3D实现增强现实的SDK,面向AR开发者免费开放使用,帮助AR开发者方便快捷的使用Unity 3D开发AR应用。

开发环境

  • Windows 7 或更高版本
  • OS X 10.10 或更高版本

 平台支持

- Windows 支持 - Mac OS 支持 - iOS 支持 - Android 支持

 Unity版本支持

支持Unity 3D版本为:5.2.x - 5.5.x(32位或者64位)

第三方软件/插件

  • QuickTime:在PC端进行视频播放调试时,必须安装有QuickTime播放器

  • Android SDK + JDK:导出应用到Android设备上进行测试,需要安装Android SDK 和 JDK

SDK下载

百度网盘:http://pan.baidu.com/s/1jGCkPhG#list/path=%2F

SDK导入

1、打开Unity3d ,新建一个工程。

2、工程新建完成后,在顶部菜单栏中,选中【Assets】->【Import Package】->【Custom Package...】。

Import_1

3、弹出窗口,导入NetSock SDK(.unitypackage文件)。

  • NetSock_v0.1.0版已将32位和64位合二为一;
  • 存放unitypackage的路径请不要有中文,否则会导入不成功。

Import_2

升级指南

该文档仅适用于0.1版本前的工程升级到0.1版本。

模块更新

  • Camera

10.1版后只需一个Camera(ARCamera) ​

  • 云视频播放

0.1版本前云视频播放需要用Assetbundle生成的VideoPrefab(在StreamingAssets下),0.1版本后不再需要该资源。

API更新

  • NetSock Main修改为NetSock ARBehaviour;

  • Marker修改为ImageTargetBehaviour (为了兼容旧版本生成的云识别Assetbundle资源,Marker脚本暂时保留);

- VideoBehaviour修改为VideoPlayBehaviour;

- FinderInterface接口名称修改为TrackingBase;

  • MyUtils修改为NetSock ARUtils;

  • 云识别资源创建AssetBundles的菜单路径改为 NetSock AR/Create AssetBundles

2可以指定输出平台

开发指南

图片识别

用带特征点的图片(图片要求参见常见问题)作为marker,进行精准识别以及跟踪。

1、删除新建场景自带的“Main Camera”,添加NetSock AR/Prefab中的ARCamera 预制件,并设置NetSock ARBehaviour组件属性MarkerType为Image,同时跟踪Marker数量设置为1(单目标跟踪),大于1的值为多目标识别同时识别个数; 5

2、将预制件“ImageTarget”,拖入场景;

6

3、设置Marker数据:ImageTarget的ImageTargetBehaviour组件属性ImageFilePath值,填写为Marker图片的文件名(Marker文件必须放在StreamingAssets下),ImageTarget下放置Marker对应的模型;

7

4、在Scene编辑器里可以调整Marker和模型的位置和大小;

8

5、运行。

手绘识别

通过手绘的图画作为marker,进行模糊识别以及跟踪。

该模块优化中,当前版本暂不提供。

NetSock CLOUD(云识别)

用带特征点的图片(图片要求参见常见问题)作为marker,通过云识别后进行本地跟踪。

一、云资源生成:适用于显示3D模型,云视频跳过此步骤。

1、用图片识别的方式调整好3D模型和Marker之间的位置和大小,成功实现本地识别后,将ImageTarget设置为Prefab;

9

2、选中该Prefab,执行菜单命令NetSock AR -> AssetsBundleBuilder;

10

3、弹出窗口选择支持的平台后,点击“BuildAssetBundles”按钮,将在StreamingAssets目录下生成AssetsBundle资源。

注意:选择支持的平台时,请确保Unity3d已经支持选中的平台打包编译(Build Settings面板中Switch Platform按钮切换到目标平台有效)。如果该平台模块没有下载安装,则需要先下载安装该平台模块,再生成AssetsBundle资源。

二、云数据管理:在云平台开发者管理模块中注册开发者帐号,生成云识别数据。

1、打开云平台网址(http://cloud.NetSock AR.net:8080/develop/html/login.jsp),注册账号并登录;

2、进入云平台,先创建数据库,每个账号只允许创建1个,创建成功后,如下所示:

19

3、点击云数据库名称链接后,可以管理开发者自己所有云识别资源,点击“上传图片”按钮可以新添加云识别数据;

11

第1个文本框为资源名称;

第2个文本框有两个意义:

​ 如果为识别图对应的为云视频,填写格式为:云视频URL地址|视频宽度|视频高度

​ 例如:http://cloudar.ionhammer.cn:8080/develop/starwars.mp4|640|480

​ 如果识别图对应的是3D模型,填写的值为模型的扩展自定义数据;

第3个文本框为Marker图片上传,支持JPG、PNG格式;

第4个文本框为assetbundle资源,仅在3D模型情况下才需要按运行平台不同分别上传,如果为云视频,跳过直接保存。

三、Unity中开发

​ 仅需要ARCamera,然后设置NetSock ARBehaviour属性,勾选Use Cloud,填写开发者网站对应的账号;

12

注意:云识别视频仅运行在Android和iOS平台,如果在Unity编辑器中运行平台选择的是Web Player(Unity3d默认平台),需要通过菜单“Edit -> Project settings -> Editor” 设置跨域安全策略。如下所示:

18

AR视频播放

识别后播放本地或者网络视频。

1、参见图片识别,加入ARCamera;

2、将预制件“VideoPlay”,拖入场景;

13

3、设置Marker数据:ImageTarget的ImageTargetBehaviour组件属性ImageFilePath值,填写为Marker图片的文件名(Marker文件必须放在StreamingAssets下,与图片识别一致);

4、设置播放视频资源:14

Path:视频资源路径。

​ 如果为本地资源(视频文件必须放在StreamingAssets下),填写视频文件名,比如(xxx.mp4);

​ 如果为网络资源,填写完整的URL地址,比如(http://www.xxx.com/videos/xx.mp4);

Loop:是否需要循环播放;

Auto Scale:是否自动缩放(勾选后,视频会自适应marker图片大小;不勾选,可自由调整尺寸);

Scale Mode:缩放方式选择。目前支持FILL、FIT、FITWIDTH、FITHEIGHT,根据自己的需要选择即可。 ​ FILL:填充,视频会被调整到与Marker同样的大小,如果视频与Marker的高宽比不一致,视频会被拉伸变形。     FIT:适配,按比例调整视频,视频会被调整到最大可适配到Marker里面的大小,视频高宽比保持不变。     FITWIDTH:适配宽度,按比例调整视频大小,宽度会被设成和Marker的宽度相同。     FITHEIGHT:适配高度,按比例调整视频大小,高度会被设成和Marker的高度相同。   注:视频调整后,不足之处会用黑边填充。

如果在PC上需要测试播放视频,首先必须安装QuickTime播放器。其次需要将视频文件import到非StreamingAssets文件夹下,Unity自动转为MovieTexture,最后将MovieTexture文件拖入到M Video Texture下;

17

视频支持格式为:PC端:mov、mpg、mpeg、mp4、avi ​ Android:3gp、mp4 ​ iOS:3gp、mp4、avi

动态加载

运行时通过代码添加删除Marker和模型数据。

开发者通过调用接口在运行时实现动态加载识别目标进行识别跟踪的功能,Marker图片资源可以是本地资源,也可以是网络资源,3D模型资源可以是本地资源,也可以是网络assetbundle资源。

添加接口:NetSock AR.GetInstance().addTargets();

删除接口:NetSock AR.GetInstance().removeTarget();

接口实现代码参见DynamicLoadTest.cs

注:运行SDK自带的“动态加载”例子时,点击右上角的“添加目标“按钮后将识别数据动态加载后才可以识别,点击“清空目标”按钮将清除已经加载的动态资源。

NetSock SLAM(Markerless)

无Marker情况下跟踪目标。

1、新建unity工程,将NetSock AR SDK导入到新建工程中。

Markerless_1

2、新建一个Scene,删除Scene自带的MainCamera。如下图:

Markerless_2

3、选中Assets/NetSock AR/Prefab文件夹,将AR Camera预制件拖入到场景中,如下:

Markerless_3

4、展开AR Camera预制件,点击AR Camera查看其Inspector面板, NetSock AR Behaviour脚本组件中 MarkerType 选择Markerless ,同时填写帐号信息(和云识别帐号一致)。如图:

Markerless_10

5、在场景中创建一个空的GameObject, 如图:

Markerless_7

6、再创建一个Cube 将其拖入GameObject节点下,如图:

![img](file:///D:/notice/trunk/images/Markerless_7.png?lastModify=1484729836)Markerless_8

7、将GameObject 拖入到NetSock AR Behaviour脚本组件的MarkerlessNode变量中,如图:

Markerless_9

8、运行。

注:运行SDK自带的“Markerless”例子时,点击“Start”按钮后才开始目标显示跟踪,点击“Reset”按钮将重置。

Markerless使用接口(参见SDK自带例子):

//启用接口 NetSock AR.GetInstance().startMarkerlessTracking(); //重置接口 NetSock AR.GetInstance().resetMarkerless(); //跟踪接口需要在GameObject 添加MarkerlessTracking脚本组件(可以获取跟踪状态,支持二次开发)

AR录屏

运行中录制AR内容为MP4格式的视频。

AR视频录制是0.1版新增内容,仅支持Android和iOS平台,使用该功能只需要在ARCamera上添加“VideoRecordBehaviour”脚本组件,如下图:

16

Enable GUI:开启使用默认录屏控制按钮,关闭后使用自定义UI调用以下录制接口:

GetComponent<VideoRecordBehaviour>().REC(); //第一次调用开启,第二次调用停止 MP4 File Name:生成的视频文件前缀,视频文件名为:前缀 + _yyMMdd-HHmmss。Android录屏后的视频文件路径为扩展卡DCIM文件夹内,iOS录屏后的视频文件路径为相册(需要开启相册权限)。

打包指南

Android打包

1、准备需要打包的工程文件,并调试完成。

2、打包Android,首先需要搭建打包环境。

点击“Edit”,打开“Preferences”。

3

弹出界面选中“External Tools”选项。

4

设置Android SDK和JDK。 需要本地没有SDK和JDK,可以点击后方的【Download】,在弹出的网页上进行下载即可。 也可以用链接下载安装: SDK(要科学上网才能打开): https://developer.android.com/studio/index.html#Other JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html

安装完成后,设置好SDK和JDK的路径就可以了。

3、选择打包平台

导出Android安装包,请确保Unity3d当前平台为安卓。

4、Build。

iOS打包

NetSock AR1.0已经支持armv7和arm64,云识别网络支持ipv6。

1、在unity3d里面平台切换至iOS平台下后Build输出Project,将Project拷贝至MAC系统用xcode打开Project,如果在Mac上使用Unity,跳过此步骤;

2、在General下设置好bundle id, signing签名, “Deployment Target”为8.1

ios_01

3、添加Accelerate.framework系统依赖库

ios_02

4、在Info下面添加摄像头使用权限(Privacy – Camera Usage Description),如果使用视频录制,还需要添加相册使用权限(Privacy – Photo Library Usage Description);

ios_03

5、在Build Settings下设置“Enable Bitcode”为NO

ios_04

6、x-code下“Edit Scheme”切换至Release(默认是Debug),然后编译。如下所示:

ios_05

ios_06

常见问题

无法识别

图片识别要求

1、最好用小分辨率图片作为Marker的图片,图片是正方形或者是3:2 或4:3左右的长方形。接近比例即可,建议使用320x240,640x480等尺寸;

2、请注意使用环境尽量照明均匀,避免过亮,过暗,阴影等情况;

3、作为Marker的图像,如果有比较明显的边缘,识别效果会更好;

4、如果图片中有多个平面阴影,选择清晰的部分作为扫描目标。

手绘识别

1、请使用粗线条笔绘图,例如水彩笔或者记号笔等;

2、绘制图形时请尽量闭合;

3、在识别过程中,镜头越接近越垂直于图像能更好的进行识别,在识别过程中左右移动镜头也能有助于识别。

程序报错

为什么点击开始后,无法运行程序或报错?

1、请确定摄像头是否能够正常运行;

2、请确定您安装的NetSock为最新版本。

windows环境下,编译exe程序时报错如何处理?

Windows下PC出包,还需要您手动处理一下:

1、注释掉NetSock ARAPI.cs,55行和56行代码, //AndroidJavaClass javaClass; //AndroidJavaObject javaObject; 然后出包;

2、将出的包下面的plugin下的动态库拷贝到exe的同级目录;

3、关闭unity(注意要把进程杀掉)。 这样就可以运行pc版的版本了。