2017-02-28 23:02:44 tiandixuanwuliang 阅读数 23617
  • Unity 值得看的500+ 技术内容列表

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

如今AR技术越来越火,本文将使用Unity3d工具介绍如何一步一步开发一个AR软件,使之能够安装在手机里面,体验一把AR。
1、前期准备:
1.1下载Unity3d工具:链接:https://pan.baidu.com/s/11W8tz591_zJhy-kGN099Wg 密码:481x
   (里面包含Unity破解工具,请大家自行安装) 
1.2下载Android_SDK:http://rj.baidu.com/soft/detail/23485.html?ald(解压即可)
1.3下载EasyAR帮助文档:http://download.csdn.net/detail/tiandixuanwuliang/9767145(参考使用)
2、如何获取EasyAR的密钥来开发AR?
2.1在EasyAR官网(www.easyar.cn)注册账号,注册登录后,点击“创建应用”:


2.2在弹出的窗口中,输入应用名和包名(非常重要):


2.3创建完毕后,会显示key和应用包名,保存好:


3、 注册后,还要下载EasyAR的相关工具,点击上页面中的“立即下载”:

4如何使用Unity开发AR?
4.1创建一个空的Unity工程:
4.1.1点击“new projct”:


4.1.2最好把工程名输入的和在EasyAR官网上的应用名一样,选择“3d”如图:


4.2配置Unity中AR--APP开发环境:
4.2.1空的Unity工程如图:


4.2.2配置Android开发环境,点击“file”--“Build Setting”(Ctrl+Shift+B)如图:



在弹出的页面中,按照如图顺序点击:



4.2.3点击“Player Settings”后,配置右边弹出的窗口:
(请在Company Name中输入你在EasyAR注册的用户名,在Product Name中输入
在EasyAR创建应用的应用名)


4.2.4点击上述图片中的“Other Settings”,在“Bundle Identifier”输入
在EasyAR官网创建应用的包名,其余选项的看图(非常重要)。



4.2.5配置AR开发环境,导入EasyAR环境:
把下载的EasyARSDK解压。在Unity中按图选择:


在弹出的窗口中选择EasyAR.unitypackage文件:例如我的:
“E:\software\Unity 5.0.0b1\EasyARsdk_v1.3.1\EasyARSDK\unity\EasyAR.unitypackage”
等待一会后,在弹出的窗口中选择“all”,再选择“Import”,如图:



等一会儿后,点击“1步”再把“2步”拖入上面场景中,再点击“3步”,输入在
EasyAR官网创建应用的key(4步):



到此使用Unity开发基于AR的APP的工作就都结束了,可以导入APP来玩了(导出方法见后文)。不过我试了下此APP
没什么效果,下面我们将导入EasyARSDK自带的一个小例子Hello_AR。过程中如果弹框提示“Android SDK”路径,
请大家自己选择路径。
5导入Hello_AR:
5.1点击"file"---"open Projct"---在弹出的界面中点击“oper others"---找到"
E:\software\Unity 5.0.0b1\EasyARsdk_v1.3.1\EasyARSDK\unity\Sample_HelloAR\Assets\HelloAR"即HelloAR路径
---弹出的窗口问“是否保存”,点击是,填写文件名。---等一会后,按照上面同样的方法拖入HelloAR,由于博文
篇幅问题,不知道,请在下方留言。
6导出一个APP,即apk文件:
点击“file”--“Build Setting”,再弹出的页面中点击“Build”,如图:
(不知道的,请再看4.2.2节)
输入apk文件名,是在EasyAR官网创建应用的应用名(非常重要)。



7快把这个应用安装在您的手机上吧(不能用手机模拟器),拿出你的“身份证”开始玩吧。效果图:


8博文写的很辛苦,如果您觉得对您有点作用请“点赞”,有问题
欢迎大家留言,文章有些地方写的可能有点问题,万请见谅。
HelloAR工程链接(直接把该文件里的HelloAR.unity使用Unity打开,即可,就可以导出一个APP,安装到手机):
   http://download.csdn.net/detail/tiandixuanwuliang/9767297
导出后的apk安装包链接:
    http://download.csdn.net/detail/tiandixuanwuliang/9767301(可以直接安装在手机里,开始进入AR世界了)
注意:
1、如果Unity打包过程出现类似下面这样的错误提示:
    Error building Player: CommandInvokationFailure: Unable to convert classes into dex format. 
See the Console for details.
    表示你的你复制过来的libs文件夹里的东西和Unity的有冲突,通常是含有和Unity的classes.jar相同内容的
