VFX纹理动画
全库目录221
本文目录6
同一张纹理可以逐帧换图,也可以沿流向连续移动。VFX纹理动画先选择时间参数怎样映射到采样坐标,再处理周期接缝、帧间插值和mip。两种表示都要保持动画尺度与资产布局一致。
Flipbook
Flipbook 把多帧烟、火或爆炸打包进一张图集。给定列数 、行数 和帧索引 :
局部 UV 缩放到单格后加上 偏移。需要确认贴图原点方向,否则帧序会上下颠倒。
帧间直接切换会抖动。帧间混合同时采样相邻两帧并插值,运动更平滑,但纹理采样翻倍,也可能产生重影。
图集每格需要边缘扩展。Mipmap 和双线性过滤会跨格采到相邻帧,产生边缘串色。可以扩边、使用专用 Mip,或在着色器中收紧单格 UV。
极坐标 UV、流向与噪声
圆形冲击波可把中心化 UV 转为极坐标:半径控制环形推进,角度控制沿圆周的纹理采样。
流向图用 RG 表示二维流向,按时间偏移 UV。单次滚动在周期重置时会跳变;常用两组相差半周期的采样,再用三角权重交叉淡入淡出。
噪声不要无目的叠加。区分用途:
- 大尺度噪声改变整体轮廓;
- 中尺度噪声控制密度和卷动;
- 小尺度噪声补表面细节;
- 时间偏移控制运动速度。
多层噪声会增加采样和 Alias,应为远距离准备简化版本。
双相流动
伪代码输入UV、二维流向和时间,两个相位用周期权重交叉淡化,避免单次回绕跳变。
phase0 = frac(time)
phase1 = frac(time+0.5)
c0 = Sample(uv-flow*phase0)
c1 = Sample(uv-flow*phase1)
weight0 = 1 - abs(2*phase0 - 1)
weight1 = 1 - abs(2*phase1 - 1)
color = c0*weight0 + c1*weight1例如周期时间0.25时,两相位为0.25、0.75,权重均为0.5;时间到1时第一相位从接近1跳回0,但它的权重同时趋零,第二相位为0.5且权重为1,遮住了第一份UV的跳变。这要求纹理采样本身在第二相位附近连续,资产里的UV缝仍须单独处理。
每个相位在回绕到零时权重也为零,纹理坐标的跳变因而不直接进入输出。两组相差半周期,三角权重之和为一;若改成两个任意正弦权重,必须重新归一化,否则整张纹理会周期性明暗。这里 time 表示已乘流动频率的周期数,flow 表示每周期的 UV 位移。
验证方法
固定时间检查图集帧索引与原点,跨周期观察连续性。移动镜头检查mip串色与UV缝,流向速度单位、纹理重复和遮罩是否跟随预期空间分别核对。
实现状态:正文片段用于解释本页数据流与边界条件;完整宿主的编译、运行及性能测量尚未执行。可运行的独立模型以本页列出的具体测试为准。
相关主题
参考资料
- Microsoft:frac:周期小数部分;正文双相流权重与回绕连续性为独立推导。