unity的HDR效果

2023-11-07

http://blog.csdn.net/wolf96/article/details/44057915

文章开始先放两组效果,文章结尾再放两组效果
本文测试场景资源来自浅墨大神,shader效果为本文效果



HDR

人们有限的视觉系统,只支持16.7百万的颜色,超出这个范围的颜色就不能显示了
bmp或jprg每个像素就是16,24或32位
每个像素都由红绿蓝构成,如果储存为24位,每个值的范围就在0,255之间,
只能表现出256:1的差别,unity的shader中是0到1
然而在自然中太阳光下的对比度是50000:1
HDR(High Dynamic Range)使图像能表现出更大范围的对比,普通的范围就叫LDR(Low Dynamic Range)

你在照相的时候能控制曝光时间从而控制亮度。
HDR效果就是可控的曝光,

色调映射 tone-mapping

传统的显示设备不能完全的显示出HDR,所以我们用tone-mapping技术。
tone-mapping让图像从HDR映射为LDR显示
http://www.ownself.org/blog/2011/tone-mapping.html中的解释很好
Tone Mapping原是摄影学中的一个术语,因为打印相片所能表现的亮度范围不足以表现现实世界中的亮度域,而如果简单的将真实世界的整个亮度域线性压缩到照片所能表现的亮度域内,则会在明暗两端同时丢失很多细节,这显然不是所希望的效果,Tone Mapping就是为了克服这一情况而存在的,既然相片所能呈现的亮度域有限则我们可以根据所拍摄场景内的整体亮度通过光圈与曝光时间的长短来控制一个合适的亮度域,这样既保证细节不丢失,也可以不使照片失真。人的眼睛也是相同的原理,这就是为什么当我们从一个明亮的环境突然到一个黑暗的环境时,可以从什么都看不见到慢慢可以适应周围的亮度,所不同的是人眼是通过瞳孔来调节亮度域的。
一个tone-mapping的公式

 



Middlegrey为全屏幕或部分屏幕的中间灰度,可以控值屏幕的亮度
AvgLogLuminance就是全屏幕或部分屏幕的亮度的对数的平均值
 
AvgLogLuminance的公式
Lw是亮度,n是所取亮度数

这个操作能让L值限制位[0,1)
一些tone-mapping操作用exposure或gamma作为参数控制最终的图像。
tone-mapping是非线性的,他对暗色保有一定范围并且对亮色逐步接近动态
这个技术产生吸引人的视觉效果,有着强烈的对比和细节。

HDR Rendering In OpenGL一文中给出简要且效果不错的公式
 
关键代码如下

  1. float4 frag(v2f i) :COLOR  
  2. {  
  3.     float4 c = tex2D(_MainTex, i.uv_MainTex);  
  4.     float y = dot(float4(0.3,0.59,0.11,1),c);  
  5.     float yd = _Exp * (_Exp / _BM + 1) / (_Exp + 1);  
  6.     return c*yd;  
  7. }  

<span style="font-family:Microsoft YaHei;font-size:14px;">            float4 frag(v2f i) :COLOR
            {
                float4 c = tex2D(_MainTex, i.uv_MainTex);
                float y = dot(float4(0.3,0.59,0.11,1),c);
                float yd = _Exp * (_Exp / _BM + 1) / (_Exp + 1);
                return c*yd;
            }</span>

_Exp,_BM为外部可控变量

HDR流程如下

 



如果分不清HDR与加亮light,可以看看skybox,加亮light是不会加亮skybox的,HDR使颜色更鲜明,像素更清晰。


Bloom泛光

辉光的原因是由于人眼晶状体的散射
我们制造bloom的原理是把图像的亮的部分通过卷积模糊再叠加到原图像上,就产生了bloom效果。
高斯模糊的滤波器是一种低通滤波器
就是去当前像素和周围的像素按一定权重混合,产生一定模糊效果

权重分布如下,离当前像素越远,权重越低


 
高斯正态分布曲线

 


二维公式

可以通过这个公式直接算出权重
  1. double sigma = (double)radius / 3.0;  
  2. double sigma2 = 2.0 * sigma * sigma;  
  3. double sigmap = sigma2 * PI;  
  4.   
  5. for(long n = 0, i = - radius; i <=radius; ++i)  
  6. {  
  7.     long i2 = i * i;  
  8.     for(long j = -radius; j <= radius; ++j, ++n)  
  9.         kernel[n] = exp(-(double)(i2 + j * j) / sigma2) / sigmap;  
  10.  }  