jar文件。就删掉classes.jar文件。

 

 欢迎大家留言。谢谢大家的阅读。

 

本文链接:http://blog.csdn.net/tiandixuanwuliang/article/details/58707338

2017-12-06 10:36:13 tianxiaojie_blog 阅读数 200
  • Unity 值得看的500+ 技术内容列表

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

很多时候我们需要制作一个AR的demo或产品,需要是实现与现实的交互或者制作的产品只需要AR特性但环境需要虚拟(类似与VR场景一样),这时候我们就要对AR进行镜头的包裹了。那么我们如何实现这样的效果呢?

其实实现的方法还是比较简单,需要的是在AR场景中把主摄像头下添加一个摄像头,然后把添加的这个摄像头的【Camera】组件和【Audio Listener】组件的Active去掉。也就是去掉组件前面的勾,然后添加一个脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class ChangeCameraView : MonoBehaviour {

    [Tooltip("需要切换的场景名称")]
    public string LoadLevelName;//包裹AR镜头的场景
    [Tooltip("现实场景摄像头名称")]
    public string mainCameraName;//原来的主摄像头
    [Tooltip("虚拟场景摄像头名称")]
    public string thirdCameraName;//新添加的摄像头

    //虚拟现实切换
    public void changeCameraView(bool isVirtual){
        Debug.Log ("loadscene: "+LoadLevelName);
        Debug.Log ("mainCameraName: "+mainCameraName);
        Debug.Log ("thirdCameraName: "+thirdCameraName);
        //获取场景
        Scene LoadLevelss= SceneManager.GetSceneByName (LoadLevelName);
        if (isVirtual) {
            //if (LoadLevelss==null) {//判断场景是否为空
                SceneManager.LoadScene(LoadLevelName, LoadSceneMode.Additive);
            //}
        } else {
            //if (LoadLevelss!=null) {//判断场景是否为空
                SceneManager.UnloadSceneAsync (LoadLevelName);
            //}
        }
        GameObject.Find (thirdCameraName).GetComponent<AudioListener>().enabled = isVirtual; 
        GameObject.Find (thirdCameraName).GetComponent<Camera>().enabled = isVirtual;  
        GameObject.Find (mainCameraName).GetComponent<AudioListener>().enabled = !isVirtual; 
        GameObject.Find (mainCameraName).GetComponent<Camera>().enabled = !isVirtual;  
    }
}

然后把这个脚本应用到场景中。传入参数。在运行的时候根据需要去调用里面的方法。

下面为实际运行效果。我把这个方法绑定在两个按钮上
虚拟环境,镜头包裹
这里写图片描述
显示环境,镜头未包裹(原图太大上传不了)
这里写图片描述

2018-08-01 09:24:33 One_Piece_Fu 阅读数 999
  • Unity 值得看的500+ 技术内容列表

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

本文转自  天地炫舞的博客

如今AR技术越来越火,本文将使用Unity3d工具介绍如何一步一步开发一个AR软件,使之能够安装在手机里面,体验一把AR。
1、前期准备:
1.1下载Unity3d工具:链接:https://pan.baidu.com/s/1ggOeirh 密码:hvky
   (里面包含Unity破解工具,请大家自行安装) 
1.2下载Android_SDK:http://rj.baidu.com/soft/detail/23485.html?ald(解压即可)
1.3下载EasyAR帮助文档:http://download.csdn.net/detail/tiandixuanwuliang/9767145(参考使用)
2、如何获取EasyAR的密钥来开发AR?
2.1在EasyAR官网(www.easyar.cn)注册账号,注册登录后,点击“创建应用”:


2.2在弹出的窗口中,输入应用名和包名(非常重要):


2.3创建完毕后,会显示key和应用包名,保存好:


3、 注册后,还要下载EasyAR的相关工具,点击上页面中的“立即下载”:

4如何使用Unity开发AR?
4.1创建一个空的Unity工程:
4.1.1点击“new projct”:


4.1.2最好把工程名输入的和在EasyAR官网上的应用名一样,选择“3d”如图:


4.2配置Unity中AR--APP开发环境:
4.2.1空的Unity工程如图:


4.2.2配置Android开发环境,点击“file”--“Build Setting”(Ctrl+Shift+B)如图:



在弹出的页面中,按照如图顺序点击:



4.2.3点击“Player Settings”后,配置右边弹出的窗口:
(请在Company Name中输入你在EasyAR注册的用户名,在Product Name中输入
在EasyAR创建应用的应用名)


