什么是法线贴图技术呢?这是一种用来实现3D效果的一种技术,要想理解这种技术还请您听我慢慢道来。
我们知道,在游戏中经常会有这样的情况,就是一个平面——这个平面在现实中并不是一个“平”面,例如砖墙的表面带有石质浮雕等等。这样的情况如果要求游戏开发人员将复杂的3D细节都做出来是不现实的,因为即使不计较在建模时候的复杂度,过多的3D细节也同样会大量消耗显示芯片的性能,让游戏根本没有可玩性。
如何利用贴图实现凹凸效果呢?可行的方法就是将这个平面用一个贴图覆盖,用贴图的纹理实现一定的凹凸效果。但是这种方法实现的效果并不是很好,因为如果视角一变化,看起来就会像一张简单的画有图案的平面了。后来,聪明的游戏开发者想出了一种方法,就是在贴图过程中对贴图进行一定的处理,从而保证了在视角变换以后仍然保证有较为明显的凹凸效果。
光与影,法线贴图技术的物理学基础
我们知道,人之所以能够对景物看出立体感的主要原因是因为人有两只眼睛。两只眼睛看的景象是不同的,所以人们才能分辨出立体感来。但是,由于电脑的屏幕是一个平面,分辨3D效果就只能靠光影效果来实现了。
举个简单的例子,这就像我们画素描的时候,为了不让一个球体看起来像是一个圆圈,必须让球体的一些区域是亮的,一些区域是暗的。而且从亮部转向暗部的时候是一个均匀的按照物理模型特点的过渡,这样画出来的球体才像个球体,电脑为我们绘制的过程也是一样。
因为有明暗,我们才能将平面理解成立体,基于这个道理,我们就不难理解可以通过贴图局部的亮暗变化来实现假的3D效果。换一种说法就是说我们可以通过在贴图上的局部做一些亮暗的变化来做到一种假的3D效果。
光照因角度不同而呈现不同的明暗。
那么如何实时的对贴图进行转换呢?如果要实现虚拟的光影变换,我们最起码需要知道在一个平面上真正的凹凸的情况,这样才能让显示芯片进行运算,生成一种假的凹凸的效果。
显然,记录真实的凹凸模型是得不偿失的——如果那样的话就没有任何意义了,我们需要用一种非常简单的方法来记录一个贴图的凹凸情况,于是就诞生了一种全新的方法,法线贴图技术。
接下来,我们再回到我们刚才谈到的法线贴图的话题上。法线贴图就是记录了一个需要进行光影变换的贴图上的各个点的凹凸情况的贴图,显示芯片根据这个贴图的内容,来实时的生成新的有过光影变化的贴图,从而实现立体效果。
那么,究竟是怎样利用法线贴图记录一个平面或者说是一个贴图的凹凸情况呢?我们知道,物体表面产生明暗变化的直接原因,就是光线照射角度的不同,光线垂直于平面的地方就亮,光线斜射到平面的地方就暗,光线照不到的地方就更暗(应该是黑色,但是由于环境光照所以不会有阴影是真正的黑色)。
借色彩之值存法线之向,巧妙的存储
学过初中物理的朋友一定还都记得,表示光线射向平面的角度时通常使用光线和该点法线角度来表示。这也就意味着,如果我们将一个贴图上所有点的法线记录起来的话,就不难再利用这些信息实现后期的假的凹凸效果了。
记录这些法线的载体就被我们称为法线贴图。为什么称之为贴图呢?我们知道,一条法线是一个三维向量,一个三维向量由X、Y、Z等3个分量组成,于是人们想出了一个聪明的方法,就是以这3个分量当作红绿蓝3个颜色的值存储,这样的话就生成一张新的贴图了,这就是法线贴图的来历。
采用色彩通道存储法线向量,法线贴图其实并不是真正的贴图,所以也不会直接贴到物体的表面,它所起的作用就是记录每个点上的法线的方向。所以这个贴图如果看起来也会比较诡异,经常呈现一种偏蓝紫色的样子。
分享到:
相关推荐
运用凹凸贴图可以实现例如海底,湖面 ,波浪等真实的一种模拟。
在这个“dx9凹凸贴图程序实例”中,我们将深入探讨如何在DirectX 9环境下实现凹凸贴图效果。 首先,我们需要理解DirectX 9的基本结构。在DirectX 9中,我们通常会创建一个IDirect3DDevice9对象来代表设备,这个设备...
### 使用CG进行凹凸贴图的关键知识点 #### 1. 凹凸贴图的基本概念 凹凸贴图(Bump Mapping)是一种计算机图形学技术,用于在不增加模型复杂度的情况下模拟表面细节,如粗糙、光滑或有纹理的外观。通过这种技术,...
在3D图形渲染领域,Unity Shader的浮雕凹凸贴图(BumpMap)和法线贴图(NormalMap)是两种重要的技术,用于提升模型表面的细节感和真实感。这两种贴图方法都用于模拟物体表面的微小不平,从而在视觉上增加深度和复杂...
在本项目中,“图形学-光照模型-凹凸贴图”是一个基于MFC(Microsoft Foundation Classes)框架实现的示例,它展示了如何利用C++进行图形渲染,特别是通过用户界面(UI)组件来控制光照模型和贴图效果。 MFC是微软...
一个小应用程序演示了 DirectX 10 下的阴影、凹凸贴图、抗锯齿和四元数相机。除了使用键盘和鼠标浏览场景外,还有一个旅程模式,其中相机会根据 Catmull -Rom 插值自动遍历控制点。此外,视图的方向遵循球面线性插值...
在3D图形编程中,凹凸贴图是一种增强模型表面细节的技术,它通过模拟表面的微小起伏来增加视觉深度和纹理的复杂性。在DirectX这个强大的游戏和图形应用程序接口(API)中,我们可以利用High-Level Shader Language ...
C#,图片分层(Layer Bitmap)绘制,反色、高斯模糊及凹凸贴图等处理的高速算法与源程序 对图像处理的过程中会遇到一些场景需要将图片反色,反色就是取像素的互补色,比如当前像素是0X00FFFF,对其取反色就是0...
凹凸贴图是一种使得物体光滑的表面看起来凹凸不平的计算机绘图技术.为了克服传统的快速凹凸贴图算法中光源位置不易控制等缺点,使用了不同的方法计算当前像素的值来模拟不同的光源位置,并根据像素距光源的距离来模拟...
这款软件的核心功能之一就是能够一键生成各种类型的贴图,包括法线贴图、凹凸贴图和置换贴图。法线贴图用于模拟物体表面的深度和细节,通过蓝色通道的信息让2D图像在3D环境中呈现出3D效果;凹凸贴图则利用灰度信息来...
该框架的目的是为复合凹凸贴图提供正确的统一方法,并适用于几乎每种可想象的凹凸贴图类型:切线空间法线贴图(包括使用多组纹理坐标时),高度图,对象空间法线贴图,3D凹凸贴图(例如三脚投影),投影贴花(盒子/...
这个工具可以用高模或者height map生成normal map,在cryengine中用的就是这个工具生成normalmap,可惜没有破解
### 实用且强大的今日GPU凹凸贴图技术 #### 摘要与介绍 本文《实用且强大的今日GPU凹凸贴图技术》由NVIDIA公司的Mark J. Kilgard撰写,详细介绍了利用现代图形处理器单元(Graphics Processing Unit, GPU)实现凹凸...
凹凸贴图是计算机图形领域中的一种技术,始于 70 年代末,至今已经有近 30 年的历史。NormalMap 是一种目前很流行的凹凸贴图技术,这种技术可以在游戏和新世代主机上运用。 Bump Mapping 是一种灰度图,它使用表面...
在3D图形渲染领域,法线贴图和凹凸贴图是至关重要的技术,它们能够为数字模型增加深度和纹理细节,使原本平滑的表面看起来更具真实感。"超级法线凹凸生成软件"正是这样一款专业工具,用于创建高质量的法线贴图和凹凸...
【超级法线凹凸生成软件.CrazyBumpUpgrade】是一款高效、用户友好的3D纹理制作工具,专门用于创建高质量的法线贴图和凹凸贴图。在3D建模和游戏开发领域,法线贴图和凹凸贴图是提升模型视觉效果的关键技术。它们能够...
凹凸贴图通过灰度图像提供表面的微小起伏信息,用于在3D空间中模拟物体表面的细节。只有在需要强调明显凹凸效果时,才会使用凹凸贴图,否则效果可能不明显。 次世代贴图的制作流程通常包括以下步骤: - 创建基础...
`边缘发光的凹凸材质.txt` 文件则可能提供了关于如何使用这个Shader的说明,包括如何将Shader应用于游戏对象,如何设置凹凸贴图和边缘发光的强度、颜色等参数,以及可能存在的注意事项和优化建议。 在实际应用中,...
Quixel nDo2是一款强大的PS法线插件,可以快捷地生成法线贴图,它提供多项微调参数,和预置参数模板,并且能以3D模式实时展示效果,是制作法线贴图的神器,各方面综合能力要比CrazyBump优秀得多! 安装方法: 1....
《Bump Mapping的原理及编程》一文深入探讨了纹理映射技术中的一种高级方法——凹凸贴图(Bump Mapping)的理论基础与实际应用,尤其聚焦于GLSL(OpenGL Shading Language)环境下的编程实现。凹凸贴图是一种在不...