<span style="font-family:Microsoft YaHei;font-size:14px;">    double sigma = (double)radius / 3.0;
    double sigma2 = 2.0 * sigma * sigma;
    double sigmap = sigma2 * PI;

for(long n = 0, i = - radius; i &lt;=radius; ++i)
{
    long i2 = i * i;
    for(long j = -radius; j &lt;= radius; ++j, ++n)
        kernel[n] = exp(-(double)(i2 + j * j) / sigma2) / sigmap;
 }&lt;/span&gt;</pre><br>


Kernel即为权重
Radius为所求像素与当前像素距离(半径)


针对这个公式我们可以算出3*3,5*5,7*7等滤波器,出于性能考虑,我们还是使用5*5滤波器


 3*3滤波器


 5*5滤波器

有现成的就不算了,算这个也消耗一些性能
我们直接用这个权重
关键代码如下

  1.             float3 mc00 = tex2D (_MainTex, i.uv_MainTex-fixed2(2,2)/_inten).rgb;  
  2.             float3 mc10 = tex2D (_MainTex, i.uv_MainTex-fixed2(1,2)/_inten).rgb;  
  3.             float3 mc20 = tex2D (_MainTex, i.uv_MainTex-fixed2(0,2)/_inten).rgb;  
  4.             float3 mc30 = tex2D (_MainTex, i.uv_MainTex-fixed2(-1,2)/_inten).rgb;  
  5.             float3 mc40 = tex2D (_MainTex, i.uv_MainTex-fixed2(-2,2)/_inten).rgb;  
  6.   
  7.             float3 mc01 = tex2D (_MainTex, i.uv_MainTex-fixed2(2,1)/_inten).rgb;  
  8.             float3 mc11 = tex2D (_MainTex, i.uv_MainTex-fixed2(1,1)/_inten).rgb;  
  9.             float3 mc21 = tex2D (_MainTex, i.uv_MainTex-fixed2(0,1)/_inten).rgb;  
  10.             float3 mc31 = tex2D (_MainTex, i.uv_MainTex-fixed2(-1,1)/_inten).rgb;  
  11.             float3 mc41 = tex2D (_MainTex, i.uv_MainTex-fixed2(-2,1)/_inten).rgb;  
  12.   
  13.             float3 mc02 = tex2D (_MainTex, i.uv_MainTex-fixed2(2,0)/_inten).rgb;  
  14.             float3 mc12 = tex2D (_MainTex, i.uv_MainTex-fixed2(1,0)/_inten).rgb;  
  15.             float3 mc22mc = tex2D (_MainTex, i.uv_MainTex).rgb;  
  16.             float3 mc32 = tex2D (_MainTex, i.uv_MainTex-fixed2(-1,0)/_inten).rgb;  
  17.             float3 mc42 = tex2D (_MainTex, i.uv_MainTex-fixed2(-2,0)/_inten).rgb;  
  18.           
  19.             float3 mc03 = tex2D (_MainTex, i.uv_MainTex-fixed2(2,-1)/_inten).rgb;  
  20.             float3 mc13 = tex2D (_MainTex, i.uv_MainTex-fixed2(1,-1)/_inten).rgb;  
  21.             float3 mc23 = tex2D (_MainTex, i.uv_MainTex-fixed2(0,-1)/_inten).rgb;  
  22.             float3 mc33 = tex2D (_MainTex, i.uv_MainTex-fixed2(-1,-1)/_inten).rgb;  
  23.             float3 mc43 = tex2D (_MainTex, i.uv_MainTex-fixed2(-2,-1)/_inten).rgb;  
  24.   
  25.             float3 mc04 = tex2D (_MainTex, i.uv_MainTex-fixed2(2,-2)/_inten).rgb;  
  26.             float3 mc14 = tex2D (_MainTex, i.uv_MainTex-fixed2(1,-2)/_inten).rgb;  
  27.             float3 mc24 = tex2D (_MainTex, i.uv_MainTex-fixed2(0,-2)/_inten).rgb;  
  28.             float3 mc34 = tex2D (_MainTex, i.uv_MainTex-fixed2(-1,-2)/_inten).rgb;  
  29.             float3 mc44 = tex2D (_MainTex, i.uv_MainTex-fixed2(-2,-2)/_inten).rgb;  
  30.             float3 c=0;  
  31. c+=(mc00+mc40+mc04+mc44);//4  
  32. c+=4*(mc10+mc30+mc14+mc34+mc01+mc41+mc03+mc43);//16  
  33. c+=7*(mc20+mc24+mc02+mc42);//16  
  34. c+=16*(mc11+mc13+mc03+mc33);//32  
  35. c+=26*(mc21+mc23+mc12+mc32);//64  
  36. c+=41*mc22mc;//32  
  37. c/=273;  

