一套可复用的局部 Volume 体系,给地图随时加天气。
第四章讲局部特效。这里的关键词是「局部」。诗贯山河不需要整张地图都下雨,也不需要全屏飘雪。我们要的是某个诗词点位附近、某段镜头经过时,出现一小团有情绪的天气。
如果你把每种效果都当成独立功能写,最后会得到六套参数、六套生命周期、六套调试入口。短期能跑,长期很难维护。所以这一节先建立共同抽象:Volume。
什么是局部 Volume
Volume 可以理解成地图上的一个影响区域。它有位置、半径、高度、强度、类型、开始时间、持续时间。雨、雪、风、沙、烟、瀑布只是不同类型的表现层,但它们都可以被同一套 Volume 配置描述。
- position:效果发生在哪里。
- radius:影响范围有多大。
- intensity:粒子密度、风力或透明度强弱。
- duration:是否跟随镜头短暂出现。
- seed:噪声随机种子,保证同一地点效果稳定。
六种效果的分工
- 细雨:负责江南、水面、低对比度情绪。
- 飘雪:负责北地、孤城、留白和慢节奏。
- 风:负责方向感,让静态地形有流动。
- 沙暴:负责边塞、高强度遮挡和画面冲击。
- 烟气:负责山谷、寺庙、江面晨雾。
- 瀑布:负责局部地貌焦点,给镜头一个可停留的动态主体。
先设计调试面板,再写效果
特效最耗时间的地方不是写第一版,而是调到「刚刚好」。所以每种效果都应该能在调试面板里改密度、速度、方向、颜色和范围。没有调试入口,后面只能靠反复改代码和刷新页面,效率很低。
效果要服务诗意,不要抢戏
古风地图最怕特效太满。雨不是为了证明你会粒子系统,雪也不是为了盖住画面。每一种效果都应该回答:它强化了哪首诗、哪个地点、哪种情绪?如果回答不上来,就应该减弱或删除。
这一章后面的具体效果会陆续展开。先记住一个原则:先统一生命周期和参数,再实现单个视觉。