EasyAR 3.0切换摄像头画面缩放翻转的问题

2020-11-13 16:08:58 浏览数 (1)

之前一直使用Vuforia做AR项目,现在新公司用EasyAR做项目,需要实现切换摄像头的功能。

1.首先一个问题是如果使用默认前置摄像头初始化,在有的机器上会出现打不开摄像头,或者画面被缩放的问题。

同时有一些奇怪的问题都可以用这种方式规避(不是解决注意)

一定使用后置摄像头初始化,如果你需要默认前置,也一定用后置摄像头初始化,然后马上切换到前置摄像头。

2.Easy切换到前置摄像头画面会被翻转的问题

EasyAR 使用数据流写入的方式进行摄像机渲染,导致我在网上找到的一个翻转摄像机的代码水平翻转失效,但是只要将这个脚本挂在Camera上不用做任何操作就可以规避EasyAR切换摄像头反转的问题(因为项目年前上线,暂时也没有时间去查看为什么,算是个应急的解决方案吧)

代码:

代码语言:javascript复制
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(Camera))]
public class MirrorFlipCamera : MonoBehaviour
{
    new Camera camera;
	public bool flipHorizontal;
	public bool flipVertical;
	void Awake()
    {
        camera = GetComponent<Camera>();
    }
      void OnPreCull()
    {
        camera.ResetWorldToCameraMatrix();
        camera.ResetProjectionMatrix();
        Vector3 scale = new Vector3(flipHorizontal ? -1 : 1, flipVertical ? -1 : 1, 1);
        camera.projectionMatrix = camera.projectionMatrix * Matrix4x4.Scale(scale);
    }
    void OnPreRender()
    {
        GL.invertCulling = flipHorizontal;
    }
    void OnPostRender()
    {
        GL.invertCulling = false;
    }
}

0 人点赞