博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于图形学的那些让人迷惑的入门概念
阅读量:5813 次
发布时间:2019-06-18

本文共 1626 字,大约阅读时间需要 5 分钟。

断断续续的也学了一些图形学和3D渲染的知识,出于对游戏的喜欢吧。

因为有一些知识是,我当时不明白,后来突然焕然大悟的,我觉得可以写出来,分享一下。大神略过。

管线?流水线

英文单词是pipeline,可以翻译成管道、管线。但是管线,这个根本不形象,甚至误导。“渲染管线”,难道是拿笔 去画一个管子?直到我看了这个单词,之前都是看中文,这个单词还可以翻译成流水线。“渲染管线”实际是指像工厂的流水线那样一套流程下来,把定点数据变成屏幕上的像素的一套流程。或者说,它想说的是流程,抓住**“Render Pipeline”这个东西的本质是一套流程**。

UV

可乐的瓶子上有一层纸,就是那层油纸,一般饮料瓶上都有。这个纸它是二维的,而瓶子是三维的,但是,这是重点,当它们贴在一起的时候,对于瓶子上的某一点,它在纸上都有一个对应的点。

那么是不是对于任何形状的物体,我们都可以找到一张纸,可以很完美的贴到它的表面上?这个我无法确定,但可以用来理解概念,就假设真的有。假如这张纸是粘性的,可以把物体表面的点粘下来,那么把这张纸再张开成二维的,那么原本在物体表面上的点都被展开到了二维平面里,那么在这个二维的平面里就有另一套坐标系统,这个坐标就是UV。

UV有什么用?假设有一个三维物体表面的点A,它的UV坐标是(u,v),然后我给你一张图片,你按这个坐标去图片里去点,然后把这个点的颜色涂到三维物体表面的这个点A上,那么结果是什么?

想象瓶子的表面上每个点,都射出一条线,线的另一端连接到图片上他们对应的UV坐标上。然后这些线逐渐的缩短,最终,是不是这个图片就被贴到了三维物体表面上的?!

这个图就是纹理(texture)

  • 有了UV坐标,就可以把任意二维图片贴到三维物体上,所以你建模的时候,建一个空白的,然后你想要什么表面就要什么。所以“皮肤”就是这么来的。
  • UV还有一个大用处,就是动画?想象可乐瓶上的包装纸被转动时候的情况,其实就是每个点的UV同步调的发生改变。比如水面效果,先给一个水的波纹图片,然后把这个波纹图片不断的移动,看起来就像水面不断的起伏。而这个波纹图片的移动,就是不断随时间调整物体上点的UV左边。

这些东西,下个Unity,建个胶囊,搞个贴图,拖一拖UV就有直观的感觉。

法线贴图

  • 首先光照模型里要用到法线,比如漫反射模型
I_diff = K_d * ambient+ K_d * light* dot (Normal,lightDir);复制代码

K_d 是反射系数,ambient 是环境光,light是光照,Normal是法线方向,lightDir光照方向 从公式里可以看出:法线可以影响光照。

假如有一个平面A,那么它的光是均匀的,然后有另一个平面B是凹凸不平的,当我在计算A的光照的时候,我用B的法线数据,那么计算出来是什么结果?那就是把平面A掰成B那样凹凸不平的结果,是不是?

进一步,我把B的法线用一张图记下来,然后计算A的时候用这张图,那么A就拥有了B的表面光照特征。而这张图就是法线贴图。

怎么用图记下来?普通图片是什么,每个点是RGB(当然也有其他颜色空间的)的 数据,而法线是一个向量,刚好也是3个分量(xyz),那么正好把xyz存到RGB里去。那么我们得到了一张图,而这个图里每个颜色信息实际是法线信息。

然后是为什么要这么干? 假如游戏里有一堵墙,墙上是凹凸不平的砖块,要么建模的时候就是这样的,那就要费力气了,也可以实际这个墙是个极其光滑的平面,然后用一个砖块墙面的法线贴图来计算的它的光照,它就有了凹凸不平的效果。这样:1.我想换其他效果,一张图的事 2. 省去了建模的工作

打个比喻:你在一张白纸上画了一个极其逼真的坑,那个坑存在吗?不存在。你看上去是一个坑吗?是。什么地方出了问题:光照!

这个东西,追根溯源,其实就是这本身是一个操纵眼睛的技术。而性能是永远不嫌多的,能省则省,所以就有了很多的模拟

转载地址:http://uajbx.baihongyu.com/

你可能感兴趣的文章
思科分发列表过滤路由(RIP)动态路由协议篇
查看>>
可登录的用户数量是1.6万个,软件的性能得到充分的考验
查看>>
[实战]MVC5+EF6+MySql企业网盘实战(23)——文档列表
查看>>
[译] ES2018(ES9)的新特性
查看>>
Java生成-zipf分布的数据集(自定义倾斜度,用作spark data skew测试)
查看>>
正则与sed,grep,awk三剑客
查看>>
诊断一句SQL不走索引的原因
查看>>
Linux pipe函数
查看>>
图片标注工具LabelImg使用教程
查看>>
(原創) 如何設計一個數位相框? (SOC) (Quartus II) (SOPC Builder) (Nios II) (TRDB-LTM) (DE2-70)...
查看>>
/etc/profile文件内容
查看>>
量词 匹配优先与忽略优先
查看>>
一页纸IT项目管理:大道至简的实用管理沟通工具
查看>>
汽车知识:车内异味的清除方法
查看>>
IE6 7下绝对定位引发浮动元素神秘消失
查看>>
浏览器的回流和重绘及其优化方式
查看>>
Eclipse基金会发布Eclipse Photon IDE
查看>>
jQuery选择器和事件
查看>>
2.4 salt grains与pillar jinja的模板
查看>>
VDI序曲二十 桌面虚拟化和RemoteApp集成到SharePoint 2010里
查看>>