<span style="font-family:Microsoft YaHei;font-size:14px;">            float3 mc00 = tex2D (_MainTex, i.uv_MainTex-fixed2(2,2)/_inten).rgb;
            float3 mc10 = tex2D (_MainTex, i.uv_MainTex-fixed2(1,2)/_inten).rgb;
            float3 mc20 = tex2D (_MainTex, i.uv_MainTex-fixed2(0,2)/_inten).rgb;
            float3 mc30 = tex2D (_MainTex, i.uv_MainTex-fixed2(-1,2)/_inten).rgb;
            float3 mc40 = tex2D (_MainTex, i.uv_MainTex-fixed2(-2,2)/_inten).rgb;

        float3 mc01 = tex2D (_MainTex, i.uv_MainTex-fixed2(2,1)/_inten).rgb;
        float3 mc11 = tex2D (_MainTex, i.uv_MainTex-fixed2(1,1)/_inten).rgb;
        float3 mc21 = tex2D (_MainTex, i.uv_MainTex-fixed2(0,1)/_inten).rgb;
        float3 mc31 = tex2D (_MainTex, i.uv_MainTex-fixed2(-1,1)/_inten).rgb;
        float3 mc41 = tex2D (_MainTex, i.uv_MainTex-fixed2(-2,1)/_inten).rgb;

        float3 mc02 = tex2D (_MainTex, i.uv_MainTex-fixed2(2,0)/_inten).rgb;
        float3 mc12 = tex2D (_MainTex, i.uv_MainTex-fixed2(1,0)/_inten).rgb;
        float3 mc22mc = tex2D (_MainTex, i.uv_MainTex).rgb;
        float3 mc32 = tex2D (_MainTex, i.uv_MainTex-fixed2(-1,0)/_inten).rgb;
        float3 mc42 = tex2D (_MainTex, i.uv_MainTex-fixed2(-2,0)/_inten).rgb;

        float3 mc03 = tex2D (_MainTex, i.uv_MainTex-fixed2(2,-1)/_inten).rgb;
        float3 mc13 = tex2D (_MainTex, i.uv_MainTex-fixed2(1,-1)/_inten).rgb;
        float3 mc23 = tex2D (_MainTex, i.uv_MainTex-fixed2(0,-1)/_inten).rgb;
        float3 mc33 = tex2D (_MainTex, i.uv_MainTex-fixed2(-1,-1)/_inten).rgb;
        float3 mc43 = tex2D (_MainTex, i.uv_MainTex-fixed2(-2,-1)/_inten).rgb;

        float3 mc04 = tex2D (_MainTex, i.uv_MainTex-fixed2(2,-2)/_inten).rgb;
        float3 mc14 = tex2D (_MainTex, i.uv_MainTex-fixed2(1,-2)/_inten).rgb;
        float3 mc24 = tex2D (_MainTex, i.uv_MainTex-fixed2(0,-2)/_inten).rgb;
        float3 mc34 = tex2D (_MainTex, i.uv_MainTex-fixed2(-1,-2)/_inten).rgb;
        float3 mc44 = tex2D (_MainTex, i.uv_MainTex-fixed2(-2,-2)/_inten).rgb;
        float3 c=0;

c+=(mc00+mc40+mc04+mc44);//4
c+=4*(mc10+mc30+mc14+mc34+mc01+mc41+mc03+mc43);//16
c+=7*(mc20+mc24+mc02+mc42);//16
c+=16*(mc11+mc13+mc03+mc33);//32
c+=26*(mc21+mc23+mc12+mc32);//64
c+=41*mc22mc;//32
c/=273;</span>