4.2.4点击上述图片中的“Other Settings”,在“Bundle Identifier”输入
在EasyAR官网创建应用的包名,其余选项的看图(非常重要)。



4.2.5配置AR开发环境,导入EasyAR环境:
把下载的EasyARSDK解压。在Unity中按图选择:


在弹出的窗口中选择EasyAR.unitypackage文件:例如我的:
“E:\software\Unity 5.0.0b1\EasyARsdk_v1.3.1\EasyARSDK\unity\EasyAR.unitypackage”
等待一会后,在弹出的窗口中选择“all”,再选择“Import”,如图:



等一会儿后,点击“1步”再把“2步”拖入上面场景中,再点击“3步”,输入在
EasyAR官网创建应用的key(4步):



到此使用Unity开发基于AR的APP的工作就都结束了,可以导入APP来玩了(导出方法见后文)。不过我试了下此APP
没什么效果,下面我们将导入EasyARSDK自带的一个小例子Hello_AR。过程中如果弹框提示“Android SDK”路径,
请大家自己选择路径。
5导入Hello_AR:
5.1点击"file"---"open Projct"---在弹出的界面中点击“oper others"---找到"
E:\software\Unity 5.0.0b1\EasyARsdk_v1.3.1\EasyARSDK\unity\Sample_HelloAR\Assets\HelloAR"即HelloAR路径
---弹出的窗口问“是否保存”,点击是,填写文件名。---等一会后,按照上面同样的方法拖入HelloAR,由于博文
篇幅问题,不知道,请在下方留言。
6导出一个APP,即apk文件:
点击“file”--“Build Setting”,再弹出的页面中点击“Build”,如图:
(不知道的,请再看4.2.2节)
输入apk文件名,是在EasyAR官网创建应用的应用名(非常重要)。



7快把这个应用安装在您的手机上吧(不能用手机模拟器),拿出你的“身份证”开始玩吧。效果图:


8博文写的很辛苦,如果您觉得对您有点作用请“点赞”,有问题
欢迎大家留言,文章有些地方写的可能有点问题,万请见谅。
HelloAR工程链接(直接把该文件里的HelloAR.unity使用Unity打开,即可,就可以导出一个APP,安装到手机):
   http://download.csdn.net/detail/tiandixuanwuliang/9767297
导出后的apk安装包链接:
    http://download.csdn.net/detail/tiandixuanwuliang/9767301(可以直接安装在手机里,开始进入AR世界了)
注意:
1、如果Unity打包过程出现类似下面这样的错误提示:
    Error building Player: CommandInvokationFailure: Unable to convert classes into dex format. 
See the Console for details.
    表示你的你复制过来的libs文件夹里的东西和Unity的有冲突,通常是含有和Unity的classes.jar相同内容的
jar文件。就删掉classes.jar文件。

 欢迎大家留言。谢谢大家的阅读。

 

2015-07-30 12:53:47 ggtaas 阅读数 2741
  • Unity 值得看的500+ 技术内容列表

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

原文链接:AR学院
ARVR技术交流群:129340649,欢迎加入!

参看截图教程一(非AR版),Unity3d截图功能实现一(非AR版) 

对于AR版与非AR类似,导入AR的部分或者在AR的应用中导入截图插件 
 

注意事项: 
AndroidManifest.xml文件重新配置。参看之前二维码扫描部分。 
 
截图方法与教程一(非AR版)相同。 
 
问题:怎么将图片保存到手机相册中? 
这个主要看你手机相册的路径是什么。比如我使用华为荣耀的测试机,位置为DCIM/Camera,因此对于保存截图位置,需要进行调整: 

复制代码
1
StartCoroutine(ScreenshotManager.Save("test""Camera",false));

由于文件夹路径为: 

复制代码
1
string androidPath = "/../../../../DCIM/" + albumName + "/" + screenshotFilename;

所以就将图片保存到DCIM/Camera中,使用相册就可以看到对应的图片了。 
 
AR场景截图:

相册截图,最上面两幅:


源程序链接:http://www.arvrschool.com/read.php?tid=128&fid=60
2015-10-07 20:47:01 snk1996 阅读数 8722
  • Unity 值得看的500+ 技术内容列表

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

用Unity3D实现简易的AR Demo

