首页 > 其他分享 >2.5 BUMP图改进

2.5 BUMP图改进

时间:2023-08-07 12:35:26浏览次数:43  
标签:贴图 法线 映射 BUMP Mapping 切线 改进 2.5 视差


一、Bump Mapping介绍

凹凸贴图映射技术是对物体表面贴图进行变化然后进行光计算的一种技术。例如给法线分量添加噪音,或者在一个保护扰动值的纹理图中进行查找。这是一个提升物理真实感的有效方法,但却不需要额外的提升物体的几何复杂度。这种法式在提升物体表面的细节或者表面的不规则性方面有显著效果。

 

2.5 BUMP图改进_移动平台

Bump Mapping分类

法线映射、视差映射、浮雕映射。这几种方法或者贴图。都是广泛的被使用,来增加模型的细节效果,或者用来做特殊的画面表现效果。

最常用的是法线映射,一般的增加法线贴图后,会对局部的物体表面进行法线扰动,进而改变明暗关系,从而达到增加表面细节的效果。

2.5 BUMP图改进_二分查找_02

2.5 BUMP图改进_贴图_03

2.5 BUMP图改进_游戏_04

2.5 BUMP图改进_贴图_05

albedo normal height


二、Normal Mapping(法线映射)

Normal Map是一张存在有物体局部表面法线信息的一张贴图。再计算光照的时候,程序会读取法线图,并获取到当前像素点的法线信息,结合光线信息进行光照计算。使用法线贴图计算光照,可以让物体表现出更加丰富的细节,并随着光照方向的变换实时变化。这是普通纹理贴图不能表现出的。

法线贴图一般由高模映射到对应的低模上来生成。但像金属、木头等这些细节丰富的物体,可借助程序化的软件:PhotoShop,Substance Designer等生成对应法线贴图。

2.5 BUMP图改进_移动平台_06

2.5 BUMP图改进_贴图_07

2.5 BUMP图改进_游戏_08

1.切线空间

法线的存储,一般会放到模型的切线空间中。切线口空间是以物体表面的切线,副切线和法线组成的几何空间。

当我们计算光照时,需要把光照运算的响亮放到统一坐标系下。读取切线空间法线,需要世界坐标转切线空间的转换矩阵或切线空间住按世界空间的转换矩阵,将向量统一到同一坐标系后再进行光照操作。

2.5 BUMP图改进_移动平台_09

2.5 BUMP图改进_移动平台_10

2.世界和切线空间转换

将世界坐标系下的定点发现(Normal)和切线(Tangent)以及副切线(Bitangent)作为切线空间坐标系的正交基。并用这三个向量的标准正交基来构建转换矩阵。对应关系为法线作为Z轴,切线作为X轴,副切线作为Y轴。

构建一个3*3的矩阵来做空间向量的坐标系转换。一般的叫该矩阵为TBN矩阵。其逆矩阵就是从切线空间到世界空间的转换矩阵机位TBN-1,因为TBN为正交矩阵,所以其你矩阵为TBN的

2.5 BUMP图改进_游戏_11

2.5 BUMP图改进_贴图_12

3.Unity中法线贴图的压缩格式

在Unity中,非移动平台上,Unity会把法线贴图转换成DXRT5nm格式。这种格式只有两个有效通道GA通道,这样可以节省空间,而移动平台Unity使用传统的RGB通道。在DXRT5nm格式中,GA存储对应法线的x、y分量,z分量只需要通过一个简单的运算求得。

2.5 BUMP图改进_移动平台_13

2.5 BUMP图改进_二分查找_14


三、Parallax Mapping(视差映射)

法线映射虽然能展示较为逼真的模型表面细节,但毕竟法线映射只能改变法线进而改变光照,并不能让模型表面产生让人信服的遮挡效果。所以我们引入视差映射

Parallax Mapping是一种类似于法线映射的技术,但是原理不同,类似法线贴图,它是用以提高模型表面细节并赋予其遮挡关系的技术。并可以和法线贴图一起使用提供令人信服的逼真的效果。

