Unity3D 5.6.7 +EasyAR 初體驗傻瓜式教程(上)


實現功能:掃描目標素材,出現3D模型,執行他的小動作。
涉及知識點:Easy AR和Unity3D結合。如何導入3D素材到Unity3D?如何給模型貼圖?如何給模型增加簡單的動畫?


1. Easy AR準備工作

1.1添加key具體如下

官網註冊:https://www.easyar.cn/view/login.html

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

1.2 下載Easy AR SDK

下載鏈接:https://www.easyar.cn/view/download.html
在這裏插入圖片描述注:此處我下載的圖上框起來的,下載好後,解壓。也可下載圖上的Samples,通過官方例子學習是不錯的方式。
附:運行EasyAR的"HelloAR"Sample

2. 創建Project + Import Easy AR SDK

1.創建名爲HelloAR的project

在這裏插入圖片描述

2. Import SDK

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

3. 結合Easy AR進行開發

1)找到"EasyAR_Startup"並將其拖入"Hierarchy"
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述注:一定要注意上述保存的路徑爲
D:\0_NEW_software\Unity3D_5.6.7\projects\HelloAR\Assets\Scenes(合理的管理項目)
2)將Easy AR的key填寫如下:
在這裏插入圖片描述
3)添加ImageTarget作爲我們要識別的對象
素材如下:
在這裏插入圖片描述
創建一個文件夾名爲StreamingAssets,並將素材導入進去(通俗的說就是將素材放在StreamingAssets文件夾下)
在這裏插入圖片描述
回到Unity3D發現已經導入素材,如下:
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
爲Image Target新建腳本文件如下:
在這裏插入圖片描述
右鍵→Edit Scripts,將如下代碼複製進去
在這裏插入圖片描述

using UnityEngine;
using EasyAR;

namespace Sample
{
    public class NewBehaviourScript : ImageTargetBehaviour
    {
        protected override void Awake()
        {
            base.Awake();
            TargetFound += OnTargetFound;
            TargetLost += OnTargetLost;
            TargetLoad += OnTargetLoad;
            TargetUnload += OnTargetUnload;
        }
        void OnTargetFound(TargetAbstractBehaviour behaviour)
        {
            Debug.Log("Found: " + Target.Id);
        }
        void OnTargetLost(TargetAbstractBehaviour behaviour)
        {
            Debug.Log("Lost: " + Target.Id);
        }
        void OnTargetLoad(ImageTargetBaseBehaviour behaviour, ImageTrackerBaseBehaviour tracker, bool status)
        {
            Debug.Log("Load target (" + status + "): " + Target.Id + " (" + Target.Name + ") " + " -> " + tracker);
        }
        void OnTargetUnload(ImageTargetBaseBehaviour behaviour, ImageTrackerBaseBehaviour tracker, bool status)
        {
            Debug.Log("Unload target (" + status + "): " + Target.Id + " (" + Target.Name + ") " + " -> " + tracker);
        }
     }
 }
        

在這裏插入圖片描述

4. 導入3D人物

導入3D人物,給3D人物加動畫。
1)導入素材及一些基本設置

在這裏插入圖片描述
在這裏插入圖片描述
選了素材中的一個:attack1

在這裏插入圖片描述
在這裏插入圖片描述
預製體拖拽到場景中後,系統會自動生成一個Animator組件
在這裏插入圖片描述
創建一個Controller來控制動畫,在**工程(Project)**裏創建一個動畫控制器,Animator Controller,將這個控制器拖拽到Animator組件上。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
就生成一個橘黃色的New State的框框,播放時人物就會使New State狀態。
在這裏插入圖片描述
注:單純把Take 001的動畫剪輯拖拽到窗口中是灰色的,要設定一個過渡才能讓Take 001的動畫播放出來,右鍵點擊New State,在選項中選擇Make Transition會出現一個箭頭,選中Take 001狀態即可。我們還想讓Take 001過渡到New State狀態,所以再連接一根到New State的箭頭。
在這裏插入圖片描述
這裏右方設置面板有一個Has ExitTime選項,勾選的意思是當前一個動畫播放完,再播放下一個動畫,因爲我們希望攻擊時瞬發的,所以不勾選。(後面爲了讓他一直動就勾選了)

在這裏插入圖片描述

5.給模型貼圖

從上面的動畫圖可以看到模型還是灰色的,所以接下來我們給模型貼圖。

在這裏插入圖片描述
將模型拖到ImageTarget下,作爲其子物體,方可掃描素材出現模型。

在這裏插入圖片描述

6.爲模型添加縮放大小手勢功能

代碼如下:實現雙手縮放

using UnityEngine;
using System.Collections;

public class Gesture : MonoBehaviour {
    private Touch oldTouch1;  //上次觸摸點1(手指1)
    private Touch oldTouch2;  //上次觸摸點2(手指2)
    void Update()
    {
        //沒有觸摸,就是觸摸點爲0
        if (Input.touchCount <= 0)
        {
            return;
        }     
        //多點觸摸, 放大縮小
        Touch newTouch1 = Input.GetTouch(0);
        Touch newTouch2 = Input.GetTouch(1);
        //第2點剛開始接觸屏幕, 只記錄,不做處理
        if (newTouch2.phase == TouchPhase.Began)
        {
            oldTouch2 = newTouch2;
            oldTouch1 = newTouch1;
            return;
        }
        //計算老的兩點距離和新的兩點間距離,變大要放大模型,變小要縮放模型
        float oldDistance = Vector2.Distance(oldTouch1.position, oldTouch2.position);
        float newDistance = Vector2.Distance(newTouch1.position, newTouch2.position);
        //兩個距離之差,爲正表示放大手勢, 爲負表示縮小手勢
        float offset = newDistance - oldDistance;
        //放大因子, 一個像素按 0.01倍來算(100可調整)
        float scaleFactor = offset / 100f;
        Vector3 localScale = transform.localScale;
        Vector3 scale = new Vector3(localScale.x + scaleFactor,
            localScale.y + scaleFactor,
            localScale.z + scaleFactor);
        //在什麼情況下進行縮放
        if (scale.x >= 0.05f && scale.y >=0.05f && scale.z >= 0.05f)
        {
            transform.localScale = scale;
        }
        //記住最新的觸摸點,下次使用
        oldTouch1 = newTouch1;
        oldTouch2 = newTouch2;
    }
}

7.導出.apk文件

在這裏插入圖片描述然後就可以在手機上安裝運行啦。

注意:導出apk安裝到手機上後,不要在聯網條件下運行軟件,聯網條件下key會失效,具體原因不清楚。
參考鏈接:所有參考鏈接都在這個鏈接裏

總結:寫這篇博客花了三小時左右,雖然都是做過一次的了,但寫出來真的挺慢,比自己做更慢。但希望記錄下來,也提升自己寫博客的“手法”。加油吧!
關於Unity3D中StreamingAssests要了解更多隨便百度一下就好了,以及ImageTarget也是噢。
素材下載鏈接:http://note.youdao.com/noteshare?id=1864860af3240a9d8ea9bd5477a85880&sub=6BD18D9DF1554F60B9937D70363C193E

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章