做一个AR小游戏,使用EasyAR SDK
首先说下项目需求:公司是做主题公园的,需要在公交站台做一个交互功能,显示器外接两个摄像头、默认状态摄像头显示公交站台后面视野,当有人进入时,自动转化识别进入的人,这里只是做了一个识别切换功能。
1:在EasyAR中下载SDK,导入到Unity中。
2:EasyAR官网申请一个Key,用于场景使用。
3:场景添加EasyAR_Startup预制体-》把key复制到EasyARBehaviours脚本中。
4:创建一个Plane用于渲染背景摄像头:注场景有两个摄像头(01背景摄像头,02AR默认摄像头),只要插入两个USB接口的摄像头。
5:代码
using UnityEngine;
using System.Collections;
using EasyAR;
public class WebCamera : MonoBehaviour
{
public Renderer MovieBack;
public GameObject Player;
string deviceNameBack;//接收返回的图片数据
WebCamTexture texBack;
void Start()
{
StartCoroutine(Init());//调用背景摄像头初始化
MovieBack.transform.gameObject.SetActive(true);
FindObjectOfType<ARCameraBehaviour>().TargetLost+=delegate{
Player.SetActive(true); //调用识别物体丢失情况
MovieBack.transform.gameObject.SetActive(false); };
FindObjectOfType<ARCameraBehaviour>().TargetFound += delegate {
Player.SetActive(false);
MovieBack.transform.gameObject.SetActive(true); };//调用识别物体识别情况
}/// <summary>
/// 捕获窗口位置
/// </summary>
IEnumerator Init()
{
yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);
if (Application.HasUserAuthorization(UserAuthorization.WebCam))
{
WebCamDevice[] devices = WebCamTexture.devices;
Debug.LogError("当前摄像头个数" + devices.Length);
if (devices.Length >= 2)
{
deviceNameBack = devices[1].name;
texBack = new WebCamTexture(deviceNameBack, 640, 480, 12);
texBack.Play();
Debug.LogError("正在初始化背景摄像机.......");
}
else
{
Debug.LogError("当前摄像头个数小于2个");
}
}
}
void Update()
{
MovieBack.material.mainTexture = texBack; //渲染摄像头画面
}