2017-12-06 17:09:50 LZ511321 阅读数 3874
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

首先:我们要实现的功能是插件式开发ar功能,我是一个android工程师,做的事情是将Unity做的apk作为插件集成到我自己的apk中去(当然,没有Unity,unity也由我自己代劳了),如果有差不多的需求的朋友们,把目光扔过来

1.第一步,Easy实现Ar做了个识别图片并且显示3d模型,声音,透明视频的apk,如果不知道EasyAr如何实现请转移至  EasyAr实现图片识别,另外,在此基础上面增加了音乐播放与透明视频播放。不想看这一部分的请往后跳

(一)音乐播放直接在Target上增加Audio Source即可,需要注意的是,不写脚本的话,音频文件需要放在Resuorces中

然后

这样便做到了音乐播放与图片识别逻辑相互绑定

透明视频播放

透明视频需要特殊处理过的透明通道视频,大家可以在这里面学习到easyar透明视频制作。有了视频素材后,

需要放置上去

在target下创建个plane

在Plane下添加脚本,脚本使用的是EasyAr制作的脚本

这样就实现了透明视频的播放,然后就准备导出APK了,但是因为导出的APK要作为插件使用,所以不能直接

导出APK,而是导出Project,并用as打开后对其进行修改

这样会得到一个工程文件夹,以上Unity的事情就完事了,接下来是Android部分


先给出官方的插件式开发教程,此处使用的是360的方案replugin360插件式方案,并且方式为内置插件

2.Android插件部分实现

(一)首先,创建一个Android工程,并且将刚刚Unity打包的工程作为model导入Android工程中去

首先解决so包问题,为了避免出现:your hardware does not support this application这种问题(我就踩过这个坑)

在app的build.gradle中加上:

andrpod{

}中加入

sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}

defaultConfig{

}中加入

ndk {
    //选择要添加的对应cpu类型的.so库。
    abiFilters 'x86', 'armeabi-v7a'
    // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
}
如此做还不能解决的话,将jniLibs中的内容复制到libs中再试试

然后给我们的插件app加入权限,因为不是很了解unity权限与插件化之间的相互影响,所以直接加上权限

(因为我遇到过调起插件化界面时提示无权限)

接着是按照官网的流程,生成插件式apk

project处加上

dependencies {
    classpath 'com.qihoo360.replugin:replugin-plugin-gradle:2.2.1'

}
app的build.gradle中加入

apply plugin: 'replugin-plugin-gradle'
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.qihoo360.replugin:replugin-plugin-lib:2.2.1'
}
接着BuildApk,并且将生成的apk修改为插件名称+jar格式的jar包,这样的话,插件式apk这边的事情就都做完了,

再运行一下,没问题就可以进入下一步了

3.宿主apk

首先在project中的build.gradle中加入

dependencies {
    classpath 'com.qihoo360.replugin:replugin-host-gradle:2.2.1'
}
然后在宿主apk中加入

apply plugin: 'replugin-host-gradle'
compile 'com.qihoo360.replugin:replugin-host-lib:2.2.1'
需要配置的还要加入

repluginHostConfig {
    /**
     * 是否使用 AppCompat      * 不需要个性化配置时,无需添加
     */
    useAppCompat = true
    /**
     * 背景不透明的坑的数量
     * 不需要个性化配置时,无需添加
     */
    countNotTranslucentStandard = 6
    countNotTranslucentSingleTop = 2
    countNotTranslucentSingleTask = 3
    countNotTranslucentSingleInstance = 2
}
具体可以看官方介绍

然后环境已经搭建好了,接下来就是调起插件apk了

将开始生成的插件化apk放在宿主的assets中的plugins中

然后去调用其插件式apk的activity

RePlugin.preload("artest");
mBtnOpen.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        RePlugin.startActivity(MainActivity.this, RePlugin.createIntent("artest", "com.example.a12280.artest.UnityPlayerActivity"));
    }
});
当然,在这之前做好权限申请处理

最重要的是,插件式apk使用的包名为宿主apk的,所以因为EasyAr对包名有要求,所以更改宿主apk的包名

applicationId

这也是我踩过的坑之一

这样就完整的实现了需求

    下面给出源代码,因为上传资源大小限制,所以只提取了关键代码,但是肯定够用了,有疑问或者问题的看客可以在下方留言,感谢!!

Android插件化实现ar识别

2018-06-02 09:40:55 qq_38643064 阅读数 0
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

Unity3D是一个跨平台的游戏引擎,它提供了3d游戏的大部分基础功能实现,比如物理碰撞、3d模型显示、光照等功能,简化了使用者开发游戏的过程,更能够节省非常多的成本,unity3d与别的游戏引擎最大的不同是,它的代码是跨平台的,也就是说,别的引擎一款游戏要写好几份代码,它上面只需写一份就能在所有系统上运行。

unity是使用javascript 与c#进行游戏开发的,javascript 和c#都可以作为实现unity3d的脚本语言,但是关于那个脚本语言更适合来开发unity3d呢,js适合个人开发,C#适用于公司开发。U3D官方团队基于数据分析做出结论,U3D团队会把支持的重心转移到C#,也就是说文档和示例以及社区支持的重心都在C#,C#的文档会是最完善的,C#的代码实例会是最详细的,社区内用C#讨论的人数会是最多的。所以,选择C#开发是最适合的。

对于学习unity3d,首先要掌握c#语言,然后才能按照路线开始正式学习

