Featured image of post 相机 FOV 平滑过渡(虚幻引擎)

相机 FOV 平滑过渡(虚幻引擎)

Smooth camera FOV interpolation in UE5 using FInterp To and Set Timer by Event for aim-in/aim-out transitions.

相机 FOV 平滑过渡(虚幻引擎)

核心概念

Get World Delta Seconds

获取上一帧到下一帧的间隔时间(帧间隔),用于保证不同帧率下过渡速度一致。

Camera Field of View(FOV)

相机视场角,即游戏中常见的 FOV,控制视野广度。开镜时缩小 FOV 实现"望远"效果。

FInterp To(浮点插值)

让浮点数从「当前值」以先快后慢、自然减速的方式平滑趋近目标值。

引脚 含义
Current 当前值
Target 目标值
Delta Time 帧间隔(连接 Get World Delta Seconds)
Interp Speed 插值速度,越大越快

工作原理:指数衰减插值,每帧移动距离 = (目标值 - 当前值) × 速度 × 帧间隔。离目标越远越快,越近越慢。

与 Lerp 的区别

对比项 FInterp To Lerp
过渡曲线 先快后慢,自然缓动 匀速直线
控制方式 只需设速度,自动计算 需手动控制 Alpha
帧率适配 自带 Delta Time 需自己处理

同族节点:VInterp To(向量)、RInterp To(旋转)、TInterp To(变换)

FOV 平滑过渡逻辑

整体功能

绑定增强输入 IA_Aim(鼠标右键):

  • 按住:FOV 向 75(瞄准视野)平滑过渡
  • 松开:FOV 向 DefaultFOV(默认视野)平滑过渡

开镜分支(Triggered)

按住期间持续触发,每次调用 FInterp To 返回微小增量,相当于循环效果:

  1. 清除退镜计时器(避免两个方向插值冲突)
  2. FInterp To 计算:当前 FOV → 75.0,速度 8.0
  3. Set Field Of View 应用结果

按住期间 Triggered 持续触发 → FInterp To 持续返回微小增量 → 达到循环效果

退镜分支(Completed)

松开是一瞬间的,需要用 Set Timer by Event 循环触发:

  1. 启动循环计时器:绑定 OutFOV 事件,间隔 = Get World Delta Seconds,勾选 Looping
  2. OutFOV 事件每帧执行:
    • FInterp To:当前 FOV → DefaultFOV
    • Set Field Of View 应用
    • Nearly Equal 判断是否接近目标(误差 0.1)
    • 如果接近 → 清除计时器,停止循环

FOV 平滑过渡蓝图节点链路

Set Timer by Event 的设计目的

  1. 按需执行:只在过渡过程中启动,结束后关闭,平时不占帧开销
  2. 生命周期独立:有独立句柄,可随时暂停/清除/重启
  3. 执行频率可自定义:可设为 0.02 秒(50次/秒)降低 CPU 消耗
  4. 逻辑解耦:封装在独立事件中,结构清晰

使用注意事项

  1. 必须每帧调用:FInterp To 是单帧计算,只调一次无过渡效果
  2. 务必连接 Delta Time:否则帧率影响过渡速度
  3. 理论上不会精确等于目标值:需加阈值判断(Nearly Equal)直接赋值
本作品采用知识共享署名-非商业性使用-相同方式共享4.0国际许可协议进行许可(CC BY-NC-SA 4.0)
文章浏览量:Loading
Powered By MC ZBD Studio
发表了64篇文章 · 总计115.79k字
载入天数...载入时分秒...
总浏览量Loading | 访客总数Loading

主题 StackJimmy 设计
由ZephyrBD修改