Quick example....just working on x and y (but z could be added too):
- Code: Select all
{
Tools = ordered() {
FastNoise2 = FastNoise {
Inputs = {
Width = Input { Value = 2560, },
Height = Input { Value = 1440, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
Contrast = Input { Value = 3.16, },
Brightness = Input { Value = -0.3, },
XScale = Input { Value = 16.22, },
},
ViewInfo = OperatorInfo { Pos = { 134.667, 57.0606 } },
},
Text1 = TextPlus {
Inputs = {
Width = Input { Value = 256, },
Height = Input { Value = 144, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
LayoutRotation = Input { Value = 1, },
Red = Input { Value = 0.512, },
Alpha = Input { Value = 1, },
TransformRotation = Input { Value = 1, },
Softness1 = Input { Value = 1, },
StyledText = Input { Value = "PLACEHOLDER", },
Font = Input { Value = "Open Sans", },
Style = Input { Value = "Bold", },
VerticalJustificationNew = Input { Value = 3, },
HorizontalJustificationNew = Input { Value = 3, },
},
ViewInfo = OperatorInfo { Pos = { 270, 28.5758 } },
},
Background1 = Background {
Inputs = {
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
TopLeftRed = Input { Value = 1, },
TopLeftGreen = Input { Value = 1, },
TopLeftBlue = Input { Value = 1, },
},
ViewInfo = OperatorInfo { Pos = { 134.667, 161.576 } },
},
pImageEmitter1 = pImageEmitter {
ID = 1,
Inputs = {
XDensity = Input { Value = 0.005, },
YDensity = Input { Value = 0.005, },
AlphaThreshold = Input { Value = 0.173, },
Lifespan = Input { Value = 1000, },
Input = Input {
SourceOp = "Background1",
Source = "Output",
},
Style = Input { Value = FuID { "ParticleStyleBitmap" }, },
["ParticleStyleBitmap.Animate"] = Input { Value = 2, },
["ParticleStyleBitmap.DropToolsHere"] = Input {
SourceOp = "Text1",
Source = "Output",
},
["ParticleStyle.SizeControls"] = Input { Value = 1, },
["ParticleStyle.Size"] = Input { Value = 0.063, },
["ParticleStyle.SizeOverLife"] = Input {
SourceOp = "pImageEmitter1SizeOverLife",
Source = "Value",
},
["ParticleStyle.BlurOverLife"] = Input {
SourceOp = "pImageEmitter1BlurOverLife2D",
Source = "Value",
},
},
ViewInfo = OperatorInfo { Pos = { 270.667, 163.121 } },
},
pImageEmitter1SizeOverLife = 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 = 192, Green = 128, Blue = 64 },
CtrlWZoom = false,
},
pImageEmitter1BlurOverLife2D = 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 = 192, Green = 128, Blue = 64 },
CtrlWZoom = false,
},
pCustom1 = pCustom {
ID = 4,
CtrlWZoom = false,
Inputs = {
NumberIn1 = Input { Value = 0.08, },
Intermediate1 = Input { Value = "getr1w(pxi1+0.5,pyi1+0.5)", },
Intermediate2 = Input { Value = "getr1w(pxi1,pyi1)", },
PositionXExpression = Input { Value = "if(age==0,px,mass+(i1*n1))", },
PositionYExpression = Input { Value = "if(age==0,py,user+(i2*n1))", },
RedExpression = Input { Value = "1", },
GreenExpression = Input { Value = "1", },
BlueExpression = Input { Value = "1", },
AlphaExpression = Input { Value = "1", },
MassExpression = Input { Value = "if(age==0,px,mass)", },
UserExpression = Input { Value = "if(age==0,py,user)", },
Input = Input {
SourceOp = "pImageEmitter1",
Source = "Output",
},
Image1 = Input {
SourceOp = "FastNoise1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 380.667, 163.121 } },
},
pRender1 = pRender {
Inputs = {
_MotionBlurWarning = Input { Disabled = true, },
Width = Input { Value = 2560, },
Height = Input { Value = 1440, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
["MaterialID.MaterialID"] = Input { Value = 1, },
["ObjectID.ObjectID"] = Input { Value = 1, },
Input = Input {
SourceOp = "pCustom1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 490.667, 163.121 } },
},
FastNoise1 = FastNoise {
Inputs = {
Width = Input { Value = 2560, },
Height = Input { Value = 1440, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
Contrast = Input { Value = 0.59, },
XScale = Input { Value = 11.34, },
SeetheRate = Input { Value = 0.087, },
},
ViewInfo = OperatorInfo { Pos = { 487.333, 94.6364 } },
}
}
}
Few things happening in here:
- PimageEmitter creates the initial particle positions (like a grid)
- pCustom saves the initial position ("if(age==0, ") for x (in Mass) and y (in User).
- pCustom reads the Fastnoise in i1 and i2 (same image, just offsetting it to get a different value for x and y)
- Px and Py are at their base values at age=0 and then governed by Mass and User plus the offset (i1 and i2 respectively).
Hope it sorta makes sense!