_inten为模糊程度


觉得冗长麻烦也可用for循环代替。


然后我们要取其中的亮色部分与原有图像混合,
这一部分直接调用unity内部函数Luminance函数求出亮度,把它与模糊的图像相乘,暗色部分自然消除
但如果直接相乘就会在暗色的边缘产生不自然的黑影,就是把暗色也“泛光了”,为此我们不让Luminance后的值为0,再加上0.1,也不影响亮度。
  1. float lum = Luminance(c);  
  2. c = mc22mc + c * (lum+0.1) * _Lum;  
  3. return float4(c,1);  

<span style="font-family:Microsoft YaHei;font-size:14px;">            float lum = Luminance(c);
            c = mc22mc + c * (lum+0.1) * _Lum;
            return float4(c,1);</span>



最终与HDR结合再一起就是上图例子的最终效果



最后一道工序就是放入相机中,我们建立一个c#并负责传值

代码如下:


[csharp] view plain copy print ?
  1. using UnityEngine;  
  2. using System.Collections;  
  3. [ExecuteInEditMode]  
  4. public class HDRGlow : MonoBehaviour {  
  5.     #region Variables  
  6.     public Shader curShader;  
  7.     private Material curMaterial;  
  8.     public float exp = 0.4f;  
  9.     public float bm = 0.4f;  
  10.     public int inten = 512;  
  11.     public float lum = 1f;  
  12.     #endregion  
  13.  
  14.     #region Properties  
  15.     Material material  
  16.     {  
  17.         get  
  18.         {  
  19.             if (curMaterial == null)  
  20.             {  
  21.                 curMaterial = new Material(curShader);  
  22.                 curMaterial.hideFlags = HideFlags.HideAndDontSave;  
  23.             }  
  24.             return curMaterial;  
  25.         }  
  26.     }  
  27.     #endregion  
  28.   
  29.     void Start()  
  30.     {  
  31.         if (!SystemInfo.supportsImageEffects)  
  32.         {  
  33.             enabled = false;  
  34.             return;  
  35.         }  
  36.   
  37.         if (!curShader && !curShader.isSupported)  
  38.         {  
  39.             enabled = false;  
  40.         }  
  41.     }  
  42.   
  43.     void OnRenderImage(RenderTexture sourceTexture, RenderTexture destTexture)  
  44.     {  
  45.         if (curShader != null)  
  46.         {  
  47.             material.SetFloat("_Exp", exp);  
  48.             material.SetFloat("_BM", bm);  
  49.             material.SetFloat("_Inten", inten);  
  50.             material.SetFloat("_Lum", lum);  
  51.             Graphics.Blit(sourceTexture, destTexture, material);  
  52.         }  
  53.         else  
  54.         {  
  55.             Graphics.Blit(sourceTexture, destTexture);  
  56.         }  
  57.     }  
  58.     void OnDisable()  
  59.     {  
  60.         if (curMaterial)  
  61.         {  
  62.             DestroyImmediate(curMaterial);  
  63.         }  
  64.     }  
  65. }  
<span style="font-family:Microsoft YaHei;font-size:14px;">using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
public class HDRGlow : MonoBehaviour {
    #region Variables
    public Shader curShader;
    private Material curMaterial;
    public float exp = 0.4f;
    public float bm = 0.4f;
    public int inten = 512;
    public float lum = 1f;
    #endregion

#region Properties
Material material
{
    get
    {
        if (curMaterial == null)
        {
            curMaterial = new Material(curShader);
            curMaterial.hideFlags = HideFlags.HideAndDontSave;
        }
        return curMaterial;
    }
}
#endregion

void Start()
{
    if (!SystemInfo.supportsImageEffects)
    {
        enabled = false;
        return;
    }

    if (!curShader &amp;&amp; !curShader.isSupported)
    {
        enabled = false;
    }
}

void OnRenderImage(RenderTexture sourceTexture, RenderTexture destTexture)
{
    if (curShader != null)
    {
        material.SetFloat(&quot;_Exp&quot;, exp);
        material.SetFloat(&quot;_BM&quot;, bm);
        material.SetFloat(&quot;_Inten&quot;, inten);
        material.SetFloat(&quot;_Lum&quot;, lum);
        Graphics.Blit(sourceTexture, destTexture, material);
    }
    else
    {
        Graphics.Blit(sourceTexture, destTexture);
    }
}
void OnDisable()
{
    if (curMaterial)
    {
        DestroyImmediate(curMaterial);
    }
}

}

