天天看點

Unity中AR書籍翻頁效果

目的:

  1.閱讀學習Vuforia for Unity開發,實作手機平台上的AR效果.

  2.自主思考編寫用于AR中視訊背景shader,用于AR書籍中有效覆寫書頁中特定部分。第3-4周完成實驗1,打分方法,在自己的手機上實作基本AR效果填寫基本AR功能實驗報告,提出AR中視訊背景shader的思路,實作有效的AR中視訊背景shader。

實作步驟:

1. 首先閱讀Vuforia for Unity的教程。

2. 在vuforia上進行了注冊,然後下載下傳了vuforia的檔案到unity裡面。

3. 加入了ARCamera錄影機。

4. 我們把一張照片上傳到vuforia上,然後再unity的三維空間内建立了一個平面把這張圖檔作為這個平面的材質。并調整了相機的位置。

5. 然後擷取AR的Key,黏貼到所在位置

6. 這時候就完成了錄影機和畫面的互動。

7. 導入模型到裡面,然後就會發現當你把圖對着攝像頭,就會有模型浮現在平面上。

Unity中AR書籍翻頁效果

8.建立一個新場景,建立imageplane,同樣使用上一個實驗已經識别的圖檔。

9.建立兩個按鈕,在text中命名為next和front。

10.設定ARcamera和button到合适的角度。

11.建立C#腳本。

Int count作為向前或向後翻頁的表示,lastorder為目前頁數。以page方法得到将要翻到的頁數。

    public void paging(int count)

    {

        Bookorder = Mathf.Clamp(Bookorder + count, 0, 11);

    }

進行翻頁,為了防止書頁重疊到一起,翻頁的角度有微小的差别。

    void Update()

    {

        Hashtable args = new Hashtable();

        args.Add("x", 0);

        args.Add("y", 0);

        args.Add("delay", 0f);

        args.Add("easeType", iTween.EaseType.easeOutCubic);

        if (Bookorder - lastBookorder > 0)

        {

            switch (Bookorder)

            {

                case 1:

                    args.Add("z", 180f);

                    iTween.RotateAdd(page1.gameObject, args);

                    //iTween.RotateAdd (page1.gameObject, null, time, 0, 0, 180, iTween.EaseType.easeOutCubic);

                    break;

                case 2:

                    args.Add("z", 179.9f);

                    iTween.RotateAdd(page2.gameObject,args);

                    //iTween.RotateAdd (page2.gameObject, null, time, 0, 0, 179.999f, iTween.EaseType.easeOutCubic);

                    break;

                case 3:

                    args.Add("z", 179.8f);

                    iTween.RotateAdd(page3.gameObject, args);

                    //iTween.RotateAdd (page3.gameObject, null, time, 0, 0, 179.998f, iTween.EaseType.easeOutCubic);

                    break;

            }

        }

        else if (Bookorder - lastBookorder < 0)

        {

            switch (Bookorder)

            {

                case 0:

                    args.Add("z",-180f);

                    iTween.RotateAdd(page1.gameObject, args);

                    //iTween.RotateAdd (page1.gameObject, null, time, 0, 0, -180f, iTween.EaseType.easeOutCubic);

                    break;

                case 1:

                    args.Add("z", -179.999f);

                    iTween.RotateAdd(page2.gameObject, args);

                    //iTween.RotateAdd (page2.gameObject, null, time,

        0, 0, -179.999f, iTween.EaseType.easeOutCubic);

                    break;

                case 2:

                    args.Add("z", -179.998f);

                    iTween.RotateAdd(page3.gameObject, args);

                    //iTween.RotateAdd (page3.gameObject, null, time, 0, 0, -179.998f, iTween.EaseType.easeOutCubic);

                    break;

            }

        }

        lastBookorder = Bookorder;

}

儲存腳本。

12.在unity中設定腳本要求的各個參數。

Unity中AR書籍翻頁效果