【发布时间】:2020-02-22 04:23:54
【问题描述】:
我将ARFoundation 与跟踪图像一起使用(图像库只有一张图像可供查找)。
找到图像后,我将使用
[SerializeField]
ARTrackedImageManager _arTrackedImageManager;
void Awake()
{
_arTrackedImageManager.trackedImagesChanged += ImageChangedHandle;
}
void ImageChangedHandle(ARTrackedImagesChangedEventArgs imgChangedArgs)
{
foreach (var item in imgChangedArgs.added)
{
var go = item.gameObject;
_arkitChecker.DisplayFoundTrackedImage(item);
}
}
_arkitChecker 是我的带有 DisplayFoundTrackedImage 方法的类的实例:
internal void DisplayFoundTrackedImage(ARTrackedImage targetImageGameObject)
{
var arOrig = GameObject.FindObjectOfType<ARSessionOrigin>();
arOrig.transform.Translate(-targetImageGameObject.transform.position, Space.World);
float babyAngle;
Vector3 babyAxis;
targetImageGameObject.transform.rotation.ToAngleAxis(out babyAngle, out babyAxis);
arOrig.transform.RotateAround(Vector3.zero, babyAxis, -babyAngle);
}
因此我想在创建时进行转换 ARTrackedImage 变成 Unity 空间 Vector3.zero 和 Quaternion.identity,但在设备上图像没有变化。
我也尝试过 ARSessionOrigin.MakeContentAppearAt,但没有按我的意愿工作:
arOrig.MakeContentAppearAt(targetImageGameObject.transform, Vector3.zero, Quaternion.identity);
【问题讨论】:
标签: c# unity3d augmented-reality