</span>









Unity 的imageEffect有一个叫做BloomAndLensFlares

与本文的差别是多了色彩平衡和lens flare效果,可以试着再加上去


                                                        ——-  by wolf96 http://blog.csdn.net/wolf96

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity的HDR效果 的相关文章

  • [Unity XLua]热更新XLua入门(一)-基础篇

    Aladdin XLua 前言 前段时间腾讯开源了一个内部热更框架XLua在Unity开发群里引起一阵热议 也受到广大开发者的热捧 然后我当然也抱着好奇的心去学习学习 后面也会将扩展之后的工程放在git上 大家一起学习交流 在此感谢XLua
  • Unity中级客户端开发工程师的进阶之路

    上期UWA技能成长系统之 Unity高级客户端开发工程师的进阶之路 得到了很多Unity开发者的肯定 通过系统的学习 可以掌握游戏性能瓶颈定位的方法和常见的CPU GPU 内存相关的性能优化方法 UWA技能成长系统是UWA根据学员的职业发展
  • Unity 粒子特效、材质发光 HDR ShaderGraph图文教程[完成lit发光设置]

    效果如图 准备工作 在hdr模式下 关闭Directional Light 相机设置 移动球挂一个点光源作为子节点 设置自行调节 0 创建移动球的材质及shader shader gt 在Project Create Shader Grap
  • FBX导入Unity中模型没有材质的处理

    一 3dMax导出FBX时的注意事项 导出时 确保maps文件存在 里面放着fbx用到的image 二 在Unity中的设置 1 文件拖入Unity的Assets文件夹中 2 查看模型的材质是否存在 如下所示 材质为None 此时拖入sce
  • Unity3d 插件 系列——DoTweenPro介绍(图文详细+案例)

    Unity3d 插件 系列 DoTweenPro介绍 图文详细 案例 前言 一 DoTweenPro简介 二 DoTweenPro安装 三 DoTweenPro主要组件 1 DoTweenAnimation 2 DoTweenPath 3
  • Unity与Android的Back键冲突解决

    Unity与Android的Back键冲突解决 上一篇的最后留下了两个问题 Unity视图下横屏闪退 Unity视图下Android无法响应back返回上一activity 对于第一个问题 应该是Unity横屏下视图的某些设置跟Androi
  • GooglePlay提审警告(com.google.android.gms:play-services-safetynet:17.0.0)

    1 Goole在今年6月份出的新政策 不在使用safetynet 而使用Play Integrity API 2 项目本身没有使用过safetynet 3 使用了firebase 查阅资料 解决方案如下 implementation pla
  • 【IMGUI】 各种辅助类 EditorGUIUtility、EditorUtility、GUIUtility、GUILayoutUtility

    EditorGUIUtility class in Editor 继承自 GUIUtility EditorGUI 的各种辅助程序 EditorGUIUtility currentViewWidth 我尝试打印了下这个值和position
  • Unity 键盘控制人物移动——之输入方式代码的编写

    键盘输入 控制人物移动 在我们制作游戏中最常见的需求之一就是使用键盘移动游戏角色 那么我们首先需要获取键盘输入 以下提供两种方法获取键盘 这里尽量通过截图解释让大家理解代码的含义 GetInput void FixedUpdate Move
  • unity: C#的Action Event Delegate的异同

    目录 一 Action 二 Event 三 Action和Event区别 四 Delegate 总结 Action Event Delegate的异同 前言 Action Event和Delegate都是C 语言中的重要概念 分别用于管理函
  • Unity3d获得android和ios设备的唯一标识

    android为mac地址 ios为advertisingIdentifier 函数都比较简单 网上也搜得到 我也就不多说了 主要是对于我们没做过安卓和IOS开发的人来说 整合进工程有各种的问题 我也就直接上网盘了点击打开链接 代码包里看得
  • Unity打包WebGL的优化常用操作?

    1 贴图部分优化 如果贴图格式时2048 在不影响画面效果的情况下 改成1024或者5 12 还可以缩小包体 2 压缩和解压缩问题 WebGL打包的时候分三种压缩情况 gzip 比Brotli文件打 但打包快 http和https都支持 B
  • Mecanim Any State

    Any State表示任意状态 任意状态是 一个一直存在的特殊状态 他的存在是为了保证你在无意转移至某个你当前正处于的特殊状态而准备的 为你的状态机中的每个状态设置相同的对外转移是一个快捷的方式 假如有Walk Run Fly Die这四个
  • NO.6——Unity3D中两种绘制小地图的方法

    在玩游戏时 你经常会发现 在游戏窗口的右上角或者左下角通常会有一个小地图 里边实时反馈角色的移动信息甚至是世界地图 那么这个小地图是如何绘制的呢 我目前掌握了两种方法 一种是以GUI方法重新绘制一个小窗口 另一种是新建一个正交投影的摄像机机
  • unity实现鼠标右键控制视角

    主要实现的功能是相机跟随主角 鼠标右击移动后 相机的视角会旋转 思路 在主角里创建空的子物体 把相机绑在空物体上 通过旋转空物体来实现视角的旋转 要把相机调整到适当位置 代码如下 public float rotateSpeed 100 设
  • Unity3d中脚本无法编译问题(Monodevelop)

    使用Monodevelop打开脚本 编译时报错 具体错误忘记了 原因是 net框架引起 升级到 net框架4 5后解决
  • Unity万向节死锁解决方案(2023/12/4)

    1 万向节死锁无法解决 这是因为它的特性就是如此 就像玻璃杯就是玻璃 这不可否认 别钻牛角尖昂 2 大多数情况下欧拉角足够用 例如 CF 摄像机不可能绕z轴旋转 x轴旋转也不会超过九十度 因为那样人物的腰子会被扭断 塔防游戏 保卫萝卜 吃鸡
  • 【转载】【Unity】WebSocket通信

    1 前言 Unity客户端常用的与服务器通信的方式有socket http webSocket 本文主要实现一个简单的WebSocket通信案例 包含客户端 服务器 实现了两端的通信以及客户端向服务器发送关闭连接请求的功能 实现上没有使用U
  • U3D游戏开发中摇杆的制作(NGUI版)

    在PC端模拟摇杆 实现控制摇杆让玩家或者物体移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine public clas
  • 游戏开发之常见操作梳理——武器装备商店系统(NGUI版)

    游戏开发中经常出现武器商店 接下来为你们带来武器装备商店系统的具体解决办法 后续出UGUI Json版本 敬请期待 武器道具的具体逻辑 using System Collections using System Collections Ge

