- Posts: 5
- Joined: Sun Feb 17, 2019 7:35 pm
- Real Name: Lucas Robertson
But on the off-chance that shooting in the dark helps you, there are five mandatory nodes for 3d particles:
First, you need the pEmitter node. This creates the particles and determines what they look like.
Second, you need a pRender node. This collects the information about the particles and creates either a raster (2d particles) or a 3d scene (3d particles).
Third, you need a Render3D node. This translates the 3d data into a 2d raster.
Fourth, you need a Camera3D to 'photograph' the particles.
Fifth, you need a Merge3D to combine the particles' scene data with the camera's scene data.
It's a little counter-intuitive, but you do need both of those render nodes for it to work.
Here's a quick scene that shows how it's set up. Except for the Camera, all controls are at their defaults, so the result is very boring. The Camera has been moved back so that the particles are in frame—everything defaults to being at the origin, which puts all of the particles inside the near clip range and therefore makes them invisible.
Just copy this code and paste it into the Fusion page Flow view; the nodes will appear. When you view and play the Renderer3D node, you should see tiny white specks appear (if you're looking at the transparent checker background, you might need to turn it off to be able to see them—they're quite small).
- Code: Select all
{
Tools = ordered() {
pEmitter1 = pEmitter {
ID = 2,
Inputs = {
["ParticleStyle.SizeOverLife"] = Input {
SourceOp = "pEmitter1SizeoverLife",
Source = "Value",
},
["ParticleStyle.BlurOverLife"] = Input {
SourceOp = "pEmitter1BluroverLife2D",
Source = "Value",
},
},
ViewInfo = OperatorInfo { Pos = { 330, 280.5 } },
},
pEmitter1SizeoverLife = LUTBezier {
KeyColorSplines = {
[0] = {
[0] = { 0.5, RH = { 0.3, 0.5 }, Flags = { Linear = true } },
[1] = { 0.5, LH = { 0.7, 0.5 }, Flags = { Linear = true } }
}
},
SplineColor = { Red = 0, Green = 0, Blue = 0 },
NameSet = true,
},
pEmitter1BluroverLife2D = LUTBezier {
KeyColorSplines = {
[0] = {
[0] = { 0.5, RH = { 0.3, 0.5 }, Flags = { Linear = true } },
[1] = { 0.5, LH = { 0.7, 0.5 }, Flags = { Linear = true } }
}
},
SplineColor = { Red = 0, Green = 0, Blue = 0 },
NameSet = true,
},
pRender1 = pRender {
Inputs = {
_MotionBlurWarning = Input { Disabled = true, },
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
OutputMode = Input { Disabled = true, },
IntegrationMethod = Input { Value = FuID { "RK4" }, },
["MaterialID.MaterialID"] = Input { Value = 1, },
["ObjectID.ObjectID"] = Input { Value = 1, },
Input = Input {
SourceOp = "pEmitter1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 495, 280.5 } },
},
Camera3D1 = Camera3D {
CtrlWZoom = false,
Inputs = {
["Transform3DOp.Translate.Z"] = Input { Value = 0.25, },
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 = 2, },
["MtlStdInputs.MaterialID"] = Input { Value = 2, },
},
ViewInfo = OperatorInfo { Pos = { 495, 313.5 } },
},
Merge3D1 = Merge3D {
Inputs = {
SceneInput1 = Input {
SourceOp = "pRender1",
Source = "Output",
},
SceneInput2 = Input {
SourceOp = "Camera3D1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 605, 313.5 } },
},
Renderer3D1 = Renderer3D {
CustomData = {
ToolVersion = 2,
},
Inputs = {
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
SceneInput = Input {
SourceOp = "Merge3D1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 715, 313.5 } },
}
}
}
Once you have verified that this works, you can move on to doing something more interesting with it.