Unity之C#

unity之高通AR研究一

2017-06-13  本文已影响0人  楚天月

公司就是研究AR的,不过是由公司大佬封装了一个新的sdk,现在想研究一下官方的高通SDK

Paste_Image.png

高通sdk在场景中首先要拖一个ARCamera和一个ImageTarge,并把原始场景中的相机删除,然后在ARCamera中填入key

Paste_Image.png Paste_Image.png

然后把在高通网站中生成的识别图包放进来,并在ARCamera中启用

再在ImageTarget中选择放入的识别图包和此ImageTarget对应的图包中的某张图片

Paste_Image.png

最后把模型放在ImageTarget下,然后注意调整一下ARCamera的位置

Paste_Image.png

现在运行,拿摄像头取扫描对应的图片就可以出现模型了

我比较感兴趣,想知道它是怎么控制模型消失显现的,看了一下ImageTarget上挂的脚本

Paste_Image.png

在这个脚本中

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");
        }

就是和上面相反的,丢失识别图时就是隐藏所有子物体和其碰撞体

如果要想更改扫描识别图和丢失识别图所进行的动作,可以在这两个函数里面修改

上一篇 下一篇

猜你喜欢

热点阅读