公司就是研究AR的,不过是由公司大佬封装了一个新的sdk,现在想研究一下官方的高通SDK
高通sdk在场景中首先要拖一个ARCamera和一个ImageTarge,并把原始场景中的相机删除,然后在ARCamera中填入key
然后把在高通网站中生成的识别图包放进来,并在ARCamera中启用
再在ImageTarget中选择放入的识别图包和此ImageTarget对应的图包中的某张图片
最后把模型放在ImageTarget下,然后注意调整一下ARCamera的位置
现在运行,拿摄像头取扫描对应的图片就可以出现模型了
我比较感兴趣,想知道它是怎么控制模型消失显现的,看了一下ImageTarget上挂的脚本
在这个脚本中
private void OnTrackingFound()
{
Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true);
Collider[] colliderComponents = GetComponentsInChildren<Collider>(true);
// Enable rendering:
foreach (Renderer component in rendererComponents)
{
component.enabled = true;
}
// Enable colliders:
foreach (Collider component in colliderComponents)
{
component.enabled = true;
}
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
}
这个是扫描到识别图时显现模型用的,可以看见,他是把ImageTarget下所有的子物体都激活了,并激活了其碰撞体
而看到下面隐藏的
private void OnTrackingLost()
{
Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true);
Collider[] colliderComponents = GetComponentsInChildren<Collider>(true);
// Disable rendering:
foreach (Renderer component in rendererComponents)
{
component.enabled = false;
}
// Disable colliders:
foreach (Collider component in colliderComponents)
{
component.enabled = false;
}
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
}
就是和上面相反的,丢失识别图时就是隐藏所有子物体和其碰撞体
如果要想更改扫描识别图和丢失识别图所进行的动作,可以在这两个函数里面修改