公司就是研究AR的,不過是由公司大佬封裝了一個(gè)新的sdk,現(xiàn)在想研究一下官方的高通SDK

Paste_Image.png
高通sdk在場(chǎng)景中首先要拖一個(gè)ARCamera和一個(gè)ImageTarge,并把原始場(chǎng)景中的相機(jī)刪除,然后在ARCamera中填入key

Paste_Image.png

Paste_Image.png
然后把在高通網(wǎng)站中生成的識(shí)別圖包放進(jìn)來,并在ARCamera中啟用
再在ImageTarget中選擇放入的識(shí)別圖包和此ImageTarget對(duì)應(yīng)的圖包中的某張圖片

Paste_Image.png
最后把模型放在ImageTarget下,然后注意調(diào)整一下ARCamera的位置

Paste_Image.png
現(xiàn)在運(yùn)行,拿攝像頭取掃描對(duì)應(yīng)的圖片就可以出現(xiàn)模型了
我比較感興趣,想知道它是怎么控制模型消失顯現(xiàn)的,看了一下ImageTarget上掛的腳本

Paste_Image.png
在這個(gè)腳本中
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");
}
這個(gè)是掃描到識(shí)別圖時(shí)顯現(xiàn)模型用的,可以看見,他是把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");
}
就是和上面相反的,丟失識(shí)別圖時(shí)就是隱藏所有子物體和其碰撞體
如果要想更改掃描識(shí)別圖和丟失識(shí)別圖所進(jìn)行的動(dòng)作,可以在這兩個(gè)函數(shù)里面修改