Lecture10: Geometry 1(Introduction)
- 今日内容:
- 纹理的应用
- 几何介绍
纹理的应用
- 现代GPU中,纹理可以理解成内存+范围查询(滤波)
- 环境光照 / 环境光贴图
- 认为环境光在无限远处,只记录其方向信息
- 可以把环境光记录在球面上 (Spherical Map),也可以将其展开,但是展开后会扭曲,比如地球仪的两级
- 不存在球上,而是记录在立方体上 (Cube Map)
- 可以减轻扭曲现象
- 可以减轻扭曲现象
- 纹理可以影响着色
- 凹凸贴图:可以定义表面沿着法线方向往上或下的高度
- 通过高度变化改变法线
- 如何计算法线如何变换?
- 通过凹凸贴图定义切线,然后通过切线算法线,一维情况下这么做:
- 实际(二位贴图)情况下,同理 :
- 在局部坐标系内,我们认为法线原方向为(0, 0, 1),在计算后,我们会把法线重新计算到世界坐标
- 通过凹凸贴图定义切线,然后通过切线算法线,一维情况下这么做:
- 凹凸贴图:可以定义表面沿着法线方向往上或下的高度
- 位移贴图 Displacement mapping
- 真的会把顶点位置进行移动
- 凹凸贴图(上图左)会“露馅”
- 物体边缘
- 自己投影影响到自己
- 位移贴图有代价,要求模型的三角形足够细致(模型能够跟得上纹理的变化速度,顶点之间的间隔比纹理定义的频率还要高)
- DirectX提供了动态的曲面细分实现位移贴图
- 真的会把顶点位置进行移动
- 三维的纹理
- 定义三维空间中的噪声函数来定义纹理
- 比如生成山脉
- 提供预计算好的纹理
- 环境光遮蔽
- 把计算好的环境光遮蔽作为纹理
- 三维纹理和体积渲染
几何的介绍
几何的例子
- 曲线和曲面的计算
- 各种几何
- 布料的几何形态
- 水滴的几何
- 非常巨量复杂的几何,如何存储,如何渲染
- 动物毛发的几何
- 微观量级的几何
- 分形几何
- 两种几何:隐式和显示几何
- "Implicit" Representations of Geometry 隐式几何
- 比如球的隐式表示
- 坏处就是可能难以采样与理解,哪些点满足隐式表示?这难以理解
- 好处:容易判断点在物体内外或上
- 比如球的隐式表示
- "Explicit" Representations of Geometry 显式几何
- 比如给面上的点直接表示出来
- 通过参数映射方法定义表面,如下图:
- 一个例子,把(u, v)映射成空间中的点
- 显示表面,什么会变难?判断内外!
- 除非你看出来这是什么形状了
- 除非你看出来这是什么形状了
- 没有完美的办法,要根据需求去选表示方法:
- 隐式的表示方法还有哪些?
- 代数表示:不直观,难以表示复杂的形状(比如奶牛)
- Constructive Solid Geometry (Implicit)
- Distance Functions (Implicit)
- 用距离函数:描述任何一个点到表面的最近距离
- 用距离函数:描述任何一个点到表面的最近距离
- Blending Distance Functions (Implicit)
- 距离函数可以做什么?
- 如何恢复距离函数的表面?找到函数等于0的一条线
- Level Set Methods (Also implicit) 水平集方法
- Fractals (Implicit) 分形
- 中间图是某种西兰花,是自然界中分形的例子之一
- 会引起走样,因为变化频率太高
- 隐式表示的优缺点
- 优点
- 写起来比较容易
- 容易判断点内外
- 容易和光线求交
- 。。。
- 缺点:难以表示复杂形状
- 优点
- 显示表示下节课简单提一点!
- 拜拜!