Page 1 of 1
Particles with a unique appearance

Posted:
Wed Sep 02, 2015 12:10 pm
by Simon Brown
From the tool reference, under "Particle Birth Time":
"particles generated on a given frame will all have the same appearance, and will stay that way"
Is there any way to give each individual particle a unique appearance? I want to have the particles retain their initial appearance across their lifespan, but I don't want to have duplicates, and emitting one particle per frame leads to the particles appearing stationary.
Re: Particles with a unique appearance

Posted:
Wed Sep 02, 2015 5:29 pm
by Rony Soussan
Yes, that is particle birth time.
Take a look at this example from the templates folder
- Code: Select all
{
Tools = ordered() {
Text1_1 = TextPlus {
Inputs = {
Width = Input { Value = 64, },
Height = Input { Value = 64, },
Center = Input { Value = { 0.5, 0.596153846153846, }, },
Size = Input { Value = 1.4, },
Font = Input { Value = "Arial", },
StyledText = Input {
SourceOp = "TextScramble1",
Source = "ScrambledText",
},
Style = Input { Value = "Bold", },
ManualFontKerningPlacement = Input {
Value = StyledText {
Array = {
},
Value = "",
},
},
Red1 = Input { Value = 0.290105814860636, },
Blue1 = Input { Value = 0.115911111111111, },
Alpha1 = Input { Value = 0.6, },
ShadingGradient1 = Input {
Value = Gradient {
Colors = {
[0] = { 0, 0, 0, 1, },
[1] = { 1, 1, 1, 1, },
},
},
},
RenderToDPTFile = Input { Disabled = true, },
DPTType = Input { Disabled = true, },
DPTResolution = Input { Disabled = true, },
},
ViewInfo = OperatorInfo { Pos = { 745.201, 0.455444, }, },
},
TextScramble1 = TextScramble {
CtrlWZoom = false,
Inputs = {
Randomness = Input { Value = 1, },
InputText = Input { Value = "a", },
},
},
pSpawn1 = pSpawn {
ID = 14,
Inputs = {
Number = Input { Value = 0.5, },
Lifespan = Input { Value = 30, },
VelocityControls = Input { Value = 1, },
VelocityTransfer = Input { Value = 0, },
RotationControls = Input { Value = 1, },
AlwaysFaceCamera = Input { Value = 0, },
Input = Input {
SourceOp = "pEmitter1_1",
Source = "Output",
},
Style = Input { Value = FuID { "ParticleStyleBitmap", }, },
["ParticleStyle.ColorOverLife"] = Input {
Value = Gradient {
Colors = {
[0] = { 1, 1, 1, 1, },
},
},
},
["ParticleStyle.SizeControls"] = Input { Value = 1, },
["ParticleStyle.Size"] = Input { Value = 0.05, },
["ParticleStyle.SizeOverLife"] = Input {
SourceOp = "pSpawn1SizeoverLife",
Source = "Value",
},
["ParticleStyle.FadeControls"] = Input { Value = 1, },
["ParticleStyle.FadeOut"] = Input { Value = 0.106383, },
["ParticleStyle.BlurOverLife"] = Input {
SourceOp = "pSpawn1BluroverLife2D",
Source = "Value",
},
["ParticleStyleBitmap.Animate"] = Input { Value = 2, },
["ParticleStyleBitmap.DropToolsHere"] = Input {
SourceOp = "Text1_1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 1020.2, 99.4554, }, },
},
pSpawn1SizeoverLife = LUTBezier {
KeyColorSplines = {
[0] = {
[0] = { 0.5, RH = { 0.333333333333333, 0.5, }, Flags = { Linear = true, }, },
[1] = { 0.5, LH = { 0.666666666666667, 0.5, }, Flags = { Linear = true, }, },
},
},
SplineColor = { Red = 192, Green = 128, Blue = 64, },
NameSet = true,
},
pSpawn1BluroverLife2D = LUTBezier {
KeyColorSplines = {
[0] = {
[0] = { 0.5, RH = { 0.333333333333333, 0.5, }, Flags = { Linear = true, }, },
[1] = { 0.5, LH = { 0.666666666666667, 0.5, }, Flags = { Linear = true, }, },
},
},
SplineColor = { Red = 192, Green = 128, Blue = 64, },
NameSet = true,
},
pEmitter1_1 = pEmitter {
ID = 17,
Inputs = {
Number = Input { Value = 30, },
NumberVariance = Input { Value = 10, },
Lifespan = Input { Value = 75, },
LifespanVariance = Input { Value = 50, },
VelocityControls = Input { Value = 1, },
Velocity = Input { Value = 0.3, },
Angle = Input { Value = -90, },
RotationControls = Input { Value = 1, },
AlwaysFaceCamera = Input { Value = 0, },
Style = Input { Value = FuID { "ParticleStyleBitmap", }, },
Region = Input { Value = FuID { "CubeRgn", }, },
["ParticleStyle.ColorOverLife"] = Input {
Value = Gradient {
Colors = {
[0] = { 1, 1, 1, 1, },
},
},
},
["ParticleStyle.SizeControls"] = Input { Value = 1, },
["ParticleStyle.Size"] = Input { Value = 0.05, },
["ParticleStyle.SizeOverLife"] = Input {
SourceOp = "pEmitter1SizeoverLife_1",
Source = "Value",
},
["ParticleStyle.BlurOverLife"] = Input {
SourceOp = "pEmitter1BluroverLife2D_1",
Source = "Value",
},
["ParticleStyleBitmap.Animate"] = Input { Value = 1, },
["ParticleStyleBitmap.DropToolsHere"] = Input {
SourceOp = "Text1_1",
Source = "Output",
},
["CubeRgn.Width"] = Input { Value = 10, },
["CubeRgn.Height"] = Input { Value = 5, },
["CubeRgn.Depth"] = Input { Value = 10, },
},
ViewInfo = OperatorInfo { Pos = { 910.201, 99.4554, }, },
},
pEmitter1SizeoverLife_1 = LUTBezier {
KeyColorSplines = {
[0] = {
[0] = { 0.5, RH = { 0.333333333333333, 0.5, }, Flags = { Linear = true, }, },
[1] = { 0.5, LH = { 0.666666666666667, 0.5, }, Flags = { Linear = true, }, },
},
},
SplineColor = { Red = 192, Green = 128, Blue = 64, },
},
pEmitter1BluroverLife2D_1 = LUTBezier {
KeyColorSplines = {
[0] = {
[0] = { 0.5, RH = { 0.333333333333333, 0.5, }, Flags = { Linear = true, }, },
[1] = { 0.5, LH = { 0.666666666666667, 0.5, }, Flags = { Linear = true, }, },
},
},
SplineColor = { Red = 192, Green = 128, Blue = 64, },
},
pRender1_1 = pRender {
Inputs = {
["_MotionBlurWarning"] = Input { Disabled = true, },
Width = Input { Value = 2048, },
Height = Input { Value = 1556, },
OutputMode = Input { Disabled = true, },
IntegrationMethod = Input { Value = FuID { "RK4", }, },
["MaterialID.MaterialID"] = Input { Value = 2, },
["ObjectID.ObjectID"] = Input { Value = 2, },
Input = Input {
SourceOp = "pSpawn1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 1130.2, 99.4554, }, },
},
Camera3D1 = Camera3D {
Inputs = {
["Transform3DOp.Translate.Z"] = Input {
SourceOp = "Camera3D1ZOffset",
Source = "Value",
},
AoV = Input { Value = 24.3265863475745, },
["Stereo.Mode"] = Input { Value = FuID { "OffAxis", }, },
["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 3, },
["MtlStdInputs.MaterialID"] = Input { Value = 3, },
},
ViewInfo = OperatorInfo { Pos = { 1130.2, 165.455, }, },
},
Camera3D1ZOffset = BezierSpline {
SplineColor = { Red = 254, Green = 56, Blue = 46, },
NameSet = true,
KeyFrames = {
[0] = { 5, RH = { 133.333333333333, 3.33333333333333, }, Flags = { Linear = true, }, },
[400] = { 0, LH = { 266.666666666667, 1.66666666666667, }, Flags = { Linear = true, }, },
},
},
Merge3D1_1 = Merge3D {
Inputs = {
SceneInput1 = Input {
SourceOp = "pRender1_1",
Source = "Output",
},
SceneInput2 = Input {
SourceOp = "Camera3D1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 1240.2, 165.455, }, },
},
Renderer3D1 = Renderer3D {
CtrlWZoom = false,
Inputs = {
Width = Input { Value = 1280, },
Height = Input { Value = 720, },
SceneInput = Input {
SourceOp = "Merge3D1_1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 1350.2, 165.455, }, },
},
},
}
Here we have a text tool scrambling letters, and the particle system picks each letter and holds that letter as the particle.
Re: Particles with a unique appearance

Posted:
Thu Sep 03, 2015 8:37 am
by Sander de Regt
Unfortunately this still doesn't work with images as far as I know, which would be one of the greatest additions to particles possible. (but it probably goes against something inside of Fusion's core code, since it has never been implemented so far)
Selecting a random 'sprite' from a sequence without having to do preroll workarounds, would be great.
Also the way Fusion creates particle positions should IMO be based on real time (i.e. seconds not frames) That's the only way you'll ever be able to implement motion-blur that doesn't result in particles changing position when you change the motion blur values.
Re: Particles with a unique appearance

Posted:
Thu Sep 03, 2015 5:02 pm
by Rony Soussan
Fusion does indeed do what your looking for, I guess I'm not understanding.
If you look at the text tool, it's scrambling letters randomly, these letters are becoming the birth particle.
To pre-roll just set a negative global in. -100 but render range start at 0 or 1
Now when you go to frame one, you will have 100 frames of preroll
Re: Particles with a unique appearance

Posted:
Fri Sep 04, 2015 9:12 am
by Sander de Regt
Ideally there shouldn't be a need of a preroll. If you make an explosion or smoke stack for example. You'd want 10 different cloud puffs to appear randomly from frame 0. You can't do that with image sequences as far as I know, since there is no subframe calculation for timespeed/stretcher as far as I know.
Re: Particles with a unique appearance

Posted:
Fri Sep 04, 2015 4:03 pm
by Rony Soussan
Correct.
That part has alway been an issue.
There is a preroll option in prender but I think that's 2D
I believe it is 2D only
That being said, you are correct, not ideal.
So, set a negative value, but don't have your particles visible until frame 1.
Then apply your explosion settings. Not ideal, I get that.
Also, you could have several pMerge,.from instance of emitter, with alt bitmap. Just change random seed generator.
Best I can do for you right now.
Re: Particles with a unique appearance

Posted:
Tue Sep 08, 2015 7:01 pm
by Chad Capeland
Rony Soussan wrote:Best I can do for you right now.
The particles can have vertex color, so really, you just need a shader for that. Randomize the input frame based on say, vertexcolor.r?
And TimeSpeed/TimeStretcher could sample subframes; if you make a Fuse for that, you may find out that that's how it would work by default unless you explicitly told it not to.

Re: Particles with a unique appearance

Posted:
Tue Sep 08, 2015 8:24 pm
by Rony Soussan
Chad, this is an english speaking forum!