Unity ImageEfffect 摄像头画面镜像处理
来源:互联网 发布:校园网络组建方案设计 编辑:程序博客网 时间:2024/05/18 01:00
让摄像头的画面发生镜像变换。
直接上代码。
public bool NeedRevert = false;public Shader invertShader = Shader.Find ("Custom/FrontCameraInvertImage");static Material m_Material = null;protected Material material{get{if (m_Material == null){m_Material = new Material(invertShader);m_Material.hideFlags = HideFlags.DontSave;}return m_Material;}}protected void OnDisable(){if (m_Material){DestroyImmediate(m_Material);}}// Called by the camera to apply the image effectvoid OnRenderImage(RenderTexture source, RenderTexture destination){if (NeedRevert && isInit) {if (Screen.orientation == ScreenOrientation.Portrait || Screen.orientation == ScreenOrientation.PortraitUpsideDown) {material.SetFloat ("_AxisX",0);}else{material.SetFloat ("_AxisX",1);}Graphics.Blit (source, destination, material);}else Graphics.Blit(source, destination);}
如果是竖屏X轴镜像,material.SetFloat ("_AxisX",0);
如果是竖屏Y轴镜像,material.SetFloat ("_AxisX",1);
如果是横屏X轴镜像,material.SetFloat ("_AxisX",1);
如果是横屏Y轴镜像,material.SetFloat ("_AxisX",0);
最后是shader的代码
Shader "Custom/FrontCameraInvertImage" {Properties{_MainTex("Base (RGB)", 2D) = "" {}_AxisX("x or y", Range(0,1)) = 0 //0 for x; 1 for y}// Shader code pasted into all further CGPROGRAM blocksCGINCLUDE#include "UnityCG.cginc"struct v2f {float4 pos : SV_POSITION;float2 uv : TEXCOORD0;};sampler2D _MainTex;half4 _MainTex_ST;float _AxisX;v2f vert(appdata_img v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.uv = v.texcoord.xy;return o;}half4 frag(v2f i) : SV_Target{if(_AxisX == 0)i.uv.x = 1 - i.uv.x;else i.uv.y = 1 - i.uv.y;half4 color = tex2D(_MainTex, UnityStereoScreenSpaceUVAdjust(i.uv, _MainTex_ST));return color;}ENDCGSubshader {Pass{ZTest Always Cull Off ZWrite OffCGPROGRAM#pragma vertex vert#pragma fragment fragENDCG}}Fallback off} // shader
以上效果只会对摄像头起作用。
最后提出一个问题:Input点击事件也发生了镜像,可以用Screen.width-Input.mousePosition.x 来解决。
但是,如果是UI的事件,就要通过修改系统的事件
阅读全文
0 0
- Unity ImageEfffect 摄像头画面镜像处理
- Unity通过修改摄像头的投影矩阵,让画面得到镜像效果
- unity如何实现画面左右反转(镜像)效果
- opencv,调用摄像头对画面进行canny处理
- unity3d 镜像翻转画面脚本
- Unity摄像头镜面转换
- <二> 摄像头画面显示
- unity 摄像头
- s3c6410 摄像头图像镜像问题笔记
- Android4.4 Camera 摄像头镜像问题
- [cnblogs镜像]Unity脚本生命周期 图解
- [cnblogs镜像]Unity 退出游戏 方法
- [cnblogs镜像]Unity 自己旋转 方法
- [cnblogs镜像]Unity的SendMessage方法
- iOS 怎么设置前置摄像头不是镜像
- iOS AVCapture前置摄像头不显示镜像翻转
- Unity 启动画面淡入淡出
- Unity 启动画面淡入淡出
- 微信小程序开发经验总结(六)
- 17. Letter Combinations of a Phone Number(根据手机按键求字母的组合)
- Java笔记之泛型方法
- Servlet笔记——(2.1)Servlet简介
- java pdf多签名
- Unity ImageEfffect 摄像头画面镜像处理
- python之Numpy的使用
- centos安装java
- 【技术贴收集】 .Net core学习笔记教程
- Vue新手环境搭建
- 题目242-计算球体积
- [Linux/Ubuntu] vi/vim 使用方法讲解
- Javaweb项目图片上传实现预览
- squid 各种timeout配置项