AR(Augmented Reality),即增强现实技术,是一种实时地计算摄影机影像的位置及角度并加上处理相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动,实现真实世界信息和虚拟世界信息“无缝”的集成。这种技术最早于1990年提出。随着现代电子产品运算性能的提升,增强现实的用途也越来越广,既可以用到医疗、军事模拟训练等严肃领域,也可以用来制作如miku AR等新颖有趣的应用软件。

(宅在家也可以打开次元之门了( *︾▽︾)……..)

miku AR效果展示

 

本文将利用Unity3D游戏开发引擎及高通AR插件制作一个简易的技术Demo,并发布到Android系统的手机上进行运行测试。基于高通SDK的良好的封装和Unity3D引擎强大的功能支持,使得开发该Demo流程十分简单,大大降低了AR开发的入门门槛。

 

 

**************************************************************************************************************************************************************

准备工作:

首先进行一些开发前的准备,我们需要准备好三个文件:

  • Qualcomm Vuforia 的SDK对应的Unity3D插件包

这个就是高通AR的SDK了,首先登陆QualcommVuforia的官方网站(https://developer.vuforia.com/)并注册一个账号,按要求填入信息即可。


注册完毕后登陆,点击Downloads下SDK标签里的Downloadfor Unity选项即可开始下载。此外我们看到,我们还可以直接用基于Android或IOS的SDK进行开发,但这里我们并不需要它们。


  • 待识别图片平面的二进制数据包(同样以Unity3D package的格式给出)

我们只需要将需要识别的图片上传到高通的官网,随后网站会在云端对图片进行特征值的提取和数据的生成,下载该图片对应的数据文件即可。

登陆账号后,选择Develop下的Target Manger选项卡。如果是第一次使用,应该首先新建数据库,单击Add Datebase按钮,填入数据库的名称并选择类型为Device,点击Create即可创建一个新的数据库。


进入该数据库,并点击Add Target按钮,我们可以看到,我们可以添加多种类型的识别对象,简单的如平面的图片、文字等,复杂的还可以识别立方体、圆柱甚至一般的三维物体。在这里我们选择Single Image即可,上传对应的图片并填入其宽度,最后为其命名,单击Add即可添加成功。

上传后可以看到图片相应的信息,这里的Rating代表图片的可识别质量,星级越高识别质量越好。


最后,勾选图片前的复选框,单击Download Dataset按钮并选择UnityEditor平台,即可下载上传图片的特征信息数据集。

 

  • 主角3D模型及动画数据的Unity3Dpackage包

这个就任意了,可以选用任意自己喜欢的人物模型来代替,在这里笔者使用的是Unity_Chan(Unity3D在日本的动漫化形象模型包),由于她对应的动作、声音较多,效果也比较好,为了保持下面操作的一致,建议读者第一次操作最好也选用这个。

下载地址:http://unity-chan.com/

 

完成以上三步后,你应该得到以下三个package文件:

 

终于准备好了….下面我们就开始AR软件制作之旅。

 ************************************************************************************************************************************************************

 

首先打开Unity3D软件(这里笔者选用的是Unity3D 5.1.0f3(32-bit)版本,Unity 5 64位版本与高通AR插件不兼容而报错,无法使用,低于4.6.7版本的Unity也无法使用),新建一个工程,并删除自带的摄像机与光源等物体,然后导入准备的3个package文件,保存为新的场景ar_demo.scene。

 

Assets/Vuforia/Prefabs目录下的ARCameraImageTarget预制体拖入场景之中。

ARCamera,即增强现实的虚拟摄像头,对应于移动设备的硬件镜头位置,通过画面中已经提取过特征值的图片的位置识别从而判断出镜头与图片之间的相对运动,进而调整ARCamera的位置,实现仿佛图片之上的虚拟人物也在镜头之中的假象,构造出一种虚拟的真实感。

现在我们来看一下这个预制体的各项组件:

 


Vuforia Behavior 是用来调整VR行为和相机配置的各项属性的组件。


注意在App License Key一栏中要填入你在高通AR官网上的License Mangaer选项中获取到的密钥,其他选项如是否翻转镜头、同时最大追踪的物体数量、世界中心模式等可根据需要自己控制。

Default Initialization Error脚本是用来处理初始化错误的内部脚本,不用理会。

Database Load Behavior脚本用来控制读取刚才获取到的图片特征数据文件,在导入相应的package后,可以看到对应的load active选项,注意两者都要勾选,这样系统才可以读取到图片特征信息并进行识别


Smart Terrian Track 脚本可以实现在比较复杂的平面上的图像识别,可以根据需要进行勾选。

Web Cam Behaviour 脚本用来方便开发,通过它可以调用笔记本电脑上的摄像头来实时进行项目效果的检验,但是笔者发现当这个脚本运行时会导致Unity3D开启摄像头时崩溃,考虑到这只是一个工具脚本,将其注销掉即可,这并不会影响最终在实体机上面的运行效果。

Keep Alive Behaviour 脚本是一个DontDestroy脚本,它可以实现ARCamera在多个场景之间的保持和生存,根据需要进行勾选。

Video Texture Render脚本是用来渲染图像的内部脚本。

 

 

ImageTarget,即代表待识别图片目标,它对应于你所要控制识别的那张图片的位置。

其组件有:


前两个都是基础组件,不加说明。

Image Target Behaviour脚本用来加载图片数据,类型处可以选择predefined,即表示使用从官网上云处理而获取到的图片数据,在Date Set中选择图片对应的数据库名称,在ImageTarget中选择待识别图片目标的名称,并可以进行相关宽高的设置,其它选项如智能地形追踪、扩展追踪等可以根据需要勾选。


Turn Off Behaviour 脚本是内部脚本,不用理会。

Default Trackable Event Handler 脚本是一个支持用户扩展的脚本,当相机追踪状态发生改变时(如获取目标、丢失目标等)就会执行该脚本,我们可以模仿并加入自己的控制代码。

 

设置好以上两个预制体的属性后,我们就可以把自己的模型拖到场景中,并放置在ImageTarget之上,根据需要进行动作、声音等效果的设置,但这并不是我们这里的重点,不再赘述。



直接给出控制人物的相关代码如下:

 

using UnityEngine;
using System.Collections;

public class ChanCtrl : MonoBehaviour {

	private Animator _animator;
	private AnimatorStateInfo _currentStateInfo;
	private AnimatorStateInfo _preStateInfo;

	public float waitTime = 3f;
	public bool isRandom = true;

	public AnimationClip[] _FaceClips;
	public string[] _FaceMotionName;

	public AudioClip[] _ChanVoice;

	private void ChangeFace()
	{
		_animator.SetLayerWeight(1,1);
		int index = Random.Range(0,_FaceMotionName.Length);
		_animator.CrossFade(_FaceMotionName[index],0.5f);
		if(GetComponent<AudioSource>().isPlaying)
		{
			GetComponent<AudioSource>().Stop();
		}
		GetComponent<AudioSource>().clip = _ChanVoice[index];
		GetComponent<AudioSource>().Play();
	}
	// Use this for initialization
	void Start () {
	
		_animator = GetComponent<Animator>();
		_currentStateInfo = _animator.GetCurrentAnimatorStateInfo(0);
		_preStateInfo = _currentStateInfo;

		_FaceClips = Resources.LoadAll<AnimationClip>("FaceMotion");
		_ChanVoice = Resources.LoadAll<AudioClip>("ChanVoice");

		_FaceMotionName = new string[_FaceClips.Length];
		for(int i = 0; i <_FaceClips.Length; i++)
		{
			_FaceMotionName[i] = _FaceClips[i].name;
		}

		StartCoroutine(RandomChangeMotion());
	}
	
	// Update is called once per frame
	void Update () {
	
		RaycastHit hitinfo;
		if(Input.GetMouseButtonDown(0))
		{
			if(Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hitinfo,Mathf.Infinity))
			{
				if(hitinfo.collider.tag == "face")
				{
					ChangeFace();
				}
			}

		}
		if(_animator.GetBool("Next"))
		{
			_currentStateInfo = _animator.GetCurrentAnimatorStateInfo(0);
			if(_preStateInfo.shortNameHash != _currentStateInfo.shortNameHash)
			{
				_animator.SetBool("Next",false);
				_preStateInfo = _currentStateInfo;
			}

		}
	}


	IEnumerator RandomChangeMotion()
	{
		while(true)
		{
			if(isRandom)
			{
				_animator.SetBool("Next",true);
			}
			yield return new WaitForSeconds(waitTime);

		}
	}
}

 

 

完成以上工作后,基本就大功告成了。接下来就是项目发布了,像导出普通的APK文件一样,设置好相关的Bundle Identifier等数据,指定安卓SDK的安装目录,即可以导出相应的APK文件,从而可以安装到安卓手机上进行测试。

 

实际效果如下,Unity娘可以随机作出不同的动作,触摸脸部还可以更改表情并发出声音,是不是很萌?快来一起学习制作吧!

 

 

 



Unity3d+VideoPlayback

阅读数 6940

没有更多推荐了,返回首页