使用ARFoundation的圖像識別發(fā)布出來的安卓應用存在一個令初學者撓頭的問題——模型始終是背對用戶的,雖然可以在3ds Max等軟件中調(diào)整其軸心,終歸是麻煩。受汪祥春老師《AR開發(fā)權(quán)威指南基于AR Foundation》一書的啟發(fā),編寫如下MultiImageTracking腳本:文章來源:http://www.zghlxwxcb.cn/news/detail-503725.html
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
public class MultiImageTracking : MonoBehaviour
{
ARTrackedImageManager ImgTrackedManager;
private Dictionary<string, GameObject> mPrefabs = new Dictionary<string, GameObject>();
public GameObject[] gameObjects;
private void Awake()
{
ImgTrackedManager = GetComponent<ARTrackedImageManager>();
}
void Start()
{
foreach(var go in gameObjects)
{
mPrefabs.Add(go.name, go);
}
}
private void OnEnable()
{
ImgTrackedManager.trackedImagesChanged += OnTrackedImagesChanged;
}
void OnDisable()
{
ImgTrackedManager.trackedImagesChanged -= OnTrackedImagesChanged;
}
void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs eventArgs)
{
foreach (var trackedImage in eventArgs.added)
{
OnImagesChanged(trackedImage);
}
}
private void OnImagesChanged(ARTrackedImage referenceImage)
{
GameObject go = Instantiate(mPrefabs[referenceImage.referenceImage.name], referenceImage.transform);
#if UNITY_ANDROID
go.transform.Rotate(new Vector3(0, 180, 0));
#endif
}
}
用法:文章來源地址http://www.zghlxwxcb.cn/news/detail-503725.html
- 為參考圖像庫添加參考圖像時,須要保證參考圖像的命名和三維模型實例的命名完全一致。
- 對AR Session Orgin對象掛載AR Tracked Image Manager腳本和MultiImageTracking腳本。
- AR Tracked Image Manager腳本組件中的Tracked Image Prefab設置為None。
- MultiImageTracking組件中的Game Objects數(shù)組用來存儲三維模型實例,其個數(shù)根據(jù)需要設置。如下圖所示
到了這里,關于ARFoundation多圖識別的一個腳本的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!