3D Game Programming & Design:AR/MR 技術
AR/MR 技術概述
- 增強現實(Argumented Reality (AR))
是一種將真實世界信息和虛擬世界信息“無縫”集成的新技術,是把原本在現實世界的一定時間空間範圍內很難體驗到的實體信息(視覺信息,聲音,味道,觸覺等),通過電腦等科學技術,模擬仿真後再疊加,將虛擬的信息應用到真實世界,被人類感官所感知,從而達到超越現實的感官體驗。
- 混合現實(Mixed reality (MR))
有時被稱爲超現實(hybrid reality),是真實和虛擬世界的合併,產生新的可視化環境,物理和數字對象實時共存且在其中交互。混合現實不僅發生在物理世界或虛擬世界中,而是融合了現實和虛擬現實,通過身臨其境的技術包含增強現實和增強虛擬。
-
VR,AR,MR的區別
VR,玩家可以通過各種交互技術進入虛擬世界,與虛擬世界事物交互。
AR,把虛擬世界的物體疊加在現實世界的影像或視頻中的物體上,玩家在現實的背景上與虛擬世界物體互動。
MR,將現實世界事物實時在虛擬世界中重構,這些現實物體、虛擬物體與玩家三者互動。
作業要求
1、 圖片識別與建模
2、 虛擬按鍵小遊戲
圖片識別與建模
Vuforia使用指南
首先打開 Vuforia官網註冊,然後在綁定的郵箱上確認一下,就可以回到vuforia主頁上登錄了。
然後進入Develop->License Manager頁面,點擊Get Development Key創建證書。
然後點擊進入TargetManager頁面,創建數據庫,選擇默認的device類型。
Vuforia要求將特定識別的目標提前上傳至數據庫進行特徵提取。目標有多種類型,此處選擇image,以對單幅圖像進行識別,插入你選擇的背景圖片即可。
下載目標特徵數據並作爲資源導入unity項目。
在Unity3d中建模並實現虛擬按鈕
然後在unity3d中創建一個新項目。
選擇Vuforia AR支持:Edit—>Project Settings—>Player—>XR Settings—>Vuforia AR Supported,會自動導入所需的包
刪除原本的main camera,然後在game object中添加vuforia engine的AR camera。
在他的inspector中選擇open vuforia engine configuration,然後將licence拷貝進去。
拷貝licence(從vufoia中創建的licence點擊複製即可)
inport在vuforia中創建的數據庫中的target所導出的包文件。
創建一個Image Target,然後在他裏面創建一個cube和virtual button,在virtual button下創建plane用於點擊,最終結構如下:
在image target中導入設置好的數據庫中的target
cube只需要改大小和位置就可以了,設置如下:
然後對virtual button的設置也是調整位置和大小即可,注意需要讓virtual button和plane位置重疊,且在背景圖內。
因爲期末了沒有太多時間所以這裏我設計的遊戲效果比較簡單,就只是點擊按鈕cube就會換顏色,顏色設置成了紅黃藍三種,代碼很簡單,拖到image target就可以了。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using Vuforia;
public class NewBehaviourScript : MonoBehaviour, IVirtualButtonEventHandler
{
public VirtualButtonBehaviour[] vbs;
public GameObject cube;
public GameObject button;
public Color[] colors;
public int index;
void Start()
{
vbs = GetComponentsInChildren<VirtualButtonBehaviour>();
for (int i = 0; i < vbs.Length; i++)
{
vbs[i].RegisterEventHandler(this);
}
colors = new Color[3];
index = 0;
colors[0] = Color.red;
colors[1] = Color.yellow;
colors[2] = Color.blue;
cube = GameObject.Find("ImageTarget/Cube");
button = GameObject.Find("ImageTarget/VirtualButton/Plane");
}
public void OnButtonPressed(VirtualButtonBehaviour vb)
{
button.GetComponent<Renderer>().material.color = Color.red;
if (index == 3)
index = 0;
cube.GetComponent<Renderer>().material.color = colors[index++];
}
public void OnButtonReleased(VirtualButtonBehaviour vb)
{
button.GetComponent<Renderer>().material.color = Color.red;
}
}
運行效果
點擊運行,然後把手機中對應的背景圖打開放在攝像頭面前,就會出現cube和virtual button了。