前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyAR 3.0切换摄像头画面缩放翻转的问题

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

作者头像
魔都路易斯
发布2020-11-13 16:08:58
8690
发布2020-11-13 16:08:58
举报
文章被收录于专栏:魔都路易斯魔都路易斯

之前一直使用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;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档