随机推荐

  • npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead. chang

    npm安装typescript报错 提示 这里简述项目相关背景 在vscode新建一个项目 想写ts 于是先准备安装typescript 不料 报错 原因分析 提示 这里填写问题的分析 主要原因发现应该是npm版本号的原因 解决方案 提示
  • html的block标签,html标签的block、inline分类总结分享

    块元素 block element m address 地址 blockquote 块引用 center 举中对齐块 dir 目录列表 p 常用块级容易 也是css layout的主要标签 dl 定义列表 fieldset form控制组
  • 【SEER数据库简介】

    一 SEER数据库简介 全称 Surveillance Epidemiology and End Results Program 网址 https seer cancer gov SEER 数据库所涉及的肿瘤被划分为9类 乳腺肿瘤 结肠与直
  • PieCloudDB Database:云原生分布式虚拟数仓的诞生之旅

    杭州拓数派科技发展有限公司 OpenPie 的旗舰产品 PieCloudDB Database 是一款云原生分布式虚拟数仓 PieCloudDB 通过多种创新性技术将物理数仓整合到云原生数据计算平台 PieCloudDB 可以动态创建虚拟数
  • VTK相机类vtkCamera原理及用法

    vtk是著名的开源三维渲染库 在三维渲染过程中的一个非常重要的内容就是相机即vtkCamera类的设置 在VTK中 相机的实质是一个观测点 VTK的官方Doc对vtkCamera写的十分简略 暗坑很多 在学习和使用vtkCamera的过程中
  • PostgreSQL报pg_dump: no matching tables were found错误

    刚导出表时 发现找不到这个表 但是表是存在的 所以找了一圈 发现是要加 才行 例如 T TABLES
  • python中input()和raw_input()的区别

    两者均是python的内置函数 通过读取控制台的输入与用户实现交互 raw input 将所有输入作为字符串看待 不管用户输入什么类型的都会转变成字符串 raw的含义就是 生的 未加工的 gt gt gt s1 raw input abc
  • Cadence学习篇(1) Cadence原理图工程以及原理图库的创建

    文章目录 前言 一 创建原理图库 1 1新建工程 1 2 设置原理图板框 1 3 设置原理图栅格 二 添加多个原理图 2 1 原理图重命名 2 2 原理图编页码 三 放置元器件 3 1 添加库 3 2 连线 四 保存工程文件 4 1 新建原
  • Larave5.7使用Mailable发送邮件

    现在很多网站都有发送邮件验证身份的功能 所以介绍一下Laravel中邮件发送的方法 Laravel框架中为我们绑定了Mailable服务 我们只需要配置好参数 然后使用该服务即可 配置邮件服务器 我们发送邮件需要有一个stmp服务器 现在有
  • Sublime实现自动排版

    sublime功能很强大 但是使用sublime就可以实现代码自动重新缩进 使代码缩进重排 方法 Ctrl A选中全部内容 然后在菜单中选择Edit gt Line gt Reindent
  • 苹果发布AirTag新固件更新:增加了反跟踪增强功能

    Apple今天发布了专为AirTags设计的1 0 27 固件的新版本 这是对 6 月份提供的更新的修订 新的 AirTags 1 0 276 固件的内部版本号为 1A287b 而旧固件的内部版本号为 1A276d 6 月份发布的 1 0
  • k8s dashboard 报错 Error: 'dial tcp 172.168.56.2:9090: getsockopt: connection refused'

    访问web http 192 168 56 101 8080 ui Error dial tcp 172 17 26 2 9090 getsockopt connection refused 排查方法 1 需要检查apiserver的地址设
  • hive多窗口遇到java.sql.SQLException 异常

    hive多窗口遇到java sql SQLException 异常 多打开一个客户端窗口启动 hive 会产生 java sql SQLException 异常 文章目录 hive多窗口遇到java sql SQLException 异常
  • 【沉浸式腾讯云服务器部署安装docker】

    重置密码 sudo passwd root lighthouse VM 12 2 centos sudo passwd root Changing password for user root New password Retype new
  • asp.net zero 8.2 学习-11-Metronic替换google字体,加速网页加载速度

    asp net zero 8 2使用的前端模板是Metronic6 0以上版本 官网的Metronic下载下来 打开很慢主要是加载googole字体耗费时间 这是我之前写的如何在Metronic中替换google字体 Metronic是一款
  • 使用STM32F4XX自带数学库“arm_math.h“

    使用STM32F4XX自带数学库 arm math h STM32 F4属于Cortex M4F构架 这与M0 M3的最大不同就是具有FPU 浮点运算单元 支持浮点指令集 因此在处理数学运算时能比M0 M3高出数十倍甚至上百倍的性能 但是要
  • 什么是低信噪比图像及处理方法

    信号处理领域的信噪比即SNR Singal to Noise Ration 又称讯噪比 即放大器的输出信号的电压与同时输出的噪声电压的比 常常用分贝数表示 设备的信噪比越高表明它产生的杂音越少 一般来说 信噪比越大 说明混在信号里的噪声越小
  • python (一维、二维)列表的初始化

    一维列表的初始化 初始一个长度为5的列表 方式1 a 0 5 0 0 0 0 0 方式2 a 0 for in range 5 0 0 0 0 0 二维列表的初始化 初始一个2 5的列表 方式1 b 0 5 for in range 2 0
  • Hibernate环境搭建(小实例)

    Hibernate是一个开源的对象关系映射框架 在学习之前 首先让我们先了解一下Hibernate环境是如何搭建的 废话不多说 直接进入正题 建项目 引Jar包 首先 我们需要创建一个Java项目 创建好项目之后 就需要引入与Hiberna
  • unity的HDR效果

    http blog csdn net wolf96 article details 44057915 文章开始先放两组效果 文章结尾再放两组效果 本文测试场景资源来自浅墨大神 shader效果为本文效果 HDR 人们有限的视觉系统 只支持1