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了。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章