使用ARFoundation的图像识别发布出来的安卓应用存在一个令初学者挠头的问题——模型始终是背对用户的,虽然可以在3ds Max等软件中调整其轴心,终归是麻烦。受汪祥春老师《AR开发权威指南基于AR Foundation》一书的启发,编写如下MultiImageTracking脚本:文章来源:https://www.toymoban.com/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
}
}
用法:文章来源地址https://www.toymoban.com/news/detail-503725.html
- 为参考图像库添加参考图像时,须要保证参考图像的命名和三维模型实例的命名完全一致。
- 对AR Session Orgin对象挂载AR Tracked Image Manager脚本和MultiImageTracking脚本。
- AR Tracked Image Manager脚本组件中的Tracked Image Prefab设置为None。
- MultiImageTracking组件中的Game Objects数组用来存储三维模型实例,其个数根据需要设置。如下图所示
到了这里,关于ARFoundation多图识别的一个脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!