当前位置: 首页 > news >正文

【UE】 实现指向性菲涅尔 常用于圆柱体的特殊菲涅尔

在这里插入图片描述


菲涅尔

菲涅尔Fresnel是一种常见的视觉效果
其核心思想是利用屏幕观测方向与表面法线之间的夹角来动态调整材质的表现。例如,物体表面在与摄像机方向接近平行时,反射或高光的强度会增强,这是菲涅尔效应的基本特性。
在这里插入图片描述


菲涅尔的基本实现

菲涅尔算法本质上非常简单,只需通过 表面法线Normal 与 摄像机方向Camera Vector 的点积计算夹角余弦值,得到一个动态的比例值。
公式如下:

F=1−∣N⋅V∣ F = 1 - \lvert \mathbf{N} \cdot \mathbf{V} \rvert F=1NV

其中:

  • NNN:表面法线(世界空间)
  • VVV:摄像机方向
  • FFF:菲涅尔值,范围在 [0, 1]。

在这里插入图片描述
这种菲涅尔效果在大多数情况下都表现优秀,但对于某些特定的几何体(例如圆柱体、锥体等),可能无法满足所有需求。


指向性菲涅尔

在观察圆柱体时,默认的菲涅尔计算会出现以下问题:当视线方向沿着圆柱的轴线时,菲涅尔值会趋近于零,导致物体的高光或透明效果完全消失。这种现象在某些特效(如激光、假体积光)中会显得不够自然或违背设计需求。

在这里插入图片描述

在这里插入图片描述
为了方便预览,这里使用Frac对倍数的结果进行取余,观察菲涅尔的梯度
在这里插入图片描述

为了避免这种问题,需要设计一种指向性菲涅尔,使其能够在圆柱轴线方向观察时仍然保留一定的菲涅尔效果。


应用场景

如能量束、光柱等需要稳定菲涅尔效果的特效,需要实现一些特殊需求。
例如在激光材质中,需要使用指向性菲涅尔避免因视角问题导致光效消失。
在这里插入图片描述
在这里插入图片描述

对比

指向性菲涅尔的核心是对视线方向做一个动态调整,使其与圆柱的轴线方向正交,从而避免在圆柱轴向观察时出现菲涅尔值完全消失的问题。

左侧为指向性菲涅尔
在这里插入图片描述

它看上去像这样
在这里插入图片描述
在这里插入图片描述
左侧为指向性菲涅尔,右侧为常规菲涅尔
在这里插入图片描述
在这里插入图片描述

算法

首先通过顶点法线(Normal)与顶点切线(Tangent)的叉积计算得到轴向,计算得到的轴线方向需要归一化处理,以确保其为单位向量。
在这里插入图片描述

将计算得到的轴线方向用于修正视线方向。
首先,利用点积计算视线方向在轴线方向上的投影
然后,将投影分量从视线方向中减去,得到一个与圆柱轴线正交的视线归一化方向:
在这里插入图片描述

将修正后的视线方向与像素法线(Pixel Normal)进行点积,得到最终的菲涅尔值
在这里插入图片描述


最后再制作一个左右分屏做对比
在对比测试中,指向性菲涅尔相比于默认菲涅尔,在圆柱体的轴向观察时保留了合理的梯度效果
在这里插入图片描述
在这里插入图片描述


用于圆锥也有很多用处,例如假体积光等。
在这里插入图片描述


在这里插入图片描述

http://www.xdnf.cn/news/1473193.html

相关文章:

  • 分享一种常被忽略的芯片死锁
  • 【Linux基础】Linux系统管理:MBR分区实践详细操作指南
  • IO进程线程;多线程;线程互斥同步;互斥锁;无名信号量;条件变量;0905
  • FEMDRW032G-88A19江波龙,工业级宽温EMMC存储FEMDRW032G采用eMMC5.1协议,具备32GB存储容量提供方案
  • 可搜索且多选的下拉式列表
  • Linux查看设备树信息
  • C++Primerplus 编程练习 第十二章
  • CUDA编程12 - 使用OpenMP控制多个GPU示例
  • 1个工具管好15+网盘(批量转存/分享实测)工具实测:批量转存 + 自动换号 + 资源监控 账号添加失败 / 转存中断?这样解决(含功能详解)
  • 【leetcode】46. 全排列
  • 【C++】vectore
  • 裸机程序(3)
  • 【C++】 priority_queue 容器模拟实现解析
  • GDAL 开发起步
  • MySQL抛出的Public Key Retrieval is not allowed
  • nextcyber——暴力破解
  • c++ 压缩与解压缩
  • C++语言编程规范-初始化和类型转换
  • 技术面:Java并发(线程池、ForkJoinPool)
  • Acrobat-2025.001.20643_Win中文_PDF编辑器_便携版安装教程
  • Go初级之十:错误处理与程序健壮性
  • 内存纠错检错方法-SSCDSD
  • vggt代码详解
  • 迁移学习实战:基于 ResNet18 的食物分类
  • BYOFF (Bring Your Own Formatting Function)解析(80)
  • GPU集群扩展:Ray Serve与Celery的技术选型与应用场景分析
  • Pinia 两种写法全解析:Options Store vs Setup Store(含实践与场景对比)
  • (3)Seata AT 模式的事务一致性保证机制
  • MySQL慢查询优化策略
  • 洛谷 P2392 kkksc03考前临时抱佛脚-普及-