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. 导入模型到里面,然后就会发现当你把图对着摄像头,就会有模型浮现在平面上。


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中设置脚本要求的各个参数。



猜你喜欢

转载自blog.csdn.net/m0_37702975/article/details/80008821