1、Unity3D程序开发基础
1)C#语法基础
2)OOP(面向对象)
3)网络通信
4)内存管理
从基础讲解C#语言,熟悉字段、属性、接口、委托、事件,掌握C#面向对象编程的核心思想。让学员掌握Unity3d各个方面的知识和基本使用方法,为后面深入的学习打下良好基础。
2、Unity3D高级阶段
1)Unity3D物体系统高级部分
2)Untiy3D动画系统高级部分
3)常规设计模式
4)动画,跟随等相关插件学习
5)第1,3人称项目讲解
在原来的学习基础上,深入学习Unity3D物体系统、动画系统的高级部分,例如骨骼的绑定,动画角色的创建等。配合游戏案例进行深度讲解,让学生充分了解动画的制作过程。
3、游戏跨平台发布
1)IOS版发布
2)安卓版发布
3)网页版发布
4)PC版发布

2012-12-25 15:04:36 asd237241291 阅读数 14199
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 QQ群:【334163814】 本文链接地址: Unity3D AR技术 vuforia SDK

公司新项目要使用ar技术(增强现实),网上搜了些相关资料发现使用最多的就是高通的vuforiaSDK。

高通 vuforia 官网 (https://developer.vuforia.com)目前最新版本是2.0 

(windows平台unity-2.0版本经尝试多次无法安装,其实是下载不完整引起的,后来换IE浏览器下载下来的就能用了,多换几种下载方式试试,囧的不明所以。) 

另外网上教材全是英文,而且全是英文,也没有告知如果设置自己的识别图(ImageTarget)。

中文网上教程少的可怜,一个人写的帖子被各种转载,人家原创写“下篇继续”,他们抄的也“下篇继续”,人家原创真的就在下篇继续了,抄袭的就果断太监了~

例子1:(本例子以window平台下unity - android 1.5版本为例)

1.下载、安装sdk。安装完成后会在安装目录获得一些unitypackage资源包.

2.新建一个unity项目,导入一下两个资源包:

vuforia-android-1-5-10.unitypackage

vuforia-imagetargets-android-1-5-10.unitypackage

3.删除自带的main camera,将AR Camera(Qualcomm Augmented Reality → Prefabs→AR Camera)托人场景。

4.接下来拖入要被识别图的背景图片-ImageTarget(Qualcomm Augmented Reality → Prefabs→ImageTarget),应用会通过检测摄像头拍摄的现实世界画面,与此图进行对比。

5.选择默认识别图:

①、选择ImageTarget,设置Image Target Behaviour(Script)组件的Data Set属性,本例子我们选StonesAndChips。 

②、选择AR Camera,设置Data Set Load Behaviour(Script)组件的Activate Data Set属性,要与ImageTarget中选择的DataSet对应,所以也选择StonesAndChips,另外要对下面的 LOAD Data Set StonesAndChips 打勾。

6.拖入模型,最好使模型成为ImageTarget的子物体,摆放好模型的位置。

7.发布到android平台,真机运行。电脑中打开这张石子图片,直接拿手机对着显示器拍摄就能看到效果。


进阶:设置自己的IamgeTarget

1.登录vuforia 官网 (https://developer.vuforia.com),注册一个账户(密码必须含有大写字母、小写字母、数字)。

2.打开资源管理页(https://developer.vuforia.com/target-manager),Create Database 创建自己的目录。

3.Add Target 上传添加识别图。

4.选择上传的识别图,点击Down 下载资源包。

5.导入资源包。

6.设置自己的识别图。请参考例子1中的第五步。

2017-11-21 09:36:42 wszhenghui521 阅读数 8582
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

上个项目使用到AR,使用了好几个AR SDK来测试。

先总结一下(可能后续有所不同,仅为当前):

各AR插件对比
  2D 3D Android PC
vuforia ×
EasyAR
HiAR × ×
太虚AR × ×
解释一下,vuforia并不是不支持PC平台,而是需要正版激活。并且项目只是涉及PC和Android,所以没列举IOS。详情见下图(图片来自AR学院)



如果是个人兴趣或者要求不高的AR需求,推荐使用EasyAR,方便易上手。

如果是基于大型项目还是推荐用vuforia,购买正版版权,这个流畅度很高。

2019-06-25 14:48:27 HuangZT521 阅读数 2500
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

自2017.4以后的unity版本,AR的SDK已经被集成,那么如何用2018unity3d制作AR呢?

1.首先打开Unity3d2018,然后打开File->Building Setting,接着打开PlayerSetting,找到XR Setting 设置,勾选Virtual Reality Supported,Vuforia Augmented Reality这时会弹出下载一个文件,只需下载即可。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
2.这时打开GameObject会发现仍旧没有Vuforia Engine,不要着急关闭Unity3d,重新打开,这时会出现你想要的结果。
在这里插入图片描述
3.接下来则是注册账号,上传识别图片,打开网址添加链接描述,点击Log in 注册,注册时会有个信息发到邮箱,点击邮箱则激活。打开Develop,出现License Manager,点击Get key(这一步必须要做),自行创建一个Key后,打开Key,复制秘钥。紧接着打开Unity3d,选中AR Camera,点击Open Vuforia Engine Confiuguration。然后在Global下将Key复制进去。(注意:没有出现 Open Vuforia Engine Confiuguration的童鞋肯定是没有配置好Vuforia参照第一步哦,若配置好还是没有出现,则退出Unity重新开一遍即可。)
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.然后打开Target Manager,点击Add database,然后选中已经创建好的database,选择要识别的物体如图片,3D物体等。然后点击你已经创建的识别图片(图片最好是越清楚越好,尽量选方形图片,色彩丰富的哦),然后点击Download database.这样所有准备工作都就绪。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
5.最后一步了,将第四步下载的Database(其实就是一个package)导入unity3d,创建一个VRCamera,及Target Image。然后将你想要识别的3D Object作为Target Image的子物体,点击运行,即可。
在这里插入图片描述
在这里插入图片描述

Unity3D常用插件

阅读数 442