视差映射同样引进一张新的贴图——高度图,高度图一般是座位顶点位移来使用的,但模型要包涵大量的三角形才能活得比较不错的效果,否则看起来会成块状。所以如何在有限的三角面上表示逼真的令人信服的效果,这就是视差映射技术。

视差映射技术的核心是改变纹理坐标,需要一张存储模型信息的高度图,利用模型表面高度信息来对纹理进行偏移。

2.5 BUMP图改进_游戏_15

视差映射主要是让平面看起来立体,和法线贴图一样是欺骗眼睛的做法。

我们制作的模型在一个三角面即切线空间系啊,所有点都位于切线和副切线组成的平面内(下图水平0.0点),但实际物体要有更多的丰富细节。如右图当计算我们当前视角的片元A时,真正应该计算的是视线与物体表面的实际交点,即B点。

如何计算B点,计算B点,我们就需要知道A、B两点在平面上uv偏差。这个其实是不太好计算的。不过可以近似的求解,并可以通过一个缩放值(scale)来控制。

d=v.xy * Ha * scale / v.z

2.5 BUMP图改进_游戏_16


四、Steep Parallax Mapping(陡峭视差映射)

视差映射往往是近似值,所及计算结果不是准确的。再次基础上想获得更加准确的结果就需要都切视差映射,陡峭时差也是一个近似的解,但相比于普通的视差映射要精确的多,效果表现上也更好。并且会对纹理坐标偏移进行合理性检查。

陡峭视差映射的基本思想是将深度分为等距的若干层,然后从最顶端开始采样,并且每次沿着视角方向偏移一定的值,若当前层的深度大雨采样出的深度,则等值检查并返回最后的结果。

2.5 BUMP图改进_游戏_17


五、Relief Mapping(浮雕映射)

浮雕映射,对比与视差映射,想要有更好更准确的表现效果,视差映射是不够的,使用更大的uv偏移,视差映射就会导致失真。于是引入浮雕映射,浮雕映射更容易提供更多的深度,还可以做自阴影以及闭塞效果。

2.5 BUMP图改进_游戏_18

浮雕映射一般采用射线步进,和二分查找来决定uv偏移量。

第一种使用射线步进来查找可能的交点,为什么不直接用二分查找。因为直接用二分查找可能会漏掉较薄的区域导致结果不准确。所以第一步,使用射线步进来确定交点位于哪个步进内。之后在该步进内使用二分查找,快速确定交点位置。最后返回结果,偏移贴图。

2.5 BUMP图改进_贴图_19

六、视差遮蔽映射(Parallax Occlusion Mapping, POM)

视差遮蔽映射(POM)是陡峭视差映射的另一个改进版本。浮雕视差映射用了二分搜索法来提升结果精度,但是搜索降低程序性能。视差遮蔽映射旨在比浮雕视差映射更好的性能下得到比陡峭视差映射更好的效果。但是POM的效果要比浮雕视差映射差一些。

视差遮蔽映射简单的对陡峭视差映射的结果进行插值。

视差遮蔽映射可以使用相对较少的采样次数产生很好的结果。但视差遮蔽映射比浮雕视差映射更容易跳过高度图中的小细节,也更容易在高度图数据产生大幅度的变化时得到错误的结果。

2.5 BUMP图改进_二分查找_20


作业

只有法线

2.5 BUMP图改进_二分查找_21

基于Blinn-Phong下的POM

2.5 BUMP图改进_移动平台_22

冰块

2.5 BUMP图改进_游戏_23

2.5 BUMP图改进_游戏_24

2.5 BUMP图改进_游戏_25

水面

2.5 BUMP图改进_二分查找_26

2.5 BUMP图改进_二分查找_27

标签:贴图,法线,映射,BUMP,Mapping,切线,改进,2.5,视差
From: https://blog.51cto.com/u_136836/6992468

