概念页
埃尔米特与 Kochanek-Bartels 样条
Hermite & Kochanek-Bartels Splines
三次 Hermite 曲线用两个端点和两个端点切线定义,比贝塞尔控制点更直观;把多段 Hermite 曲线串起来经过一系列点时,Kochanek-Bartels 用张力、偏置、连续性三个参数从相邻弦计算切线,默认参数即 Catmull-Rom 样条。均匀三次 B 样条则以不经过控制点为代价换来处处 连续。
三次 Hermite 插值(17.1.4 节)
满足 、、、。切线越长对整体形状影响越大。应用:NVIDIA "Nalu" 演示中,用粗的控制发丝做动画和碰撞检测,计算切线后细分三次曲线渲染头发(见 毛发渲染)。
Kochanek-Bartels 曲线(17.1.5 节)
个点 用 段 Hermite 曲线插值,内部切线由两条弦 和 组合得到。
- 张力 (控制接点处的尖锐程度): 默认 ;越大弯曲越尖( 时接点处出现环),负值则更松弛。
- 偏置 (控制切线方向): 正偏置更偏向弦 ,负偏置偏向另一条。全部取默认值即 Catmull-Rom 样条。首末点的切线可令其中一条弦长度为零来计算。
- 连续性 :每个接点有入切线 和出切线 ( 到 段使用 与 ): 时 ; 时得到只有 的尖角。三者合并:
- 坑:时间间隔不等。上式只在各段时间长度相同时成立。设 ,需调整为 否则路径上的速度会在接点处突变(与 贝塞尔曲线 中的 条件同理)。
均匀三次 B 样条(17.1.6 节)
。三次基函数由三段拼成: 是方波,逐次积分得到帐篷函数 、 的 、 的 ; 次曲线为 。求值只用四个控制点(局部支撑): x、y 分别用 B 样条即得到平面曲线。控制点非均匀分布时公式更复杂但更灵活。
选型
| 曲线 | 经过控制点 | 连续性 | 适用 |
|---|---|---|---|
| 贝塞尔(分段) | 只经过端点 | 需手动保证 / | 理论基础、字体、精确控制形状 |
| Hermite / Kochanek-Bartels / Catmull-Rom | 是 | ( 时可故意降为 ) | 相机路径、关键帧动画,参数直观 |
| 均匀三次 B 样条 | 否 | 要求非常平滑的曲线,曲面(Catmull-Clark)基础 |
出处
- realtime_rendering_4ed.pdf 第 17 章 Curves and Curved Surfaces
相关页面
游戏数学贝塞尔曲线Bézier Curves参数曲线 \mathbf{p}(t) 用参数 t 生成连续的点,实时图形中常用于让相机或物体沿预定路径移动(与帧率无关),也用于渲染头发和字体。贝塞尔曲线由反复线性插值(de Casteljau 算法)得到,等价于 Bernstein 多项式加权控制点;多段拼接时要关注 C^n / G^n 连续性。图形学参数曲面与贝塞尔面片Parametric Surfaces & Bézier Patches参数曲面把参数曲线从一个参数推广到两个参数 (u,v),由少量控制点定义,运行时细分成任意多个三角形,是质量与速度之间的天然权衡:三角形多则着色和轮廓更好。矩形定义域的是贝塞尔面片(张量积曲面),三角形定义域的是贝塞尔三角形,后者是 PN 三角形和 Phong 细分的基础。图形学细分曲线与细分曲面Subdivision Curves & Surfaces细分从一个控制多边形 / 控制网格出发,反复"细化 + 平滑",极限是光滑的曲线或曲面。它能从任意拓扑的网格得到连续、无裂缝的曲面,规则简单、天然支持无限 LOD,连接了离散三角网格与连续曲面。游戏和电影最常用的是 Catmull-Clark(四边形)和 Loop(三角形)两种逼近型方案,可扩展出折痕和置换细分。图形学毛发渲染Hair & Fur Rendering毛发由角质层、皮质、髓质三层构成,可看作用曲线离散化的体积。几何上用沿引导曲线挤出的四边形条带并配合 alpha/顺序无关透明;着色用 BSDF(R、TT、TRT 分量),再加体积自阴影与多次散射近似;动物短毛可用壳与鳍或几何着色器挤出(RTR4 14.7 节)。游戏开发 · UE5PCG 程序化内容生成框架PCG FrameworkPCG 框架把程序化内容表达为「点流」:PCG 组件/体积从关卡采样空间数据,图中的 Sampler 生成带变换、密度、种子与自定义属性的点,经过滤与变换后由 Spawner 生成网格或 Actor,编辑器中实时更新,也可运行时生成。属性分为 $ 静态属性和元数据动态属性,按 @Data/@Points/@Elements 域组织;图参数与图实例的用法类似材质参数与材质实例;与世界分区集成,生成物继承数据层与 HLOD 层。游戏开发动画压缩Animation Compression未压缩的动画每关节每样本最多 10 个 32 位浮点通道,数据量巨大。GEA 列出的压缩手段按力度递增:省略无用通道、量化(如 16 位 RL 编码)、降低采样率或省略近似线性的关键帧、用 B 样条拟合曲线、小波压缩,以及最根本的:只把需要的片段放进内存(选择性加载与流式加载)(GEA4 卷 II 13.8)。游戏开发数据驱动与游戏世界编辑器Data-Driven Engines & Game World Editors当游戏行为可以部分或全部由美术和策划提供的数据控制,而不只由程序员写的代码控制时,引擎就是数据驱动的。它能提高团队效率、缩短迭代时间,但工具、健壮的运行时和预览手段都要花大量成本,过度设计反而降低生产力,所以要权衡并坚持 KISS。玩法领域里对应 DCC 工具的是游戏世界编辑器:创建世界块并放入静态和动态元素、设定对象初始状态和行为。GEA 列出了它的典型功能,并比较了不同引擎在何时做平台相关优化上的取舍(GEA4 卷 II 16.3–16.4)。