Fusion体积光(Volumetric Lighting)
AI-摘要
切换
Tianli GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
Volumetric Lighting
介绍一下Fusion的体积光,视频里讲的不是很清楚,可以自己看一下体积光光的定义,其实可以理解为丁达尔效应就是能看到的光线,一般出现在大气中有雾气或灰尘。太阳刚好投射在上面,被分割成一条条,有时成一大片。

Fusion 渲染器
Fusin的渲染器是非常非常古老的OpenGL渲染器。
高情商的说:就是兼容性优秀且快速的渲染器。低情商的说:就是依托答辩,没有光线追踪,没有SSS材质不支持PBR,甚至连反射都没有,严重脱节现代的所有渲染器与3D软件。
在Fusion内甚至不能够直接渲染体积光,只能用后期的方式实现。
就在前段时间Fuison 18.5加入了新的USD工具,加入了新的Storm渲染器(好消息是渲染速度非常快,坏消息是完全满足不了工作需求,KD插件还G了)
也不清楚BMD未来要怎样发展Fusin。
实现体积光
前面说了体积光类似丁达尔效应,其实在Fusion里也类似,Fusion有一种叫做体积雾(Volume Fog)的后期效果(并不能读取VDB文件)这个效果还能接收3D场景里的灯光信息,只需要让灯光照在体积雾上就能实现体积光的效果。
- 先建一个简单的3D场景

- 用一个很大的模型
把场景和相机都包住,这样渲染出来的World Position通道会更准确。将模型的材质透明度改为0,并且取消掉抑制透明像素的辅助通道的勾选,可以让模型不可见但能渲染辅助通道。

- 渲染的时候勾上
World Position通道,然后使用Volume Fog节点,连接后调整体积雾的大小覆盖整个场景。建场景的时候已经放置了灯光,在Volume Fog中勾选使用照明就能看到体积光。
Volume Fog:输入图像需要带有World Position通道,并且要有一个和通道匹配的相机连接,连接场景时会自带选择相机。

- 详细参数可以自己看工程,如果需要有纹理的灯光可以使用
Projector3D节点。- 做体积光时可以提高体积雾采样率,我一般用
128左右。 - 不想看到
黑色的雾可以将颜色里的Alpha调为0。 - 灯光推荐使用
线性或者二次方的模式这两种模式的衰减更接近现时,但大场景衰减过于严重。 - 更多的体积雾设置可以在
照明一组里找到。 - 制作时请务必要体积雾
铺满你的场景。 - 如果你只是想做丁达尔效应或者上帝之光的效果可以使用
DirectionalBlur或者Rays节点。
- 做体积光时可以提高体积雾采样率,我一般用
工程
复制后到达芬奇Fuiosn页面或者独立版里黏贴。

