1.将需要在红外图像中高亮的物体设置到图层PostProcessing。

2.新建一个相机CameraHighLight,设置其Culling Mask为PostProcessing,也就是在这个相机中只有PostProcessing图层的物体可见。

3.新建一个RenderTexture,命名为HightLightRt,将CameraHighLight的Target Texture设HightLightRt。

4.新建一个相机Camera2,这个相机用于显示其他物体。

接下来将CameraHighLight和Camera2中画面转化为两张灰度图,再合并成一张图。合并的过程使用OnRenderImage函数,该函数中使用shader的片断着色器处理,取到两张图相同位置的像素后,谁的灰度值高就取谁的亮度。为了高度CameraHighLight的物体,取Camera2中像素时将适当缩小亮度值。

5.新建C#脚本ThermalVision.cs,将ThermalVision.cs挂载到Camera2。

using UnityEngine;public class ThermalVision : MonoBehaviour
{public bool IsInverse = false;public RenderTexture OtherTex;private Material material1;private Material material2;// Creates a private material used to the effectvoid Awake(){material1 = new Material(Shader.Find("Hidden/Thermal1"));material2 = new Material(Shader.Find("Hidden/Thermal2"));}// Postprocess the imagevoid OnRenderImage(RenderTexture source, RenderTexture destination){if (IsInverse){material1.SetTexture("_OtherTex", OtherTex);Graphics.Blit(source, destination, material1);}else{material2.SetTexture("_OtherTex", OtherTex);Graphics.Blit(source, destination, material2);}}
}

6.新建两个shader,分别为Thermal1、Thermal2,一个为白色模式,一个为黑色模式。

