首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

法线贴图

后来,聪明的游戏开发者想出了一种方法,就是在贴图过程中对贴图进行一定的处理,从而保证了在视角变换以后仍然保证有较为明显的凹凸效果,也就是法线贴图。...image.png 准确的说,法线贴图是Bump Mapping(凹凸贴图)的其中一种。第一个Bump Mapping由Blinn在1978年提出,目的是以低代价给予计算机几何体以更丰富的表面信息。...30年来,这项技术不断延展,尤其是计算机图形学成熟以后,相继出现了不少算法变体,法线贴图就是其中很重要的一种。...image.png 表示光线射向平面的角度时通常使用光线和该点法线角度来表示。这也就意味着,如果我们将一个贴图上所有点的法线记录起来的话,就不难再利用这些信息实现后期的假的凹凸效果了。...一条法线是一个三维向量,一个三维向量由x, y, z等3个分量组成,在法线贴图中,把(x, y, z)当作RGB3个颜色的值存储。 录这些法线的载体就被我们称为法线贴图。 image.png

1.6K10

灰度图,法线贴图,置换贴图和位移贴图

这种贴图是一种灰度图,用表面上灰度的变化来描述目标表面的凹凸,因此这种贴图是黑白的,如果节省空间的画,甚至可以把贴图的Alpha通道征用来用作Bump。...(不用多解释,大家知道法线是一个向量,向量有方向和长度两个概念,但是对法线来说,长度是不需要的)。...可是当我们尝试把一个任意的法线保存在一张纹理中的时候,会面临取负值的问题。因此我们要把法线做压缩。方法很简单,把XYZ每个轴上的法线投影长度进行N+1/2的运算。...这时我们的光照计算和以往有点不同,我们把表面的法线用NormalMap中存储的法线来替代。这样当我们在计算表面光照情况的时候,就会因为法线不断的变化而产生比原来丰富的多的明暗变化。...然后读取一张Bump贴图。根据表面的灰度确定高度。然后根据镶嵌所得到的多边形,沿着原先的表面法线方向移动微多边形。接着再为新的多边形确定好新的法线方向。此时,物体的表面确实已经真的增加出了细节。

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    28.opengl高级光照-法线贴图

    一、原理 1.1 为什么要用法线贴图 为了增加渲染的真实感,图片纹理对每个片段增加法线,渲染时根据不同的法线计算独立的光照效果。 ?...使用法线贴图 很明显,左边的图片就是硬邦邦的渲染上去,右边的图片增加了法线贴图,效果更好。很好理解,至少砖的缝隙中法线不是垂直墙面的,还有每一块砖的面并不是平的。 ?...法线是无规则变化的 1.2 法线贴图的基本使用 网上很多教程都是用了这张图,和之前的深度缓存类似,用一张图片缓存来存储法线,r g b分别代表法线向量的三个分量值。...法线贴图 得到法线后,计算光照夹角和普通的光照没有分别,还是分别计算环境光、漫反射、镜面反射等。 1.3 问题来了 ?...TBN矩阵向量 TBN矩阵, T 和 B分别与法线纹理贴图的x y 轴对齐(理论上其他的也可以,默认选择x y 轴对齐),N即法线纹理贴图的向上垂直向量。

    1.1K10

    Three.js - 走进3D的奇妙世界

    材质捕获:使用存储了光照和反射等信息的贴图,然后利用法线方向进行采样。优点是可以用很低的消耗来实现很多特殊风格的效果;缺点是仅对于固定相机视角的情况较好。...七、纹理 在生活中纯色的物体还是比较少的,更多的是有凹凸不平的纹路或图案的物体,要用Three.JS实现这些物体的效果,就需要使用到纹理贴图。...var material = new THREE.MeshPhongMaterial( { map: texture, bumpMap: bumpTexture } ); 7.4 法线纹理贴图...上图左下角的法线纹理图片的RGB值会影响每个像素片段的曲面法线,从而改变物体的光照效果。 使用方式的代码如下: // 纹理 var texture = loader.load( '..../metal.jpg'); // 法线纹理 var normalTexture = loader.load( '.

    8.4K20

    学界 | 用GAN自动生成法线贴图,让图形设计更轻松

    法线贴图(normal map)在学术研究和商业生产中都有至关重要作用。对于形状重建、表面编辑、纹理贴图和拟真表面渲染等很多图形应用而言,法线贴图非常重要。...在我们的系统中,素描到法线贴图生成问题被当作了一个图像转译问题——使用一个基于 GAN 的框架将素描图像「转译」成法线贴图图像。...为了做到这一点,我们提供了一个用户界面,让用户可以直接在输入素描中提供特定点的法线信息,从而引导法线贴图生成。这样的界面也能扩大法线贴图的设计选择范围。...我们提出的生成器网络将单张输入素描转换成法线贴图,其中仅使用很少或不使用用户干预。这里我们使用了 RGB 通道来表示 3D 法线分量。所生成的法线贴图可用于多种应用,比如重设表面光照、纹理贴图等。...我们将素描输入 (1) 和点掩模 (2) 连接起来作为生成器 G 的输入,以求取中间的法线贴图 (4);然后再将该中间法线贴图与素描和掩模一起作为鉴别器 D 的输入,以验证中间法线贴图 (4) 与基本真值

    1.8K90

    Three.js - 走进3D的奇妙世界

    材质捕获:使用存储了光照和反射等信息的贴图,然后利用法线方向进行采样。优点是可以用很低的消耗来实现很多特殊风格的效果;缺点是仅对于固定相机视角的情况较好。 下图是使用不同贴图实现的效果: ?...七、纹理 在生活中纯色的物体还是比较少的,更多的是有凹凸不平的纹路或图案的物体,要用Three.JS实现这些物体的效果,就需要使用到纹理贴图。...var material =  new THREE.MeshPhongMaterial( {     map: texture,     bumpMap: bumpTexture } ); 7.4 法线纹理贴图...上图左下角的法线纹理图片的RGB值会影响每个像素片段的曲面法线,从而改变物体的光照效果。 使用方式的代码如下: // 纹理 var texture = loader.load( '..../metal.jpg'); // 法线纹理 var normalTexture = loader.load( '.

    9.9K41

    谁还没有冰墩墩?速来领→

    思否的一位大佬 dragonir ,凭借高超的前端技术和建模技术,使用 Three.js + React 技术栈,自己创造了一个充满趣味和纪念意义的冬奥主题 3D 页面!...当然也可以直接使用 Three.js 自带平面网格加凹凸贴图也可以实现类似的效果。使用 Blender 自建模型的优点在于可以自由可视化地调整地面的起伏效果。...它的原始模型来源于这里,从这个网站免费现在模型后,原模型是使用 3D max 建的我发现并不能直接用在网页中,需要在 Blender 中转换模型格式,还需要调整调整模型的贴图法线,才能还原渲染图效果。...原模型: 冰墩墩贴图: 转换成Blender支持的模型,并在Blender中调整模型贴图法线、并添加贴图: 导出 glb 格式 在 Blender 中给模型添加贴图教程传送门:在Blender中怎么给模型贴图...Three.js 中,雨、雪、云、星辰 等生活中常见的粒子都可以使用 Points 来模拟实现。

    4.5K10

    探索VtKLoader源码中THREE.BufferGeometry的奥秘

    灵活性:BufferGeometry支持更多种类的几何数据,可以存储和处理更丰富的属性数据,如法线、颜色、UV等,同时还支持更多的顶点属性(如顶点色、法线等)。...一般来说,VTK文件中包含了诸如顶点坐标、法线、颜色、UV等属性数据,而BufferGeometry则负责将这些数据转换为THREE.js所支持的格式,并提供给渲染器进行绘制。...解析几何数据:解析VTK文件中的几何数据,包括顶点坐标、法线、颜色、UV等属性数据。...通过与着色器程序(Shader)的配合,可以实现各种特效,如法线贴图、环境光遮挡(Ambient Occlusion)、透明效果等。...功能扩展:增加更多种类的BufferAttribute,支持更丰富的几何数据和属性,如法线贴图、切线数据、颜色纹理等,提供更多样化的渲染效果和交互操作。

    17410

    3D to H5工作流应用手册

    Part 2 实践篇:基于three.js的实现性,提供场景、材质贴图的制作思路、以及gltf工作流,并动态讨论项目常常遇到的还原问题。...考虑到H5项目的实际应用场景,下表罗列了Three.js原生材质的对比,包含了材质特性优势、贴图差异及适用场景,大家可以基于项目需求快速选择并混合使用: three.js材质对比表 四、色彩描述与管理...而在大多数工作流及渲染软件中,大部分贴图资源都是默认输出sRGB的(设计师作图环境一般也在sRGB,所见即所得),而法线贴图、光线贴图等纹理(纯数值类纹理,只用于计算)又是Linear的,这个部分就需要我们根据渲染引擎本身的特性...在three.js中色彩管理的工作流会根据导入模型Asset的差异而有所不同,如果贴图与模型是分别导入场景,则建议可尝试以下流程: 1、输入贴图数据 sRGB to Linear: 含色彩的贴图(基础材质...,而原纯数值类贴图法线、凹凸等)仍旧保持Linear;这一操作可保证贴图输入数据的正确性与统一性。

    2.6K42

    「冰墩墩」代码,开源了!

    原文地址:https://segmentfault.com/a/1190000041363089 背景 本文使用 Three.js + React 技术栈,实现冬日和奥运元素,制作了一个充满趣味和纪念意义的冬奥主题...当然也可以只使用 Three.js 自带平面网格加凹凸贴图也可以实现类似的效果。 使用 Blender 自建模型的优点在于可以自由可视化地调整地面的起伏效果。...它的原始模型来源于这里: 从这个网站免费现在模型后,原模型是使用 3D max 建的我发现并不能直接用在网页中,需要在 Blender 中转换模型格式,还需要调整调整模型的贴图法线,才能还原渲染图效果...原模型: 冰墩墩贴图: 转换成 Blender 支持的模型,并在 Blender 中调整模型贴图法线、并添加贴图: 导出 glb 格式: 仔细观察冰墩墩 可以发现,它的外面有一层透明塑料或玻璃质感外壳....displacementBias[Float]:位移贴图在网格顶点上的偏移量。如果没有设置位移贴图,则不会应用此值。默认值为 0。

    4.5K40

    环境贴图_HDR高清环境贴图

    只好自己单独写篇环境贴图的文章,来小总结一下。 环境贴图(Environment Mapping)又叫反射贴图(Reflection Mapping),在曲面上对反射效果进行很好的的近似。...示意图如图所示: 所有的EM方法都从一束来自视点的射线出发,到反射体的一个点终止,然后这束光线以这个点处的法线为基准进行反射。...环境贴图近似假设进行反射的光源与物体都位于很远的位置,同时反射体不会反射自身。如果这些假设成立,就可以将反射体周围的环境看成围绕他的一个二维投影。...目前环境贴图应用的方法有Blinn和Newell方法、立方体贴图和球面贴图。具体的方法可以参考实时计算机图形学。...使用立方体贴图实现的效果如下: 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166900.html原文链接:https://javaforall.cn

    1.3K20

    点云法线

    我们给每个点一个线段来显示法线,线段的方向为法线方向,如下图所示。这种显示方法虽然简单,但是不方便查看法线的正确性。下面介绍的点云渲染,能更加直观的查看法线的正确性。...这时候法线能很好的区分正反面。法线的定向应该在扫描时就做好,如果后期来整体定向,薄板正反面的点法线就区分不开了。 法线贴图:下面两个图是一个人脸网格的UV展开,属于平面网格。...它们的区别在于法线信息,右图的法线继承了原始网格的法线,它使得平面网格也可以渲染出凹凸感。这个技巧常用于游戏场景的渲染,用低面片数的网格加上高质量的法线贴图信息,来增强模型的几何凹凸感。...---- 点云法线计算 点云采样于物体表面,物体表面的法线即为点云法线,故可先对物体表面的几何进行估计,即可计算出点云法线。一般可用低阶多项式曲面进行局部拟合,如左图所示。...---- 点云法线定向 点云法线经过上面介绍的PCA计算以后,还有一个问题是全局定向。法线有两个互为相反的方向。所谓全局定向,就是视觉上连续的一片点云法线方向要一致,片于片之间的定向也要视觉一致。

    2.4K21

    解剖 WebGL & Three.js 工作原理

    它同样是一段opengl es程序,模型看起来是什么质地(颜色、漫反射贴图等)、灯光等由片元着色器来计算。...4.3、WebGL的完整工作流程 至此,实质上,WebGL经历了如下处理流程: 1、准备数据阶段 在这个阶段,我们需要提供顶点坐标、索引(三角形绘制顺序)、uv(决定贴图坐标)、法线(决定光照效果),以及各种矩阵...五、three.js究竟做了什么? 我们知道,three.js帮我们完成了很多事情,但是它具体做了什么呢,他在整个流程中,扮演了什么角色呢?...实际上,上面所有步骤,three.js都帮我们完成了。 5.1.5、three.js顶点处理具体流程 所以有了,多次矩阵计算,多次坐标换算。three.js具体是怎么做的呢?...5.3、three.js完整的运行流程 当我们选择材质后,three.js会根据我们所选的材质,选择对应的顶点着色器和片元着色器。 three.js中已经内置了我们常用着色器。

    9.7K21
    领券