You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Unity 3D中实现与参考示例地图类似的雾效

Unity 3D 高度雾效实现方案

你参考的雾效属于基于高度的指数混合雾,同时包含距离衰减和垂直高度衰减特性,适配开放世界3D场景的效果需求,可通过以下两种方案实现:

方案1:使用内置功能快速实现

  • 打开Window > Rendering > Lighting面板,切换到Environment选项卡
  • 勾选Fog选项,雾模式选择Exponential或Exponential Squared,调整Density参数控制全局雾的基础浓度
  • 若使用URP管线,直接在URP全局设置中开启Height Fog,调整Base Height(雾的基准高度,低于该高度雾浓度更高)和Height Falloff(高度衰减速度,值越大雾随高度升高消散越快)即可匹配大部分效果
  • 调整雾色和场景主光源的大气散射颜色对齐,避免雾效和场景光照出现违和感

方案2:自定义Shader实现(效果自由度更高)

如果内置功能无法完全匹配预期效果,可以在场景后处理Shader或物体表面Shader中加入以下核心计算逻辑:

float CalculateHeightFog(float3 worldPos, float viewDistance)
{
    // 计算距离雾:指数衰减
    float distanceFog = exp(-_FogDensity * viewDistance);
    // 计算高度雾:基于世界Y轴高度的指数衰减
    float heightFog = exp(-(worldPos.y - _FogBaseHeight) * _FogHeightFalloff);
    heightFog = saturate(heightFog);
    // 混合两种雾效得到最终权重
    float finalFogWeight = saturate(distanceFog * heightFog);
    return finalFogWeight;
}
  • 调整_FogDensity、_FogBaseHeight、_FogHeightFalloff三个自定义参数,直到和参考效果完全匹配
  • 若需要近景无雾、远景雾更浓的效果,可以额外增加距离阈值,小于阈值的位置直接消去雾效

提示:如果场景同时使用了体积云或大气散射效果,需要将雾效计算优先级放在大气散射之后,避免效果叠加出现色差

内容的提问来源于stack exchange,提问作者Hycner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 23:00:00