{
Tools = ordered() {
VolumeFog1 = VolumeFog {
CtrlWZoom = false,
Inputs = {
["Rotate.RotOrder"] = Input { Value = FuID { "XYZ" }, },
ScaleNest = Input { Value = 1, },
["Scale.X"] = Input { Value = 5, },
["Scale.Y"] = Input { Value = 5, },
Size = Input { Value = 8.03, },
Dither = Input { Value = 0, },
Samples = Input { Value = 256, },
["Noise.Rotate.RotOrder"] = Input { Value = FuID { "XYZ" }, },
["Noise.Scale.Lock"] = Input { Value = 1, },
Camera = Input { Value = FuID { "Camera3D1" }, },
DoLighting = Input { Value = 1, },
Reflection = Input { Value = 10, },
Image = Input {
SourceOp = "Renderer3D1",
Source = "Output",
},
SceneInput = Input {
SourceOp = "Merge3D1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 935, -82.5 } },
},
FastNoise1 = FastNoise {
Inputs = {
EffectMask = Input {
SourceOp = "Ellipse1",
Source = "Mask",
},
GlobalOut = Input { Value = 250, },
Width = Input { Value = 1000, },
Height = Input { Value = 1000, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
Detail = Input { Value = 10, },
Contrast = Input { Value = 2.59, },
Brightness = Input { Value = -0.37, },
XScale = Input { Value = 11.65, },
SeetheRate = Input { Value = 0.1, },
},
ViewInfo = OperatorInfo { Pos = { 715, -148.5 } },
},
Shape3D3_2 = Shape3D {
Inputs = {
["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
["SurfaceCubeInputs.Height"] = Input { Value = 6, },
["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 5, },
["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 2, },
["SurfaceCylinderInputs.ObjectID.ObjectID"] = Input { Value = 6, },
SceneInput = Input {
SourceOp = "Projector3D1",
Source = "Output",
},
["Transform3DOp.Translate.Y"] = Input { Value = 3.28933866575572, },
["Transform3DOp.Rotate.Y"] = Input {
Value = 68.5,
Expression = "time",
},
Shape = Input { Value = FuID { "SurfaceConeInputs" }, },
["MtlStdInputs.Diffuse.Color.Green"] = Input { Value = 0, },
["MtlStdInputs.Diffuse.Color.Blue"] = Input { Value = 0, },
["MtlStdInputs.ReceivesLighting"] = Input { Value = 0, },
["MtlStdInputs.ReceivesShadows"] = Input { Value = 0, },
["MtlStdInputs.MaterialID"] = Input { Value = 10, },
["SurfaceConeInputs.Radius"] = Input { Value = 0.47, },
["SurfaceConeInputs.Height"] = Input { Value = 0.6, },
["SurfaceConeInputs.Wireframe"] = Input { Value = 1, },
["SurfaceConeInputs.ObjectID.ObjectID"] = Input { Value = 7, }
},
ViewInfo = OperatorInfo { Pos = { 715, -82.5 } },
},
Projector3D1 = LightProjector {
Inputs = {
["Transform3DOp.Translate.Y"] = Input { Value = 0.3, },
["Transform3DOp.Rotate.Y"] = Input { Value = -250, },
DecayType = Input { Value = 1, },
Angle = Input { Value = 29.7, },
ProjectiveImage = Input {
SourceOp = "FastNoise1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 715, -115.5 } },
},
Renderer3D1 = Renderer3D {
CustomData = {
ToolVersion = 2,
},
Inputs = {
GlobalOut = Input { Value = 250, },
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
SceneInput = Input {
SourceOp = "Merge3D1",
Source = "Output",
},
RendererType = Input { Value = FuID { "RendererOpenGL" }, },
["RendererOpenGL.Channels.Nest"] = Input { Value = 1, },
["RendererOpenGL.Channels.WorldCoord"] = Input { Value = 1, },
["RendererOpenGL.AntiAliasing.Nest"] = Input { Value = 1, },
["RendererOpenGL.AntiAliasing.Channels.RGBA.HighQuality.Enable"] = Input { Value = 1, },
["RendererOpenGL.AntiAliasing.Presets.Nest"] = Input { Value = 1, },
["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.HighQuality.RateX"] = Input { Value = 1, },
["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.HighQuality.RateY"] = Input { Value = 3, },
["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
["RendererOpenGL.AntiAliasing.Presets.Aux.Supersampling.HighQuality.RateX"] = Input { Value = 3, },
["RendererOpenGL.AntiAliasing.Presets.Aux.Supersampling.HighQuality.RateY"] = Input { Value = 3, },
["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
["RendererOpenGL.AccumQuality"] = Input { Value = 32, },
["RendererOpenGL.LightingEnabled"] = Input { Value = 1, },
["RendererOpenGL.Texturing"] = Input { Value = 1, },
["RendererOpenGL.TextureDepth"] = Input { Value = 0, },
},
ViewInfo = OperatorInfo { Pos = { 935, 16.5 } },
SubInputsData = {
RendererOpenGL = {
Version = 1
}
}
},
Merge3D1 = Merge3D {
Inputs = {
SceneInput1 = Input {
SourceOp = "Shape3D3",
Source = "Output",
},
SceneInput2 = Input {
SourceOp = "Transform3D1",
Source = "Output",
},
SceneInput4 = Input {
SourceOp = "Shape3D3_1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 715, 16.5 } },
},
Shape3D3_1 = Shape3D {
Inputs = {
["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 3, },
["SurfaceCylinderInputs.ObjectID.ObjectID"] = Input { Value = 4, },
SceneInput = Input {
SourceOp = "Shape3D3_2",
Source = "Output",
},
["Transform3DOp.Translate.Y"] = Input { Value = -2.811, },
["Transform3DOp.Rotate.Y"] = Input {
Value = 68.5,
Expression = "time",
},
Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
["MtlStdInputs.ReceivesLighting"] = Input { Value = 0, },
["MtlStdInputs.ReceivesShadows"] = Input { Value = 0, },
["MtlStdInputs.MaterialID"] = Input { Value = 10, },
["SurfaceCubeInputs.SizeLock"] = Input { Value = 0, },
["SurfaceCubeInputs.Height"] = Input { Value = 6, },
["SurfaceCubeInputs.SubdivisionWidth"] = Input { Value = 1, },
["SurfaceCubeInputs.SubdivisionDepth"] = Input { Value = 1, },
["SurfaceCubeInputs.Wireframe"] = Input { Value = 1, },
["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 2, }
},
ViewInfo = OperatorInfo { Pos = { 715, -49.5 } },
},
Ellipse1 = EllipseMask {
Inputs = {
Filter = Input { Value = FuID { "Fast Gaussian" }, },
SoftEdge = Input { Value = 0.06, },
MaskWidth = Input { Value = 1920, },
MaskHeight = Input { Value = 1080, },
PixelAspect = Input { Value = { 1, 1 }, },
ClippingMode = Input { Value = FuID { "None" }, },
Width = Input { Value = 0.925303860540315, },
Height = Input { Value = 0.925303860540315, },
},
ViewInfo = OperatorInfo { Pos = { 605, -148.5 } },
},
SpotLight1 = LightSpot {
Inputs = {
["Transform3DOp.Translate.Y"] = Input { Value = 0.3, },
["Transform3DOp.Rotate.Y"] = Input { Value = -250, },
DecayType = Input { Value = 1, },
ConeAngle = Input { Value = 24.09, },
PenumbraAngle = Input { Value = 8.03, },
Dropoff = Input { Value = 2.94, },
},
ViewInfo = OperatorInfo { Pos = { 605, -115.5 } },
},
Transform3D1 = Transform3D {
Inputs = {
SceneInput = Input {
SourceOp = "Camera3D1",
Source = "Output",
},
["Transform3DOp.Translate.X"] = Input {
SourceOp = "Transform3D1X轴偏移",
Source = "Value",
},
["Transform3DOp.Translate.Y"] = Input { Value = 0.0330901880861674, },
["Transform3DOp.Translate.Z"] = Input { Value = -0.104703038902101, },
},
ViewInfo = OperatorInfo { Pos = { 715, 82.5 } },
},
["Transform3D1X轴偏移"] = BezierSpline {
SplineColor = { Red = 251, Green = 0, Blue = 0 },
CtrlWZoom = false,
KeyFrames = {
[0] = { 0, RH = { 30, 0.40283416814058 }, Flags = { Linear = true } },
[90] = { 1.20850250442174, LH = { 60, 0.805668336281161 }, RH = { 143.333333333333, 1.80100166961449 }, Flags = { Linear = true } },
[250] = { 2.986, LH = { 196.666666666667, 2.39350083480725 }, Flags = { Linear = true } }
}
},
Shape3D3 = Shape3D {
Inputs = {
["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
Shape = Input { Value = FuID { "SurfaceCubeInputs" }, },
["MtlStdInputs.Diffuse.Opacity"] = Input { Value = 0, },
["MtlStdInputs.MaterialID"] = Input { Value = 10, },
["SurfaceCubeInputs.Width"] = Input { Value = 150, },
["SurfaceCubeInputs.Visibility.Nest"] = Input { Value = 1, },
["SurfaceCubeInputs.Visibility.IgnoreTransparentPixelsInAuxChannels"] = Input { Value = 0, },
["SurfaceCubeInputs.ObjectID.ObjectID"] = Input { Value = 2, },
["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 3, }
},
ViewInfo = OperatorInfo { Pos = { 550, 16.5 } },
},
Camera3D1 = Camera3D {
Inputs = {
["Transform3DOp.Translate.X"] = Input { Value = -0.224205562895926, },
["Transform3DOp.Translate.Z"] = Input { Value = 24.7021443373949, },
AoV = Input { Value = 19.2642683071402, },
["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
ApertureW = Input { Value = 0.831496062992126, },
ApertureH = Input { Value = 0.467716535433071, },
["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
["MtlStdInputs.MaterialID"] = Input { Value = 1, },
},
ViewInfo = OperatorInfo { Pos = { 715, 115.5 } },
}
}
}
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Dio云玩家
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