相关文章

  • NVIDIA 535.86.05 Linux 图形驱动程序改进 Wayland 支持
    NVIDIA公司近日发布了适用于 Linux、FreeBSD和Solaris系统的NVIDIA535.86.05图形驱动程序,作为其生产分支的维护更新,解决了各种错误和问题。NVIDIA535.86.05是在NVIDIA535.54.03发布一个多月之后发布的,它通过解决在使用某些Wayland合成器时关闭连接的显示器时......
  • NVIDIA 535.86.05 Linux 图形驱动程序改进 Wayland 支持
    NVIDIA公司近日发布了适用于 Linux、FreeBSD和Solaris系统的NVIDIA535.86.05图形驱动程序,作为其生产分支的维护更新,解决了各种错误和问题。NVIDIA535.86.05是在NVIDIA535.54.03发布一个多月之后发布的,它通过解决在使用某些Wayland合成器时关闭连接的显示器时......
  • 一步一步实现若依框架--2.5匿名注解@Anonymous
     1实现绕过权限认证,可以直接访问某些接口。这些部分可以直接在SpringSecurity中的配置去写,也可以像这个主角这样给添加了注解的方法或类进行放行。原理:在springsecurity设置拦截前,获取到所有添加了该注解的请求,把这些请求添加到放开拦截的配置中。2实现a)新增注解(注解......
  • ChatGPT 助力开发人员改进代码的5个方式
    近年来,在软件开发中使用人工智能和机器学习变得越来越普遍。因此,开发人员开始转向像OpenAI的ChatGPT这样的工具来简化他们的工作,提高他们的工作效率。ChatGPT是一个由OpenAI训练的大型语言模型,本文将向您展示如何使用ChatGPT帮助开发人员完成从编码到文档和测试等各种任务。......
  • R语言改进关联规则挖掘Apriori在超市销售数据可视化
    全文链接:https://tecdat.cn/?p=33364原文出处:拓端数据部落公众号超市业已成为商业领域最具活力的商业业态,竞争也变得日益激烈。数据挖掘技术越来越多地服务于超市营销战略,本文在数据挖掘的基础上,深入分析了关联规则算法,研究算法的基本思想、算法的性质,并对算法进行详细的性能分......
  • MATLAB用改进K-Means(K-均值)聚类算法数据挖掘高校学生的期末考试成绩|附代码数据
    全文链接:http://tecdat.cn/?p=30832最近我们被客户要求撰写关于K-Means(K-均值)聚类算法的研究报告,包括一些图形和统计输出。本文首先阐明了聚类算法的基本概念,介绍了几种比较典型的聚类算法,然后重点阐述了K-均值算法的基本思想,对K-均值算法的优缺点做了分析,回顾了对K-均值改进......
  • 基于boost的聊天服务器改进(二)
    首先,基于上一节,我们将其改进成,一个io_services在多个线程中,来并发处理。通常server中只是监听accept,即读操作,不存在线程不安全的问题,而session中,一般会有socket的读写read/write,存在线程不安全的问题决处理session和room可能存在的线程不安全的问题其中chat_room中的join/leav......
  • 多连接的数据库管理工具Navicat Premium 16.2.5 Mac版
    NavicatPremium是一款多连接的数据库管理工具,它是一款免费的多通道、多连接程序,它支持企业和组织同时使用多个应用程序,在一个应用程序中运行多个数据库管理程序。使用Premium可以在同一应用程序中执行多个数据库程序。NavicatPremium可根据应用程序或Web服务之间的速度差异调......
  • DC2.5、DC2.1引脚定义
    DC2.5、DC2.1实物对应的引脚定义如下所示,电路结构符号如下所示,在未插入插头时,引脚2、引脚3,默认连接。在插入插头后,引脚2、引脚3断开;引脚1、引脚2与插头相连,若使用内正外负的插头,则引脚1为正极、引脚2为负极,引脚三断开 ......
  • 【结合业务需求给出合理的技术解决方案,改进现有模块功能,提高系统的可扩展性,封装性,稳定
    一、技术解决方案随着企业规模的扩大和业务量的增加,企业信息系统的可扩展性、封装性、稳定性等方面的要求越来越高。针对这些问题,我们可以采用以下技术解决方案:1.采用云计算技术云计算技术能够提供高度可扩展和可靠的基础设施,具有快速、弹性、高效的特点,可以大大提高系统的可扩......