Nreal簡單的開發:
1.添加Nreal的攝像機
在新建的場景裏刪掉原來的攝像機,把SDK裏的Prefab攝像機NRCameraRig預製體拉到場景中
NRCameraRig上的屬性
①操作系統的狀態設置,一般是配置好使用默認的,配置裏包括地面監測、圖像跟蹤等等
②該組件用於設置相機參數,更新設備模式,當TrackingType選擇Tracking6Dof,設備可以前後左右移動並旋轉;當TrackingType選擇Tracking3Dof,只能原地旋轉
③應用app的管理,裏面是對手柄控制器操控監聽
④Nreal虛擬顯示器,保持默認就好
2.添加手柄操控交互
把NRInput預製體拉到場景中
NRInput上的屬性
需要將Override Camera Center那一項值更改爲CenterCamera,只需要將NRCameraRig下的CenterCamera拖放進來就行了
其他的值默認不需要改變,已經配置好了。
如何與UI交互
在Canvas上,需要添加CanvasRaycastTarget腳本,添加之後,該Canvas下的所有UI組件都可以手柄進行交互
如何使用AR圖片識別功能
①將NRTrackableImageTarget預製體拖到場景中
②場景中放置識別圖片後出來的模型(例如:Cube)
③新建個空物體,掛載腳本TrackableFoundTest
④Observer的值爲NRTrackableImageTarget,Obj的值爲物體Cube,這就好了
打開TrackableFoundTest腳本,只有幾行代碼,通俗易懂。這幾行代碼就是識別後在識別圖上顯示物體。在此基礎上我添加了手柄與物體的交互,手柄指向物體摁下Trigger鍵,物體隨機變色,需要引入using NRKernal命名空間
using NRKernal;
using UnityEngine;
public class TrackableFoundTest : MonoBehaviour
{
public TrackableObserver Observer;
public GameObject Obj;
void Start()
{
#if !UNITY_EDITOR
Destroy(GameObject.Find("EmulatorRoom"));
#endif
Obj.SetActive(false);
Observer.FoundEvent += Found;
Observer.LostEvnet += Lost;
}
private void Update()
{
if (NRInput.GetButtonDown(ControllerButton.TRIGGER))
{
Obj.GetComponent<Renderer>().material.color = new Color(Random.value, Random.value, Random.value);
}
}
private void Found(Vector3 pos, Quaternion qua)
{
Obj.transform.position = pos+new Vector3(0,0.15f,0);
Obj.transform.rotation = qua;
Obj.SetActive(true);
}
private void Lost()
{
Obj.SetActive(false);
}
}