billboarding
billboarding
使一个 2D 平面始终朝向摄像机,以低成本高效地模拟 3D 物体或 UI 元素。
核心优势
将复杂的矩阵变换(广告牌算法)封装为单个函数,极大简化了顶点着色器逻辑,开发者无需手动处理矩阵数学,并能通过参数进行灵活的朝向控制。
常见用途
粒子系统(烟雾、火花、雨滴)
游戏内 UI(名称标签、生命条)
远景优化(Imposters,如远处的树)
镜头光晕(Lens Flare)效果
如何调整
通过调整 `horizontal` 和 `vertical` 布尔值参数,可以实现球形广告牌(两者皆 true,适用于粒子/UI)或圆柱形广告牌(仅 `horizontal` 为 true,适用于远景树木)。使用 `position` 参数可以为动态计算的位置(如 GPU 粒子)应用广告牌效果,使其与物体原始位置解耦。
代码示例
1// 为一个由 GPU 计算出的动态位置应用广告牌效果
2const particleWorldPosition = particleDataBuffer.element( instanceId ).position;
3model.positionNode = billboarding( { position: particleWorldPosition } );