EasyAR4.0簡單使用說明

EasyAR4.0在去年底推出,新增了運動跟蹤,稀疏雲地圖等功能。

註冊,基本設置

EasyAR使用需要先註冊用戶,平面圖像跟蹤,物體跟蹤,表面跟蹤的功能只需要添加“Sense License Key”即可。如果需要使用稀疏雲地圖,則還需要添加“API KEY”

Sense License Key是和應用的Package Name/Bundle ID綁定的。

在導入EasyAR SDK以後,點擊菜單【EasyAR--Change License Key】或者目錄【EasyAR/Resources/EasyAR】下的【Settings】文件,即可輸入key。

總體結構

EasyAR官方把很多東西做成了預製件,多數情況下直接使用預製件即可。

【EasyAR】和【RenderCamera】是必須的內容,根據類型,搭配【VideoCameraDevice】和【VIOCameraDevice】。

【Focus Mode】官方說明

需要將Camera設置爲單色黑色背景,不能使用天空盒

平面圖像跟蹤

平面圖像跟蹤中,每個被跟蹤的圖像對應一個【ImageTarget】,【ImageTarget】需要指定【ImagetTracker】。同時顯示的數量由【Simultaneous Target Number】決定。target 和 tracker都可以是多個。

程序控制方面,【ImageTargetController】有對應事件,官方例子【ImageTracking_Targets】有參考。

        private void AddTargetControllerEvents(ImageTargetController controller)
        {
            if (!controller)
            {
                return;
            }

            controller.TargetFound += () =>
            {
                Debug.LogFormat("Found target {{id = {0}, name = {1}}}", controller.Target.runtimeID(), controller.Target.name());
            };
            controller.TargetLost += () =>
            {
                Debug.LogFormat("Lost target {{id = {0}, name = {1}}}", controller.Target.runtimeID(), controller.Target.name());
            };
            controller.TargetLoad += (Target target, bool status) =>
            {
                imageTargetControllers[controller] = status ? true : imageTargetControllers[controller];
                Debug.LogFormat("Load target {{id = {0}, name = {1}, size = {2}}} into {3} => {4}", target.runtimeID(), target.name(), controller.Size, controller.Tracker.name, status);
            };
            controller.TargetUnload += (Target target, bool status) =>
            {
                imageTargetControllers[controller] = status ? false : imageTargetControllers[controller];
                Debug.LogFormat("Unload target {{id = {0}, name = {1}}} => {2}", target.runtimeID(), target.name(), status);
            };
        }

3D物體跟蹤

3D物體跟蹤和平面圖像跟蹤基本一樣,區別只是跟蹤時候的文件設置不一樣。程序處理時候事件是在【ObjectTargetController】下。

表面跟蹤

表面跟蹤是在設備不支持運動跟蹤情況下的退而求其次的選擇,不建議使用。

啓動後,【WorldRoot】遊戲對象會在當前設備位置固定下來,攝像頭參照移動。

運動跟蹤

運動跟蹤對設備有要求,具體看:Motion Tracking支持的設備

運動跟蹤是稀疏雲地圖和稠密雲地圖的基礎。

運動跟蹤也是,啓動以後,【WorldRoot】會在啓動位置固定,攝像頭根據移動變化。

稀疏雲地圖

稀疏雲地圖首先需要運動跟蹤。

用MapWorker來控制Map。

【Locailzation Mode】官方說明,官方例子中,創建地圖用UntilSuccess,加載地圖用的是KeepUpdate

【Source Type】爲【Map Builder】時是創建地圖。【Map Manager】時是加載地圖。

官方創建地圖和加載地圖的方法都在例子的【MapSession.cs】中。

保存方法是

MapWorker.BuilderMapController.Host(name, preview);

其中,preview是縮略圖,可以爲空。name也可以拾空字符串。通過MapHost事件返回結果。

            MapWorker.BuilderMapController.MapHost += (map, isSuccessful, error) =>
            {
                ...
            };
            try
            {
                MapWorker.BuilderMapController.Host(name, preview);
            }
            catch (Exception e)
            {
                ...
            }

地圖加載方式事件稍微多點,設置了map的ID和名稱以後,設置MapLoad事件獲取結果,MapLocalized和MapStopLocalize事件主要是用來獲取狀態。

    controller.MapManagerSource = meta.Map;
    ...
    controller.MapLoad += (map, status, error) =>
    {
        ...
    };

    controller.MapLocalized += () =>
    {
        ...
    };
    controller.MapStopLocalize += () =>
    {
        ...
    };

    MapWorker.Localizer.startLocalization();

EasyAR4.0簡單的使用說明

 

發佈了165 篇原創文章 · 獲贊 152 · 訪問量 96萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章