886 字
4 分钟
GAMES101 Lecture 10 Geometry -- 几何介绍
2026-04-02
2026-05-26

EnvironmentMap — 环境光贴图#

纹理本质上就是提供了一个快捷的查询,不只局限于图像,光照也能同理进行查询

光照贴图认为光照是无限远的,忽略了光的位置信息

怎样描述环境光?

如果在房间中有一光滑的金属球,我们观察他就会发现它反射出来的就是环境光。

那我们就可以把环境光储存在球上面,并且也能把它展开成平面

但展开后发现球形图的上下会扭曲。

虽然我们能描述球上不同的位置,但无法均匀的描述

所以我们可以将信息记录在这个球的外接立方体,这样信息就变得均匀了—CubeMap

BumpMapping — 法线贴图#

法线贴图是为了在不增加三角形面数的情况下,在着色时显示更多细节

对某一点进行着色时,需要判断该点的法线方向,从而计算光照和颜色

需要从原本的模型表面映射到法线贴图中,查询新的法线位置

法线贴图如何知道法线的方向呢?

先看一维中的简单示例

  • 先算该点切线
    • 切线可以用该点与下一个点的位置差计算出来
  • 将切线逆时针旋转90°,求归一化,得到法线

二维的贴图(3D空间)中如何求法线?

对u、v坐标分别求导,算出切线,旋转得到法线

位移贴图#

环境光遮蔽也能预先计算好,存储到纹理中

几何#

隐式几何#

隐式几何用来表达该几何点之间的关系

隐式表达的函数f(x,y,z)很难从函数看出函数形成的面是什么形状的

但可以轻松的知道某一点是否在这个平面上,或物体内外

显式表达#

给定:点的空间坐标uv,遍历所有点就可以在空间中画出该物体

用平面中的uv去映射到空间中,表示空间上的面

优点就是可以看出函数形成的面是什么形状的

但无法轻松的知道某一点是否在这个平面上

两种表达各有各的用途,没有好坏之分,根据需要选择

Constructive Solid Geometry - CSG#

隐式几何#

通过基本几何的布尔运算,得到新的几何

DistanceFunctions (距离函数)#

不直接描述几何表面,描述空间中的每一点到几何表面的最短距离

blend 是混合, 这里是想将 A 与 B 混合为一体.

阴影处是物体, 阴影与留白一起, 构成物体所处的空间

A 与 B 的混合, 不仅混合了物体(1/3+2/3=1), 还混合了空间(1+1=2), 最终效果应该是混合后的物体在混合后的空间中的占比是 1/2

例示中比较反直觉的是, blend(A, B) 所处空间的大小, 看起来依旧是 1

基本思路:求出距离函数———> 进行blend操作————> 恢复平面

对于两个物体,Blend两个物体的距离函数即可得到如下效果

SDF很难用式子表达出来,那如何把SDF恢复成表面呢?

水平集 — LevelSet#

将函数的表述写在格子上

只要找到所有f(x)= 0的地方就能尝试描述这个物体的表面

概念等同于地理上的等高线

GAMES101 Lecture 10 Geometry -- 几何介绍
https://dingfengbo.vercel.app/posts/games101/lecture-10-geometry----几何介绍/
作者
Eureka
发布于
2026-04-02
许可协议
CC BY-NC-SA 4.0