随笔分类 - 图形学
摘要:网上关于万向锁的解释实在难以理解,摸索一番后有了比较直观的思考,记录如下: 在三维空间中表示旋转有4种方式:欧拉角,轴角旋转,旋转矩阵,四元数。 万向锁,是用欧拉角表示旋转时产生的一种问题,这个问题是可以解决的,只是很麻烦。 首先,欧拉角的旋转遵循一个顺序,比如x-y-z,y-x-z,x-y-x..
阅读全文
摘要:卷积的公式为 公式中包含1个f函数,1个g函数,f函数乘g函数再积分,便是卷积操作。 我们可以把f函数当做“生产力”,g函数当做“留存率”。随着时间t的变化,生产的东西越来越多,同时损耗也越来越大,公式里的x代表在某一时刻“积累”下来的存量。 举一个例子(这个例子更适合从事游戏行业的同学,其他例子可
阅读全文
摘要:【纹理采样】三角面映射到在屏幕上每一个像素,都在纹理上采样一个texel。核心方法:重心坐标。从obj文件可知三角面每个顶点在纹理上的uv值Va/Vb/Vc,三角面上任意点都可以表示成 αVa + βVb + γVc,而α/β/γ正是顶点对面三角形的面积比例(α+β+γ=1)。具体步骤:1.遍历三角
阅读全文
摘要:DrawCall:CPU指令,用来向GPU传输渲染数据和指令,在Unity叫SetPassCall CommandBuffer:缓存DrawCall RenderPass:一次渲染流,有时完成一帧渲染需要多次RenderPass(如阴影)每次执行RenderPass时,GPU会从CommandBuf
阅读全文
摘要:*为什么要引入齐次坐标? 缩放和旋转变换都可以用矩阵乘法的形式计算,而平移比较特殊,如果不增加维度,则必须用另外一种形式表示。 以二维为例,点和矩阵的表示都是二维的,无法用矩阵乘法的形式表示平移变换,因此需要加多一个维度,从二维变为三维。同理,三维的矩阵需要增加第4维。 *齐次坐标的表示方法? 对于
阅读全文
摘要:BRDF全程是双向反射分布函数(Bidirectional Reflectance Distribution Function,BRDF),反应了物体表面对光的反射程度。 这刚好是属于材质的一种重要属性,当然除了反射属性,材质还包含折射属性(跟反射一起合称BSDF)。 因此我们基本可以认为,材质==
阅读全文
摘要:在屏幕上呈现的三维物体的明暗和颜色,会受场景的光照的影响,如何计算这些光照造成的明暗颜色呢?一般来说有三种方法: 一、基于光栅化的经验模型 基于经验,我们发现一个物体上的光照,似乎可以分成3种:漫反射、高光、环境光,我们把这3种光线分别计算出来,再叠加在一起。如经典的布林-冯着色模型: 漫反射计算:
阅读全文
摘要:路径追踪是一种光线追踪方法,原理是: 从视点向像素点发出若干直线,这些直线会碰撞到光源或者物体,如果碰撞光源,得到能量L;如果到物体,从碰撞点继续发出一条直线(模拟光线反弹),收集到能力O。如此循环,直到没有碰到光源或物体。把所有的能量L和O积分,即得到这个像素的总能量。 先说最终最优的表达式和伪代
阅读全文
摘要:一般场景中的模型都是由三角形构成的,且数量非常多;同样用光线追踪的方式计算着色,由于光线会经过反射、折射等,光线的数量也非常多。 那么,如果简单粗暴的遍历计算所有的光线与所有三角形是否相交,计算量将大得惊人。 于是人们想到用空间划分的方式解决这个难题,即把整个场景空间划分成很多区域,先计算光线是否与
阅读全文
摘要:在空间中,曲线有重要的作用,例如可以在空间中定义一条曲线,摄像机或者物体沿着曲线运动;另外字体可以用曲线来表示,也成矢量,这样字体无论拉多大都不会出现锯齿。 做一条曲线的方法,比较广为人知的是贝塞尔曲线,在PS之类的软件经常用到。 贝塞尔曲线的表示方法 贝塞尔认为,用N个点(N≥3),可以表示一条唯
阅读全文
摘要:着色英文名叫shading,在韦氏字典里的意思表达的是一个物体的明暗和颜色,在图形学中有特殊的含义,即:将材质应用于对象的过程。 shading有很多种方式,这里介绍其中一种比较简单的,叫Blinn-Phong 反射模型。 我们知道,人的眼睛能看到物体表面的明暗和颜色,是因为光射到了物体上,然后反射
阅读全文
摘要:图形渲染的两个重要过程是变换和着色。 整个过程可以理解为画一张肖像画,变换 = 模特摆pose +画家调整远近和观测角度,着色 = 在(大大小小不同的)画纸上勾勒出轮廓 + 上颜色。 可以发现,前面部分变换总是处理三维空间相关的问题,后面部分着色则总是处理二维平面相关的问题。两者衔接的过程,需要把三
阅读全文
摘要:首先讲讲图形学为什么需要用到矩阵。首先,图形学/渲染要做的事情,概括起来无非两点:变换和上色。这里只说变换。一句话解释变换,就是一个模型,经过各种旋转、移动、扭曲、拉伸、缩放....后,还能“正确”的显示在屏幕上。展开来说,变换包括:1模型变换、2视图变换、3投影变换、4视口变换。1.模型变换:模型
阅读全文
摘要:前提:一个图在直角坐标系上的所有点,都是从原点(0, 0, 0)开始。 以二维为例,所有的矩阵变换,都可以表示成 x` = ax + by, y` = cx + dy. 这种表示方法的原理和背后的意义,见 《图形学中的矩阵是什么,为什么长得这么奇怪?》 缩放矩阵 的推导 如图所示,所谓缩放,即一个图
阅读全文