ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Games101 计算机图形学课程笔记: Lecture 10 Geometry 1 (Introduction)

2021-03-26 13:29:09  阅读:207  来源: 互联网

标签:贴图 10 法线 Geometry 物体 图形学 纹理 几何 隐式


目录

Applications of Textures

纹理就是存储在GPU上的一块内存数据,可以对这块数据做区域查询。

Environment Map

一个光滑的表面会反射环境光,因此可以看到球面上映射出其他物体:

可以使用Spherical Environment Map,将环境信息记录在球面上,同时包含球面与二维平面的映射。

这种方法会有一个问题,即映射到二维平面会导致扭曲:

可以将信息记录在一个立方体上,这个立方体是原来球的包围盒。

凹凸贴图

纹理可以影响渲染效果。
以下这种效果可以使用法线贴图来实现,将每个点的法线通过纹理进行改变,这样就会导致光的亮度的变换,像素之间有了明暗变换,可以实现凹凸感。

这种方法不改变几何信息,不会划分平面生成更多三角形。使用Bump Mapping技术实现。
黑色表示真实物体的表面,黄色是扰动后的结果,p点的法线经过扰动发生了改变。

在一维情况下,假设点位P,P原始法线向上,即 n ( p ) = ( 0 , 1 ) n(p)=(0,1) n(p)=(0,1),蓝色曲线表示法线贴图,P点(假设P点会朝切线方向运动)横向移动一个单位后,向上会移动dp,切线方向位该点梯度,由梯度计算公式可得, d p = c [ h ( p + 1 ) − h ( p ) ] dp=c[h(p+1)−h(p)] dp=c[h(p+1)−h(p)] , 其中c为一个常量,所以切线可表示为(1,dp)。
已知切线,法线与其垂直,将切线逆时针旋转90°可得,最终法线为 n = ( − d p , 1 ) . n o r m a l i z e s ( ) n = (-dp, 1).normalizes() n=(−dp,1).normalizes()。

在三维情况下,由u,v两个方向。
同样假设法线朝上,即和假设这个法线是基于局部坐标系构建的。

位移贴图

位移贴图对每个三角形顶点进行改变。以下是两种贴图地不同结果:

  • 左图是法线贴图,没有改变物体形状,整体还是圆形且影子是光滑的球体,所以这是一种假象。
  • 右图是位移贴图,真实改变了物体mesh的形状,影子也是凹凸状的。

位移贴图更真实,但是计算量大。
一种权衡的方法是将两者结合使用,首先用法线贴图构建出一个较粗糙的效果,然后基于粗糙的效果将三角形划分的更小。

三维纹理

三维纹理就是除了物体表面有纹理,物体内部也是有纹理的,而内部的纹理通常是通过生成某种三维噪声然后再做处理得到的。
比如下图示展示的Perlin noise(柏林噪声),可得到大理石纹理的效果。

还有一种三维纹理应用于医学方面,volume rendering(体渲染)。

几何

几何有两种表示方式:隐式和显示。

隐式表示

Algebraic Surfaces

将该几何的点满足的关系表示出来,通过这种关系构建几何。

只要满足隐式表达式就说明这个点是该几何物体上的点。可以通过将点带入式子来判断该点在几何内部还是外部。
但是通过隐式表达,不能直观地知道表达的什么形状。

其他的一些隐式表示方法

Constructive Solid Geometry

对3D几何进行布尔操作,得到新的几何。

Distance Functions 距离函数

距离函数的意思是会返回当前点与任意物体表面的最短距离,如果返回的距离是负数,说明这个点在物体内部;如果为正,则在物体外部。
使用距离函数构造各种几何形状。如下图所示,从左往右看,最开始有两个球,每个球有一个距离函数,分别为 d 1 , d 2 d_1,d_2 d1​,d2​。
以 d 1 d_1 d1​为例,假设该球的中心坐标是 ( x 1 , y 1 , z 1 ) (x_1,y_1,z_1) (x1​,y1​,z1​),半径为 r r r,那么 d 1 : ( x − x 1 ) 2 + ( y − y 1 ) 2 + ( z − z 1 ) 2 − r 2 = 0 d_1:(x-x_1)^2+(y-y_1)^2+(z-z_1)^2-r^2=0 d1​:(x−x1​)2+(y−y1​)2+(z−z1​)2−r2=0

将两个距离函数进行插值(融合),随着融合程度的调整,得到由左向右的一系列几何。

Level Set Methods 水平集

距离函数需要定义一个解析表达式,但是有时不一定能够求出这个解析式。针对这种情况可以用level set(水平集)来表示几何形状。

给每个格子设定一个值,然后找出值为0的地方连起来就得到了level set,连接起来也就形成物体表面。

可以在三维空间中生成水平集,在医学数据上用的比较多。定义出一个密度level set,因为不同器官组织的密度是不一样的,通过选取不同的levelset,也就得到了不同的器官或组织的表面形状了。

Fractals 分形

雪花就是分形。整体看起来是六边形,细看每条边又是六边形。

显示表示

显示表示通常是构建一个映射函数,函数将左边二维平面的点映射到三维几何上。

以下图形使用显示方法表达与使用隐式方法表达是不一样的,这里将uv二维平面的坐标映射为三维的某个点。这样判断一个点在物体的内部或外部就比较麻烦。

两种表示特定总结

  • 隐式
    • 优点:很容易判断某个点在几何的内部还是外部
    • 缺点:无法直接判断几何的具体形状
  • 显示
    • 优点:很容易计算出每个映射点的位置,直接得到映射物体的几何形状
    • 不能直接判断某个点是在物体内部还是外部

标签:贴图,10,法线,Geometry,物体,图形学,纹理,几何,隐式
来源: https://blog.csdn.net/almost_afei/article/details/115234828

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有