高通SDK显示模型,放大,缩小,旋转

Unity版本为2018.3.1

密钥及unity图片识别包怎么创建自行百度,so easy

打开Flie文件的PlayerSeting中勾选Vuforia Augmented Reality Support和Virtual Reality Supported
Windows设置
高通SDK显示模型,放大,缩小,旋转_第1张图片
安卓设置
高通SDK显示模型,放大,缩小,旋转_第2张图片
高通SDK显示模型,放大,缩小,旋转_第3张图片
如果安卓打包报错什么27版本过高之类的,将API Level改为26,两个都改

在Hierarchy右键出现Vufriou Engine,创建ARCamera和Image手动点击Import。
高通SDK显示模型,放大,缩小,旋转_第4张图片

点击ARCamera脚本上的Open,将密钥添加入Key即可
高通SDK显示模型,放大,缩小,旋转_第5张图片

ImgaeTargte如图设置
高通SDK显示模型,放大,缩小,旋转_第6张图片

此时创建一个3d物体在图片上,则打包后,扫描到此图就会有方块出现
高通SDK显示模型,放大,缩小,旋转_第7张图片
转动模型的方法

  if (Input.touchCount == 1)   //一个手指
        {
            if (Input.touches[0].phase == TouchPhase.Moved)
            {
                print(111);
                transform.Rotate(new Vector3((Vector3.right * Input.GetAxis("Mouse Y")).x * -speedx * Time.deltaTime, (Vector3.up * Input.GetAxis("Mouse X")).y * -speedx * Time.deltaTime), Space.World);

            }
        }

判断放大缩小的方法


    Vector2 oldPos;   //放大缩小的判定储存
    Vector2 oldPos2;

 if (Input.touchCount == 2)  //两个手指
        {
            if (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved)
            {
                Vector2 temPos1 = Input.GetTouch(0).position;
                Vector2 temPos2 = Input.GetTouch(1).position;


                if (isEnd(oldPos, oldPos2, temPos1, temPos2))
                {

                    float oldScale = transform.localScale.x;
                    float newScale = oldScale * 1.025f;

                    transform.localScale = new Vector3(newScale, newScale, newScale);
                }
                else
                {
                    float oldScale = transform.localScale.x;
                    float newScale = oldScale / 1.025f;

                    transform.localScale = new Vector3(newScale, newScale, newScale);

                }

                oldPos = temPos1;
                oldPos2 = temPos2;
            }
        }

 bool isEnd(Vector2 op1, Vector2 op2, Vector2 np1, Vector2 np2)
    {
        float length1 = Mathf.Sqrt((op1.x - op2.x) * (op1.x - op2.x) + (op1.y - op2.y) * (op1.y - op2.y));
        float length2 = Mathf.Sqrt((np1.x - np2.x) * (np1.x - np2.x) + (np1.y - np2.y) * (np1.y - np2.y));

        if (length1 < length2)
        {
            return true;
        }
        else
        {
            return false;
        }

    }

开启灯光

 private void OnVufriaStarted()
    {
        CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);  //设置照相机为自动对焦
       // CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_TRIGGERAUTO);   //点击某按钮的时候调用此方法对焦一次
    }

你可能感兴趣的:(AR)