中EN
概念页

公告板

Billboarding

公告板是根据视线方向调整朝向的带纹理矩形。配合 alpha 纹理和动画,它能表现草、烟、火、雾、爆炸、能量护盾、尾迹、云等没有光滑实体表面的现象。各类公告板的区别只在于固定哪个向量(法线或上方向);软粒子、球形公告板解决与实体相交和穿过近平面的问题,轴向公告板用于树木、激光等柱对称物体(RTR4 13.6–13.6.3 节)。

构造朝向

每种公告板都要找到表面法线 n\mathbf{n} 和上向量 u\mathbf{u},两者构成正交基即旋转矩阵,再用锚点(如中心)定位。n\mathbf{n} 与 u\mathbf{u} 通常不垂直,总是固定其中一个、修正另一个:

  1. 右向量 r=u×n\mathbf{r}=\mathbf{u}\times\mathbf{n} 并归一化(长度为 0 说明平行,需特殊处理;接近 0 会有精度问题);
  2. 法线固定(大多数情况):u′=n×r\mathbf{u}'=\mathbf{n}\times\mathbf{r};上方向固定(如地形上的树):n′=r×u\mathbf{n}'=\mathbf{r}\times\mathbf{u};
  3. 归一化后组成矩阵,例如固定法线时 M=(r,u′,n)\mathbf{M}=(\mathbf{r},\mathbf{u}',\mathbf{n})。它把 xy 平面上、+y 指向上边、以锚点为中心的四边形转到正确朝向,再平移到目标位置。

类型对比

类型固定向量法线 / 上向量来源用途
屏幕对齐两者都来自相机法线 = 视平面法线取反,上 = 相机上方向;所有公告板共用一个矩阵粒子、注释文字、地图标记、HUD
世界朝向(视平面对齐)法线上向量由世界上方向修正;可共用矩阵飞行模拟中相机倾斜时云应随之倾斜;表示实体的精灵
视点朝向法线法线 = 公告板中心指向视点宽视场下大精灵
轴向世界轴(上方向)绕固定轴旋转,尽量朝向观察者远处树木、激光束
  • 屏幕对齐的文字常保持固定屏幕大小,相机拉远时其世界尺寸变大,大小与视点相关,会使视锥剔除等复杂化。
  • 共用一个矩阵的风险:透视投影下离视轴远的物体被拉伸(球变椭圆)。若虚拟相机视场与眼睛对屏幕的视场一致就看不出,10%–20% 的误差观众察觉不到;但游戏常用更宽视场,且观察者也不总在正前方。画家早就知道这点,月亮无论画在哪都画成圆的。视场或精灵小时可忽略,否则用视点朝向。视平面对齐让公告板在屏幕任何位置都不变形;视点朝向则与真实球体投影的变形一致。

世界朝向公告板的应用

  • 火焰、烟、爆炸:随机、混乱地聚集重叠动画精灵,隐藏动画循环并避免每次爆炸都一样 (Guymon、Nguyen)。
  • 裁剪多边形:镂空纹理中透明纹素不影响结果却要被处理并在管线后期丢弃,动画帧常有大片透明边缘。Persson 用更贴合的多边形(调整 UV)减少处理的纹素:4 个顶点就有显著提升(书中云精灵面积减少 40%),超过 8 个顶点收益递减(48%);虚幻 4 有"粒子裁剪"工具。
  • 云:Dobashi 等用公告板渲染云并用同心半透明壳做光柱;Harris 与 Lastra 用替身;微软飞行模拟 (Wang) 每朵云 5–400 个公告板,只需 16 种基础纹理(非均匀缩放和旋转变出多种云型),按到云中心距离改透明度模拟云的生成与消散,远处云全部渲染到环绕场景的 8 张全景纹理(类似天空盒)。其他:嵌套椭球、"巨粒子"+模糊+屏幕空间湍流纹理、程序生成云图在天空网格上移动、观察者上方的一系列平面。

软粒子

  • 半透明公告板需排序合成;烟雾公告板与实体相交时露出硬边和分层,体积感被破坏。
  • 像素着色器读取下方物体深度(只测试、不写深度),两者接近时让公告板更透明。线性淡出在最大淡出距离处会不连续,用 S 曲线避免;最佳淡出范围随观察者到粒子的距离变化 (Persson)。
  • 爆炸穿过物体时公告板可能从完全不可见突然变完全可见;观察者穿过云时公告板越过近平面会突然消失。简单办法:越靠近越透明。
  • 球形公告板 (Umenhoffer 等):把公告板看作定义了一个球体积,公告板本身只用来让像素着色器在球可能所在处执行;着色器求出入口和出口,用实体深度修正出口、用近平面修正入口,按相机光线在裁剪后球内走过的距离提高透明度。《孤岛危机》改用盒子降低着色开销;另一优化是让公告板代表体积的前面,从而用 z 测试跳过实体背后的部分(仅当体积完全在观察者前方、不会被近平面裁掉时可行)。

轴向公告板

  • 绕固定世界轴旋转并尽量面向观察者,例如沿树干方向固定世界上方向,用一张公告板表示远树(不同于第 6 章的十字交叉树)。与世界朝向的区别:世界朝向公告板正对观察者、可绕视轴旋转;轴向公告板固定轴、绕轴转。观察者在头顶时前者完全正对,后者更"贴"在场景中。
  • 问题:飞过树林往下看时树几乎侧对,暴露是剪纸。可加一张不需公告板的水平截面纹理,或用 LOD 切换到网格模型。SpeedTree 用轴向公告板渲染远树。
  • 柱对称物体(激光束)从轴周围任何角度看都一样,适合轴向公告板;弯曲光束由一串首尾相接的四边形组成(连接处不再是矩形)。

一般原则

这些方法里,几何的作用是触发像素着色器并给出粗略深度(着色器可细化),像素着色器负责评估真实形状并丢弃对象外的片元(公告板中即完全透明处)。既要避免在对象外浪费像素,又不要让几何复杂到顶点处理和三角形边缘 2×2 quad 的多余像素调用成为负担。

  1. realtime_rendering_4ed.pdf 第 13 章 Beyond Polygons

相关页面

图形学粒子系统Particle Systems粒子系统是一组按某种算法运动的小物体,用于火、烟、爆炸、水流、星系等,同时负责动画(生成、移动、变化、删除)和渲染。粒子通常渲染成公告板;难点在半透明排序、光照(逐顶点、逐像素低分辨率光照图块)以及接收/投射/自阴影(透射率溅射、傅里叶不透明度贴图、消光体积)(RTR4 13.8 节)。图形学替身与深度精灵Impostors & Depth Sprites替身 (impostor) 是把复杂物体从当前视点渲染成纹理、贴在视点朝向公告板上的表示,可在多个实例或多帧间复用以摊薄生成成本。公告板云用少量相交的镂空平面近似网格;深度精灵在纹理中加入每像素深度偏移,能与周围几何正确穿插;浮雕纹理、浮雕替身和几何图像进一步模糊了图像与网格的界线(RTR4 13.6.4、13.6.5、13.7 节)。图形学天空盒与固定视点技术Skyboxes & Fixed-View Techniques用图像代替三角形时,渲染代价与像素数而不是顶点数成正比。Lengyel 的"渲染谱系"从纯图像方法一直排到三角形和光线追踪。本页汇总谱系中偏图像一端的技术:限制视点移动的固定视点加速、渐进细化与重光照、天空盒、光场渲染以及精灵与分层(RTR4 13.1–13.5 节)。图形学透明渲染与 Alpha 混合Transparency & Alpha Blending本页讲最简单的"视角相关"透明:半透明物体只衰减其后方物体的颜色。z-buffer 每像素只存一个表面,所以透明物体通常要从后往前用 over 运算符混合;顺序无关透明 (OIT) 方法用多遍渲染、逐像素链表或近似公式避免排序,各有内存、性能或准确性代价。预乘 alpha 让过滤、混合和合成更正确高效。游戏数学基本仿射变换Basic Affine Transforms平移、旋转、缩放、切变是摆放和变形物体的基础矩阵;它们的连乘顺序有关、但满足结合律。刚体变换的逆可以直接写出,法线要用伴随矩阵的转置(传统说法是逆转置)变换。理解这些矩阵的性质能写出更快、更正确的变换代码。图形学纹理映射管线Texturing Pipeline纹理通过修改着色方程中使用的值(颜色、粗糙度、法线等)来高效表现表面材质的变化。通用纹理管线是:空间位置 → 投影函数得到纹理坐标 → 对应函数变换到纹理空间 → 取值 → 值变换 → 用于着色。本页还整理纹理坐标约定、纹理表示方式、程序纹理、纹理动画、材质贴图、alpha 贴图和纹理光源。图形学雾与简易体积光照Fog & Simple Volumetric Lighting这类"老派"技巧依赖经验模型,但至今仍然好用:深度雾、高度雾和局部雾体积用透射率混合雾色;光柱可用拉伸的面向相机粒子、单次散射的解析积分、平面切片,或屏幕空间径向模糊实现(RTR4 14.2 节)。图形学毛发渲染Hair & Fur Rendering毛发由角质层、皮质、髓质三层构成,可看作用曲线离散化的体积。几何上用沿引导曲线挤出的四边形条带并配合 alpha/顺序无关透明;着色用 BSDF(R、TT、TRT 分量),再加体积自阴影与多次散射近似;动物短毛可用壳与鳍或几何着色器挤出(RTR4 14.7 节)。图形学细节层次Level of Detail细节层次 (LOD) 在物体对图像贡献变小时改用更简单的表示。LOD 系统由三部分组成:生成(简化或手工制作多个版本)、选择(按距离、投影面积等收益函数挑选)、切换(尽量减少跳变 popping)。LOD 主要减少顶点处理,也通过减少 quad 过度着色降低像素开销;进一步还可在预算约束下全局选择 LOD,实现时间关键(恒定帧率)渲染。图形学VR 渲染注意事项VR Rendering Considerations在单屏上效果良好的渲染技术,放到随头部移动的双目显示上可能失效甚至引起不适。本页汇总 RTR4 第 21.4 节列出的需要修改或避免的技术:HUD 深度、凹凸与视差贴图、公告板与天空盒、色调映射与屏幕空间效果、镜面高光视差、抗锯齿选择、色带、运动模糊与景深,以及混合现实中的光照匹配。核心原则:严格遵循厂商头部模型和投影矩阵,任何会让两眼图像难以融合或与前庭感觉冲突的效果都要谨慎。图形学文本渲染Text Rendering文本中一个像素的变化就可能把 "l" 变成 "1",因此字形渲染格外讲究。主要路线有:按字号预生成字形位图纹理(配合微调和子像素渲染)、有符号距离场纹理(可在三维表面任意缩放旋转)、以及在 GPU 上直接求值字形曲线。图形学点云渲染Point Cloud Rendering点渲染用大量互不连接的三维点表示表面,每个点画成有半径的"溅射斑" (splat)。随着激光扫描、LIDAR、深度相机和摄影测量普及,点云数据可达数千亿点,因此几乎所有系统都用层次结构按预算加载和显示,并用不透明溅射、屏幕空间 AO 或眼罩光照 (EDL) 给无法线的点着色(RTR4 13.9 节)。游戏美术GTA V 的 Glow 与镜头光晕GTA V Glow & Lens FlaresGAT 82:GTA V 夜间红绿灯等小光源——高 HDR 自发光 + 按通道独立的色调映射保持饱和芯,外加双层旋转公告板模拟眼内眩光纹理与微动,并在关闭后处理 Bloom 时仍作回退。游戏美术假室内Fake InteriorsSimon Schreibt《Game Art Tricks》48 / 12:用平面窗户着色器假装后面有房间——立方体贴图减速视差、Bump Offset 平铺室内、多层视差+假公告板等——省建模与真透明排序成本。本页忠于原文观察,不臆造引擎未写明的实现细节。游戏美术Doom 3 体积光晕Doom 3 Volumetric GlowGAT 33:Doom 3 灯具周围的「体积」光晕——美术只放简单多边形并挂材质,运行时用(疑似顶点色)网格按视角折叠展开形成光圈;仅在正对光源时绘制并随角度淡出。偏 glare(看不见光源则消失),而非持续 haze。

被这些页面引用1 篇

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原