Shader "Hidden/Thermal1" {Properties{_MainTex("Base (RGB)", 2D) = "white" {}_OtherTex("Other (RGB)", 2D) = "white" {}}SubShader{Pass {CGPROGRAM#pragma vertex vert_img#pragma fragment frag#include "UnityCG.cginc"uniform sampler2D _MainTex;uniform sampler2D _OtherTex;float4 frag(v2f_img i) : COLOR {fixed4 renderTex = tex2D(_MainTex, i.uv);fixed4 OtherTex = tex2D(_OtherTex, i.uv);fixed gray1 = 0.2125 * renderTex.r + 0.7154 * renderTex.g + renderTex.b;fixed gray2 = 0.2125 * OtherTex.r + 0.7154 * OtherTex.g + OtherTex.b;fixed maxgr = gray1 * 0.1* step(gray2, gray1) + gray2 * step(gray1, gray2);//fixed maxgr = max(gray1, gray2);fixed3 grayColor = float3(maxgr, maxgr, maxgr);float4 result = renderTex;result.rgb = grayColor;return result;}ENDCG}}
}
Shader "Hidden/Thermal2" {Properties{_MainTex("Base (RGB)", 2D) = "white" {}_OtherTex("Other (RGB)", 2D) = "white" {}}SubShader{Pass {CGPROGRAM#pragma vertex vert_img#pragma fragment frag#include "UnityCG.cginc"uniform sampler2D _MainTex;uniform sampler2D _OtherTex;float4 frag(v2f_img i) : COLOR {     fixed4 renderTex = tex2D(_MainTex, i.uv);fixed4 OtherTex = tex2D(_OtherTex, i.uv);fixed gray1 = 0.2125 * renderTex.r + 0.7154 * renderTex.g + renderTex.b;fixed gray2 = 0.2125 * OtherTex.r + 0.7154 * OtherTex.g + OtherTex.b;fixed maxgr = gray1 * 0.5* step(gray2, gray1) + gray2 * step(gray1, gray2);fixed3 grayColor = float3(maxgr, maxgr, maxgr);float4 result = renderTex;result.rgb = float3(1- grayColor.r, 1 - grayColor.g, 1 - grayColor.b);return result;}ENDCG}}
}

最终效果

Unity3d实现红外热成像效果相关推荐

  1. 为什么说红外热成像测温设备是2020年最火的弱电设备?

    新型冠状病毒肆虐,体温检测是疫情防控的重要环节,但传统体温测量耗时较多,在人流较密集的场合大规模的体温检测容易造成大面积人员滞留,同时存在人员聚集造成交叉感染的隐患. 5G 红外测温"服务有 ...

  2. 红外热成像拥抱无人机 迸发安防救援新活力

    经过几十年的发展,红外热成像技术已经广泛应用于军事.医疗.工业生产.消防等领域,更是在近几年开启了民用化的发展趋势.对于安防而言,热成像技术的出现,为视频监控在光线不足时增加了夜视和透视的功能,在整个 ...

  3. 动物行为检测计算机视觉_基于红外热成像和计算机视觉的动物行为研究系统便是其中一例...

    工业领域的某些技术手段因其成熟的体系和强大的适应能力,常常被引入到科研领域.引入后往往能给学者莫大的惊喜,给他们的课题带来惊人的突破.本文介绍的基于红外热成像和计算机视觉的动物行为研究系统便是其中一例 ...

  4. 动物行为检测计算机视觉_当动物行为研究遇见机器视觉——“红外热成像+计算机视觉”动物行为研究系统...

    当动物行为研究遇见机器视觉 --"红外热成像+计算机视觉"动物行为研究系统 工业领域的某些技术手段因其成熟的体系和强大的适应能力,常常被引入到科研领域.引入后往往能给学者莫大的惊喜 ...

  5. Unity3d 实现落叶飘效果

    Unity3d 实现落叶飘效果 一. 演示效果: 1.gif图演示 2.视频演示 二.快速开始 1.下载插件 2.使用教程 三.代码概述: 1.LeavesLife.cs 2.LeavesSpwan. ...

  6. stm32单片机+amg8833+红外热成像/单片机红外测温成像/stm32 amg8833红外热成像

    基于stm32单片机的amg8833红外热成像/单片机红外测温成像,测温模块用的是AMG8833 IR 8x8红外热像传感器. 具体功能:可红外热成像,可以设置报警阈值,可以语音播报温度异常,单片机s ...

  7. 基于ARM RK3568的红外热成像体温检测系统

    得益于我国政府有力的新冠疫情防控手段,人民群众的生产和生活没有受到过多影响.而放眼全球,疫情防控形势依旧严峻,这提醒着我们仍不能掉以轻心,除做好个人防护之外,公共场所的体温检测成为基础但重要的疫情防控 ...

  8. 【红外技术】红外热成像在雨雾天的能看多远?

    创作日期:2020-02-12 1. 用户会经常问 热成像能看多远? 答:作用距离取决于很多因素.包括:镜头,探测器是否制冷,灵敏度,探测的目标大小,目标与背景的温差.当然,在这所有的因素的之前,还有 ...

  9. 国内从事红外热成像的公司

    1.上海巨哥电子科技有限公司 http://www.magnity.com.cn/  安防红外机芯.手持测温.无人机载红外相机 2.深圳保千里电子有限公司 http://www.bqlnv.com.c ...

最新文章

  1. 赠书 | 联邦学习如何在视觉领域应用?
  2. springcloud(十一):服务网关Zuul高级篇
  3. 21 RadioGroup ListFragment
  4. cmd窗口使用python提示“Python not found”,可能是环境变量配置的原因
  5. npm的安装和更新---npm工作笔记002
  6. 河南省队选拔 HAOI2015 解题报告
  7. Spring Boot 面试,一个问题就干趴下了!(下)
  8. Python常用模块15-python的configparser模块
  9. 《这样思考,人生就不一样》/《思考的整理学》 博客思听 2010年1月
  10. 做360度评估引发员工不满?
  11. 管理心理学试题库【1】
  12. HTTPS双向认证(Mutual TLS authentication)
  13. PDF合并在电脑上怎样实现?PDF合并的方法有哪些?
  14. Android Drawable图标生成工具
  15. 【微机原理与接口技术】
  16. 公司股权分配协议范文
  17. Redis网站热搜关键词加载实践,建议收藏
  18. hive导出数据的7种方式
  19. Ultraedit使用小技巧
  20. GitHub Copilot 键盘快捷键

热门文章

  1. 星淘惠:跨境电商产业实现数字化转型促进经济发展
  2. java面试题,看我这篇就够了,前端后台应有尽有,包你通过面试
  3. 谷歌浏览器主页被强制更改_你遇到过“浏览器主页劫持”、“流量劫持”的情况吗?...
  4. 【每日一题】打卡 58
  5. 修改DIV滚动条样式
  6. SQL server 2012 SP4设置TLS1.2
  7. Java Stream的流操作,居然让我的代码越写越丝滑?
  8. win10蓝牙已配对连接不上_Win10系统蓝牙配对手机连接不成功的解决方法
  9. c语言请按照格式输出英文诗,C措辞文件包含与头文件写法(国外英语资料).doc
  10. 专业数据分析软件 OriginLab Origin 8