Dynamic switching between polylines

User avatar
SirEdric
Fusionator
Posts: 1641
Joined: Tue Aug 05, 2014 10:04 am
Answers: 1
Been thanked: 58 times
Contact:

Dynamic switching between polylines

#1

Post by SirEdric » Thu May 16, 2019 3:52 am

Hi there.

So, imagine an EllipseMask with it's center being animated by means of a path.
(No XYPath, just the good ole' DisplacementPath).
The Path is connected to a Polyline (let's call it 'Polyline1') on the flow.
The Displacement is animated, so that the Ellipse follows that Path nicely from frame 1 to frame 100.

At Frame 101 I would like to connect to Polyline2 instead, reset the Displacement to 0,
and make the Ellipse follow the shape of Polyline2 for frames 101 to 200.

Is there any chance to dynamically switch to a different Polyline during Playback/Render?

I was thinking of a combination of some manually added <c>_InputControl</c>s accepting Polylines on the EllipseMask
plus an animatable ComboBox (or slider) to select which Polyline should be used as the animation path.

Any ideas are as always very welcome...:-)

Cheers.

Eric.

Added in 16 minutes 23 seconds:
PS:
Another option would be to somehow 'combine' Polyline1 and Polyline2.
As in: copying the points of Polyline2 and appending them to Polyline1,
making 1 larger Polyline instead of 2 small ones.
But I dont see any way to do so either....

Added in 10 minutes 35 seconds:
(Other than manually appending the point list from Poly2 to Poly1 in Notepad++, but that's not exactly the workflow I'm looking for...:-))


User avatar
intelligent machine
Fusionista
Posts: 385
Joined: Fri May 13, 2016 10:01 pm
Answers: 2
Location: Austin, Texas, USA
Been thanked: 25 times
Contact:

Re: Dynamic switching between polylines

#2

Post by intelligent machine » Thu May 16, 2019 10:13 am

I have an idea if you can attach a simple setup with at least one of the paths already connected and working as you want.


User avatar
SirEdric
Fusionator
Posts: 1641
Joined: Tue Aug 05, 2014 10:04 am
Answers: 1
Been thanked: 58 times
Contact:

Re: Dynamic switching between polylines

#3

Post by SirEdric » Thu May 16, 2019 11:33 am

Heya.

Simplified down to the most possible extent...:-)
So most of the controls sit in scrblPath.
The idea is to switch Paths in pathMaster (the Modifier of scrblPath).

Looking forward to whatever you come up with...:-)

Cheerio.

Eric.

You do not have the required permissions to view the files attached to this post.

User avatar
intelligent machine
Fusionista
Posts: 385
Joined: Fri May 13, 2016 10:01 pm
Answers: 2
Location: Austin, Texas, USA
Been thanked: 25 times
Contact:

Re: Dynamic switching between polylines

#4

Post by intelligent machine » Thu May 16, 2019 12:53 pm

hmmmm....I think I understand what you're trying to do...making things that would seem trivial as complicated as possible ;)

I know you can simply export the two paths to shape files and then import them into separate modifiers.
Then animate the displacement of each modifier 0 to 1 in order but that would be very linear and a lot of steps...and forget about iterations on the paths.

Have you tried using the paint tool instead with multiple polyline strokes?
You could set the 'write-on' for each polyline to a small range and the spacing to 1 and use the brush controls to set the size of the circle (which could later be tracked or a custom tool added to the brush if you want to change the shape)

I just fiddled with this a bit and it would seem to work but each stroke is separate and I'm sure you can come up with an expression to drive from one to the other easily:

Code: Select all

{
	Tools = ordered() {
		Background1_5 = Background {
			Inputs = {
				Width = Input { Value = 1920, },
				Height = Input { Value = 1080, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
			},
			ViewInfo = OperatorInfo { Pos = { -55, 82.5 } },
		},
		Polygon9 = PolylineMask {
			DrawMode = "InsertAndModify",
			DrawMode2 = "InsertAndModify",
			Inputs = {
				MaskWidth = Input { Value = 2048, },
				MaskHeight = Input { Value = 1152, },
				PixelAspect = Input { Value = { 1, 1 }, },
				ClippingMode = Input { Value = FuID { "None" }, },
				Polyline = Input {
					Value = Polyline {
						Closed = true,
						Points = {
							{ X = 0.00394908855556814, Y = 0.00279250120238955, LX = 0.0052358537759087, LY = -0.00806770511020882, RX = -0.00199097256244591, RY = 0.00306780521454549 },
							{ X = 0.00471654114362605, Y = 0.0250587049966185, LX = 0.00273551118939429, LY = -0.00800233886481544, RX = -0.00366735792342474, RY = 0.0107283507315016 },
							{ X = -0.00304443261152831, Y = 0.0322298463507886, LX = -0.00518669275819713, LY = 0.0108981170841351, RX = 0.00338129339451422, RY = -0.00710466823988975 },
							{ X = -0.00739669795915895, Y = -0.00618496213345426, LX = 0.00242242697857742, LY = 0.015069593821608, RX = -0.000372050751314617, RY = -0.00231446727744543 },
							{ X = -0.00508476900599436, Y = -0.0116155870392496, LX = 0.000241208348189229, LY = 0.00203559876236145, RX = -0.00311326545731543, RY = -0.0262737100355619 },
							{ X = -0.00833760430217417, Y = -0.0360424431650192, LX = -0.00504622994437891, LY = -0.0179435034166255, RX = 0.00215488580145411, RY = 0.00766239374087591 },
							{ X = -0.000916599378781358, Y = -0.00553081308361031, LX = -0.00598063422519896, LY = -0.0073574986248213, RX = 0.00352803988175484, RY = 0.00434024488048521 },
							{ X = 0.00791432574597545, Y = 0.0026849770747672, LX = 0.00232997428258592, LY = -0.00648439326674114, RX = -0.00444192866671266, RY = 0.0123620813171365 },
							{ X = -0.0120401409859903, Y = -0.0135112012927235, LX = -0.00381295312109813, LY = -0.012471977544008, RX = 0.00425156419524941, RY = 0.0139066662662808 },
							{ X = 0.00814339290260641, Y = 0.0140325229365835, LX = -0.00341516019997085, LY = -0.00780624532434147, RX = 0.00424576817070965, RY = 0.0097048292517613 },
							{ X = 0.0159084491710846, Y = 0.0319187132032364, LX = -0.00406213423954723, LY = 0.0144442425354066, RX = 0.00219394540318512, RY = -0.00780128810232969 },
							{ X = 0.00343691194492896, Y = -0.000844002522809389, LX = -0.00241464087084285, LY = 0.0138059312740582, RX = 0.00117569229496554, RY = -0.00672216312967628 },
							{ X = -0.00934397630443398, Y = 0.0099829673766739, LX = -0.00262521574373564, LY = 0.00820647644922987, RX = 0.00727844619931027, RY = -0.0227524210078403 },
							{ X = 0.00394908957271228, Y = -0.0190521519028833, LX = 0.0217939292802713, LY = -0.0129158993244797, RX = -0.00778370376012252, RY = 0.00461291458022318 },
							{ X = -0.0168158394323984, Y = 0.00444595110685209, LX = -0.00548129189896952, LY = 0.00265780056111403, RX = 0.00668444473823244, RY = -0.00324119227792802 }
						}
					},
				},
				Polyline2 = Input {
					Value = Polyline {
					},
					Disabled = true,
				},
			},
			ViewInfo = OperatorInfo { Pos = { 55, -16.5 } },
			Colors = {
				TileColor = { R = 0.474509803921569, G = 0.658823529411765, B = 0.815686274509804 },
				TextColor = { R = 0.474509803921569, G = 0.658823529411765, B = 0.815686274509804 },
			}
		},
		custombrushshape = Background {
			Inputs = {
				EffectMask = Input {
					SourceOp = "Polygon9",
					Source = "Mask",
				},
				Width = Input { Value = 1920, },
				Height = Input { Value = 1080, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				TopLeftRed = Input { Value = 0.641, },
				TopLeftAlpha = Input { Value = 0, },
			},
			ViewInfo = OperatorInfo { Pos = { 55, 16.5 } },
		},
		scrblPath = Paint {
			CtrlWZoom = false,
			Inputs = {
				Input = Input {
					SourceOp = "Background1_5",
					Source = "Output",
				},
				Paint = Input {
					SourceOp = "PolylineStroke2",
					Source = "Out",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 55, 82.5 } },
			Colors = {
				TileColor = { R = 0.913725490196078, G = 0.549019607843137, B = 0.709803921568627 },
				TextColor = { R = 0.725490196078431, G = 0.690196078431373, B = 0.592156862745098 },
			},
			UserControls = ordered() {
				pmStart = {
					LINKS_Name = "pmStart",
					LINKID_DataType = "Number",
					INPID_InputControl = "SliderControl",
					INP_Integer = false,
					INP_MinScale = 0,
					INP_MaxScale = 100,
					INP_MinAllowed = -1000000,
					INP_MaxAllowed = 1000000,
					ICS_ControlPage = "Controls"
				}
			}
		},
		PolylineStroke2 = PolylineStroke {
			Points = {
			},
			IsThreaded = false,
			Brushes = { "CircleBrush" },
			ApplyModes = { "PaintApplyColor" },
			Inputs = {
				["SoftBrush.Size"] = Input { Value = 0.0283, },
				["SoftBrush.Softness"] = Input { Value = 0.001, },
				["ImageBrush.Size"] = Input { Value = 0.5, },
				["ImageBrush.SourceTool"] = Input {
					SourceOp = "custombrushshape",
					Source = "Output",
				},
				["ImageBrush.Brush"] = Input { UserString1 = "bomb", },
				SettingsNest = Input { Value = 0, },
				Paint = Input {
					SourceOp = "PolylineStroke1",
					Source = "Out",
				},
				BrushShape = Input { Value = FuID { "CircleBrush" }, },
				ApplyControls = Input { Value = 0, },
				["PaintApplyColor.Red"] = Input { Value = 0.75, },
				["PaintApplyColor.Green"] = Input { Value = 0.35, },
				["PaintApplyColor.Blue"] = Input { Value = 0, },
				StrokeControls = Input { Value = 1, },
				StrokeAnimation = Input { Value = 5, },
				WriteOnStart = Input {
					Value = -1,
					Expression = "(RubMe*2)-1",
				},
				WriteOnEnd = Input {
					Value = -0.998,
					Expression = "WriteOnStart+.002",
				},
				Spacing = Input { Value = 0.1, },
				Polyline = Input {
					Value = Polyline {
						Closed = true,
						Points = {
							{ X = 2.32639492614428e-06, Y = -0.213135677571112, LX = 0.00402032192312973, LY = 0, RX = -0.00402032195444663, RY = 0 },
							{ X = -0.00888740126869408, Y = -0.206769802076762, LX = 0.00129475943014024, LY = -0.00380452866147174, RX = -0.0089319638287822, RY = 0.0263127022666174 },
							{ X = -0.0768106528558502, Y = -0.0933610558482956, LX = 0.0293760284902491, LY = -0.0154292170900837, RX = -0.00948082925313487, RY = 0.00498200923643199 },
							{ X = -0.102410302622463, Y = -0.085855211049474, LX = 0.00750585206880572, LY = 0, RX = -0.0132947402787651, RY = 0 },
							{ X = -0.128699531635857, Y = -0.0995111850562698, LX = 0.00548396322474276, LY = 0.00576074158723694, RX = -0.00050976681434145, RY = -0.00053165878710737 },
							{ Linear = true, X = -0.130228832078882, Y = -0.101106161417592, LX = 0.000509772441588785, LY = 0.000531664530860843, RX = -0.00773102751566856, RY = -0.00791867381459255 },
							{ X = -0.152586883155491, Y = -0.128474372397704, LX = 0.000145425879289451, LY = 0.000192337461709768, RX = -0.00168412553284281, RY = -0.00224706442961486 },
							{ X = -0.159679918122352, Y = -0.132208558370287, LX = 0.00280062102486212, LY = 0.000121970096817137, RX = -0.00281000332638687, RY = -0.000145425881666106 },
							{ X = -0.167073165406751, Y = -0.12909834730757, LX = 0.00187177178031783, LY = -0.00209225627885945, RX = -0.00041282185763275, RY = 0.000455042274890682 },
							{ X = -0.247610953469023, Y = -0.0829608178545156, LX = 0.0390022838397943, LY = -0.00035183682446327, RX = -0.000214231147116273, RY = 0 },
							{ Linear = true, X = -0.248253646910372, Y = -0.0829608178545156, LX = 0.000214229516030118, LY = 0, RX = -0.0127646394843048, RY = 0 },
							{ X = -0.276203563994078, Y = -0.0934221147674325, LX = 0.00577950597554222, LY = 0.00694291314966455, RX = -0.00991710689813319, RY = -0.0119108488242006 },
							{ X = -0.282616378979898, Y = -0.129450169801776, LX = -0.00100390770651337, LY = 0.00544174251221163, RX = 0.00379983755321089, RY = -0.0206317105666933 },
							{ X = -0.262838460934425, Y = -0.176751075671328, LX = -0.000159499362753501, LY = 0.000262704826602511, RX = 0.00206410928816392, RY = -0.00342454495536282 },
							{ X = -0.263664098493691, Y = -0.187601739513489, LX = 0.00255668090113159, LY = 0.00307270801066539, RX = -0.00255668082283944, RY = -0.00307270814488048 },
							{ X = -0.274186364849017, Y = -0.19037422961432, LX = 0.00374354356063544, LY = -0.0014120383949292, RX = -0.00602813735293334, RY = 0.00227521137445352 },
							{ X = -0.440961702493029, Y = -0.0213283528916337, LX = 0.0188772184591492, LY = -0.112043608738168, RX = -0.0129006830510247, RY = 0.0765643811184634 },
							{ X = -0.286861870766543, Y = 0.177482887933691, LX = -0.112273474452211, LY = -0.0516402632176274, RX = 0.0398279269466181, RY = 0.0183236610899282 },
							{ X = -0.17656338928683, Y = 0.214815119963597, LX = -0.00286160612569841, LY = -0.000764658679859087, RX = 0.0040109396395005, RY = 0.00107896621881298 },
							{ X = -0.166120882486777, Y = 0.210639992675793, LX = -0.00216731481073196, LY = 0.00355120634358863, RX = 0.00216731475257226, RY = -0.00355589736460971 },
							{ X = -0.167190451501717, Y = 0.19944219491997, LX = 0.00280531212193846, LY = 0.00308209048443264, RX = -0.00217200591004529, RY = -0.0024065637837003 },
							{ X = -0.177905039136047, Y = 0.0937973443736639, LX = -0.042220417257899, LY = 0.045996800455372, RX = 0.0128303156889282, RY = -0.0139796492698376 },
							{ X = -0.131486051687628, Y = 0.0724291206520663, LX = -0.0175355462407498, LY = 0, RX = 0.0343345815456182, RY = 0 },
							{ X = -0.0627371446458593, Y = 0.123290663432715, LX = -0.00359811787358122, LY = -0.0235214632837973, RX = 0.00654885583244746, RY = 0.0427505180523594 },
							{ X = -0.0553251072485956, Y = 0.224080184605522, LX = -9.38231539182599e-06, LY = -0.000577012385129416, RX = 6.09850471503526e-05, RY = 0.00423142404073606 },
							{ X = -0.0482836824584024, Y = 0.233040294663329, LX = -0.00410007169188609, LY = -0.00105551040348595, RX = 0.00410945394643547, RY = 0.00106020158892062 },
							{ X = -0.0377895654816822, Y = 0.228593068645901, LX = -0.00209694737593569, LY = 0.00367786736272291, RX = 0.00778575186423569, RY = -0.0136825426298747 },
							{ Linear = true, X = -0.0144323098889751, Y = 0.187545440756277, LX = -0.00778575764294104, LY = 0.0136825430026944, RX = 0.00474589337012998, RY = 9.53821919694731e-05 },
							{ Linear = true, X = -0.000194629778585143, Y = 0.187831587332185, LX = -0.00474588759142464, LY = -9.53868667789015e-05, RX = 0.00487098183577089, RY = -9.5382191969362e-05 },
							{ Linear = true, X = 0.0144183157287275, Y = 0.187545440756277, LX = -0.00487098500473837, LY = 9.53868667789015e-05, RX = 0.00778575186423558, RY = 0.0136825426298747 },
							{ Linear = true, X = 0.0377755713214346, Y = 0.228593068645901, LX = -0.00778575764294109, LY = -0.0136825430026943, RX = 0.00209225623300247, RY = 0.00367317630143726 },
							{ X = 0.0482649997176114, Y = 0.233040294663329, LX = -0.00410476278896255, LY = 0.00104612813942973, RX = 0.00410007163148929, RY = -0.00105551043144747 },
							{ X = 0.055311113088348, Y = 0.224080184605522, LX = -6.09850484085683e-05, LY = 0.00423611518478761, RX = 9.38231494618247e-06, RY = -0.000577012369191277 },
							{ X = 0.0627184619050684, Y = 0.123290663432715, LX = -0.00654416458549767, LY = 0.0427505176586618, RX = 0.00360750009681388, RY = -0.0235214635701229 },
							{ X = 0.13147205752738, Y = 0.0724291206520663, LX = -0.0343298896365406, LY = 0, RX = 0.0175402377919205, RY = 0 },
							{ X = 0.177895733556343, Y = 0.0937973443736639, LX = -0.0128303151968062, LY = -0.0139796493593144, RX = 0.0423846077694575, RY = 0.0461703718502492 },
							{ X = 0.167185798711864, Y = 0.19944219491997, LX = 0.00218607933884463, LY = -0.00240656383738624, RX = -0.00280531216891378, RY = 0.00308209045982655 },
							{ X = 0.166116229696925, Y = 0.210639992675793, LX = -0.00216731481073207, LY = -0.00355589744066487, RX = 0.00216262359509911, RY = 0.00355589736460971 },
							{ X = 0.176558736496978, Y = 0.214815119963597, LX = -0.00402501302020619, LY = 0.00108834850244233, RX = 0.00285691490111795, RY = -0.000769349825588295 },
							{ X = 0.286852547291493, Y = 0.177482887933691, LX = -0.0398279258728973, LY = 0.01831896979824, RX = 0.112278162961173, RY = -0.0516402614638836 },
							{ X = 0.440957098915377, Y = -0.0213283528916337, LX = 0.0129006830510247, LY = 0.0765643771099059, RX = -0.0188819088292271, RY = -0.112043605087518 },
							{ X = 0.274177059269313, Y = -0.19037422961432, LX = 0.00602813719634909, LY = 0.00227521144156095, RX = -0.00374354366353369, RY = -0.00140734724193003 },
							{ X = 0.263659463599185, Y = -0.187601739513489, LX = 0.00255668090113159, LY = -0.00306801691358904, RX = -0.00255668090113148, RY = 0.00306801691358904 },
							{ X = 0.262829119564029, Y = -0.176751075671328, LX = -0.00205941817990307, LY = -0.00342454504483958, RX = 0.000159499354085324, RY = 0.000262704818493664 },
							{ X = 0.2826117082947, Y = -0.129445445430542, LX = -0.00379045537024281, LY = -0.0205707265932639, RX = 0.000999216541770265, RY = 0.00544174266879582 },
							{ X = 0.276194222623682, Y = -0.0934173546055068, LX = 0.00991241534696252, LY = -0.0119108489852587, RX = -0.00577950600685906, RY = 0.00693822190271476 },
							{ X = 0.24824899412052, Y = -0.0829607820638244, LX = 0.0127646392785083, LY = 0, RX = -0.000212668286935114, RY = 0 },
							{ Linear = true, X = 0.247610989259715, Y = -0.0829607820638244, LX = 0.000212665805353951, LY = 0, RX = -0.0390069743888256, RY = -0.000351836810482564 },
							{ X = 0.167068476826208, Y = -0.12909834730757, LX = 0.000412821855395817, LY = 0.000459733420340336, RX = -0.0018717718317669, RY = -0.00208287391805639 },
							{ X = 0.159675193751117, Y = -0.132208558370287, LX = 0.00284753255485493, LY = -0.000136043562805277, RX = -0.00280531216891378, RY = 0.000121970094300705 },
							{ X = 0.152577470203713, Y = -0.128474372397704, LX = 0.00168881675742349, LY = -0.0022423732027973, RX = -0.00014073472419307, RY = 0.000197028613870276 },
							{ X = 0.130219383336413, Y = -0.101106161417592, LX = 0.00772633614792517, LY = -0.00790929145043429, RX = -0.000508203954160291, RY = 0.000528533066745163 },
							{ Linear = true, X = 0.128694771473932, Y = -0.0995205622173565, LX = 0.000508208730912729, LY = -0.000528537074556912, RX = -0.00548396308605392, RY = 0.00576543253443984 },
							{ X = 0.102405506669846, Y = -0.085855211049474, LX = 0.0132947407977302, LY = 0, RX = -0.00750116079948671, RY = 0 },
							{ X = 0.0768058569032334, Y = -0.0933610558482956, LX = 0.00948552075956721, LY = 0.00498200940643789, RX = -0.0294088661988633, RY = -0.015447981558918 },
							{ X = 0.00888260531607732, Y = -0.206765077705528, LX = 0.0089225812811965, LY = 0.0263033193611247, RX = -0.00128998441172246, RY = -0.0038092359023868 }
						}
					},
				},
				CommentsNest = Input { Value = 0, },
				FrameRenderScriptNest = Input { Value = 0, },
				RubMe = Input {
					SourceOp = "PolylineStroke2RubMe",
					Source = "Value",
				},
			},
			UserControls = ordered() {
				RubMe = {
					LINKS_Name = "RubMe",
					LINKID_DataType = "Number",
					INPID_InputControl = "SliderControl",
					INP_Integer = false,
					INP_MinScale = 0,
					INP_MaxScale = 1,
					INP_MinAllowed = -1000000,
					INP_MaxAllowed = 1000000,
					ICS_ControlPage = "Controls"
				}
			}
		},
		PolylineStroke1 = PolylineStroke {
			Points = {
			},
			IsThreaded = false,
			Brushes = { "ImageBrush" },
			ApplyModes = { "PaintApplyColor" },
			CtrlWZoom = false,
			Inputs = {
				["SoftBrush.Size"] = Input { Value = 0.0359, },
				["SoftBrush.Softness"] = Input { Value = 0.001, },
				BrushControls = Input { Value = 1, },
				BrushShape = Input { Value = FuID { "ImageBrush" }, },
				["ImageBrush.Size"] = Input { Value = 0.5, },
				["ImageBrush.ImageSource"] = Input { Value = 0, },
				["ImageBrush.SourceTool"] = Input {
					SourceOp = "custombrushshape",
					Source = "Output",
				},
				["ImageBrush.Brush"] = Input { UserString1 = "bomb", },
				ApplyControls = Input { Value = 0, },
				["PaintApplyColor.Red"] = Input { Value = 0.75, },
				["PaintApplyColor.Green"] = Input { Value = 0.35, },
				["PaintApplyColor.Blue"] = Input { Value = 0, },
				StrokeControls = Input { Value = 1, },
				StrokeAnimation = Input { Value = 4, },
				WriteOnStart = Input {
					SourceOp = "PolylineStroke1Start",
					Source = "Value",
					Expression = "PolylineStroke2.RubMe*2",
				},
				WriteOnEnd = Input {
					SourceOp = "PolylineStroke1End",
					Source = "Value",
					Expression = "WriteOnStart+.002",
				},
				Spacing = Input { Value = 0, },
				Polyline = Input {
					Value = Polyline {
						Closed = true,
						Points = {
							{ Linear = true, X = 0.0162864685058594, Y = 0.0410648204662182, LX = -0.00200868182712133, LY = 8.94993911555453e-05, RX = 0.004468748304579, RY = 0.0685185185185185 },
							{ Linear = true, X = 0.0296927134195963, Y = 0.246620376021774, LX = -0.00446874996026358, LY = -0.0685185185185185, RX = 0.00895659128824866, RY = 0.0231481481481481 },
							{ Linear = true, X = 0.0565624872843424, Y = 0.316064820466218, LX = -0.00895659724871312, LY = -0.0231481481481481, RX = 0.00430208841959634, RY = -0.0250339460961613 },
							{ Linear = true, X = 0.0694687525431315, Y = 0.240962982177734, LX = -0.00430208345254246, LY = 0.0250339508056642, RX = -0.00162847306993252, RY = -0.0705524774245274 },
							{ Linear = true, X = 0.0645833333333333, Y = 0.0293055499041522, LX = 0.00162847302854063, LY = 0.0705524727150245, RX = 0.0174166666666666, RY = -0.00731481481481477 },
							{ X = 0.106770833333333, Y = -0.00063889114945026, LX = -0.0121458331743878, LY = 0.0131018514986391, RX = -0.00694444444444442, RY = -0.140570991421923 },
							{ Linear = true, X = 0.0859375, Y = -0.42235186541522, LX = 0.00694444427887597, LY = 0.14057098671242, RX = -0.0746136172112069, RY = -0.0403482695631999 },
							{ X = -0.08233855565389, Y = -0.418898179796007, LX = 0.0914843320249018, LY = -0.0451807113505232, RX = -0.00754166709052195, RY = 0.138271604938272 },
							{ Linear = true, X = -0.104963556925456, Y = -0.00408336498119211, LX = 0.00754166642824805, LY = -0.138271600228769, RX = 0, RY = 0 },
							{ Linear = true, X = -0.104963556925456, Y = -0.00408336498119211, LX = 0, LY = 0, RX = 0.00164561639080152, RY = 0.00145421304777782 },
							{ X = -0.099995485941569, Y = 0.000165755660445632, LX = -0.00166616042455037, LY = -0.00137829758502833, RX = 0.00166616043245105, RY = 0.00137829756647045 },
							{ X = -0.0949674288431803, Y = 0.00418571189597794, LX = -0.00168559662997725, LY = -0.00130146565260714, RX = 0.00168559660554224, RY = 0.00130146562327382 },
							{ X = -0.089882755279541, Y = 0.00797390407986109, LX = -0.00170391201972958, LY = -0.00122376834904703, RX = 0.00170391198651454, RY = 0.0012237683055214 },
							{ X = -0.0847448031107585, Y = 0.0115277325665509, LX = -0.00172109442452589, LY = -0.00114525722132797, RX = -0.00392186906602648, RY = 0.0417160599320022 },
							{ Linear = true, X = -0.0965104103088379, Y = 0.136675912362558, LX = 0.00392187113563214, LY = -0.0417160634641295, RX = 0.00607638888888884, RY = 0.0213672873414592 },
							{ Linear = true, X = -0.0782812436421712, Y = 0.200777774386936, LX = -0.0060763890544574, LY = -0.0213672832206444, RX = 0.00942708121405711, RY = -0.0163395069263599 },
							{ Linear = true, X = -0.05, Y = 0.151759253607856, LX = -0.009427081545194, LY = 0.0163395051602964, RX = 0.00381944444444438, RY = -0.0387561751000676 },
							{ Linear = true, X = -0.0385416666666667, Y = 0.0354907283076533, LX = -0.00381944452722865, LY = 0.038756169213189, RX = 0.006835068596734, RY = 0.00146604938271599 },
							{ Linear = true, X = -0.0180364608764649, Y = 0.0398888764558015, LX = -0.00683506925900773, LY = -0.00146604941950901, RX = 0.00683506925900779, RY = 0.00146604941950901 },
							{ X = -0.033942699432373, Y = 0.154277773256655, LX = 0.00795312523841862, LY = -0.0625370378847476, RX = -0.00848437499999999, RY = 0.0669351851851852 },
							{ X = -0.0498489379882813, Y = 0.295999993218316, LX = -0.00123958339293795, LY = -0.00408333319204823, RX = -0.0205052083333334, RY = 0.0383333333333333 },
							{ X = -0.0615156173706055, Y = 0.368277768735532, LX = -0.00671874980131787, LY = -0.0119444440912316, RX = 0.0116666666666667, RY = 0.0207407407407407 },
							{ X = -0.0631041526794434, Y = 0.42105554651331, LX = -0.00335937490065891, LY = -0.000611111135394471, RX = 0.0116666666666667, RY = 0.00185185185185188 },
							{ X = -0.0341145833333333, Y = 0.295990724916811, LX = 0.0267760415871938, LY = 0.0942592620849609, RX = 0.00353645833333327, RY = -0.00848148148148153 },
							{ X = -0.0102499961853028, Y = 0.168722195095486, LX = -0.00990104178587592, LY = 0.0593888883237486, RX = 0.0111354166666667, RY = -0.0663055555555556 },
							{ X = 0.0102604230244955, Y = 0.0413333186396846, LX = 0.000531249990065819, LY = -0.00471296310424807, RX = 0.00200868182712122, RY = -8.94993911555453e-05 }
						}
					},
				},
			},
		},
		PolylineStroke1Start = BezierSpline {
			SplineColor = { Red = 232, Green = 6, Blue = 244 },
			NameSet = true,
			KeyFrames = {
				[14] = { 0, Flags = { Linear = true } }
			}
		},
		PolylineStroke1End = BezierSpline {
			SplineColor = { Red = 72, Green = 233, Blue = 54 },
			NameSet = true,
			KeyFrames = {
				[14] = { 0, Flags = { Linear = true } }
			}
		},
		PolylineStroke2RubMe = BezierSpline {
			SplineColor = { Red = 240, Green = 19, Blue = 57 },
			NameSet = true,
			KeyFrames = {
				[0] = { 0, RH = { 66.6666666666667, 0.333333333333333 }, Flags = { Linear = true } },
				[200] = { 1, LH = { 133.333333333333, 0.666666666666667 }, Flags = { Linear = true } }
			}
		}
	}
}
Last edited by intelligent machine on Thu May 16, 2019 1:00 pm, edited 1 time in total.

User avatar
Chad
Fusionator
Posts: 1362
Joined: Fri Aug 08, 2014 1:11 pm
Been thanked: 8 times

Re: Dynamic switching between polylines

#5

Post by Chad » Thu May 16, 2019 12:58 pm

Could you sample XY along the paths using Duplicate2D and record to separate 1D images as RG, then crop/merge the two images together to concatenate them? Then use a Probe to sample along the combined image?

(I downloaded your .comp, double clicked, it launched F16 and opened the comp, I immediately selected all the nodes and copy/pasted into F9. That's put off I am by the F16 interface, even a very small technical comp is too much for me to deal with in that interface.)

Code: Select all

{
	Tools = ordered() {
		Crop3 = Crop {
			CtrlWZoom = false,
			Inputs = {
				XSize = Input { Value = 100, },
				YSize = Input { Value = 2, },
				Input = Input {
					SourceOp = "TimeStretcher1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 1430, 445.5 } },
		},
		Crop4 = Crop {
			CtrlWZoom = false,
			NameSet = true,
			Inputs = {
				XOffset = Input {
					SourceOp = "Crop4XOffset",
					Source = "Value",
				},
				XSize = Input { Value = 1, },
				YSize = Input { Value = 2, },
				Input = Input {
					SourceOp = "Merge1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 1595, 478.5 } },
		},
		Crop4XOffset = BezierSpline {
			SplineColor = { Red = 250, Green = 59, Blue = 49 },
			NameSet = true,
			KeyFrames = {
				[0] = { 0, RH = { 33.3333333333333, 33 }, Flags = { Linear = true } },
				[100] = { 99, LH = { 66.6666666666667, 66 }, Flags = { Linear = true } }
			}
		},
		Merge1 = Merge {
			CtrlWZoom = false,
			Inputs = {
				Background = Input {
					SourceOp = "Crop3",
					Source = "Output",
				},
				Foreground = Input {
					SourceOp = "TimeStretcher1_1",
					Source = "Output",
				},
				Center = Input { Value = { 0.75, 0.5 }, },
				PerformDepthMerge = Input { Value = 0, },
			},
			ViewInfo = OperatorInfo { Pos = { 1485, 478.5 } },
		},
		Ellipse3_1 = EllipseMask {
			CtrlWZoom = false,
			NameSet = true,
			Inputs = {
				MaskWidth = Input { Value = 1920, },
				MaskHeight = Input { Value = 1080, },
				PixelAspect = Input { Value = { 1, 1 }, },
				ClippingMode = Input { Value = FuID { "None" }, },
				Center = Input {
					SourceOp = "Expression1",
					Source = "PointResult",
				},
				Width = Input { Value = 0.0270060689556587, },
				Height = Input { Value = 0.0270060689556587, },
			},
			ViewInfo = OperatorInfo { Pos = { 1705, 478.5 } },
		},
		Expression1 = Expression {
			CtrlWZoom = false,
			Inputs = {
				n1 = Input {
					SourceOp = "Probe1",
					Source = "Result",
				},
				n2 = Input {
					SourceOp = "Probe1",
					Source = "Green",
				},
				PointExpressionX = Input { Value = "n1", },
				PointExpressionY = Input { Value = "n2", },
			},
		},
		Probe1 = Probe {
			CtrlWZoom = false,
			Inputs = {
				ImageToProbe = Input {
					SourceOp = "Crop4",
					Source = "Output",
				},
			},
		},
		TimeStretcher1 = TimeStretcher {
			CtrlWZoom = false,
			Inputs = {
				SourceTime = Input { Value = 0, },
				InterpolateBetweenFrames = Input { Value = 0, },
				SampleSpread = Input { Disabled = true, },
				Input = Input {
					SourceOp = "Duplicate1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 1320, 412.5 } },
		},
		Duplicate2 = Fuse.Duplicate {
			CtrlWZoom = false,
			NameSet = true,
			Inputs = {
				Copies = Input { Value = 50, },
				TimeOffset = Input { Value = 1, },
				ApplyMode = Input { Value = FuID { "Lighten" }, },
				RandomSeed = Input { Value = 26024, },
				Background = Input {
					SourceOp = "Crop2",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 1210, 511.5 } },
		},
		TimeStretcher1_1 = TimeStretcher {
			CtrlWZoom = false,
			Inputs = {
				SourceTime = Input { Value = 0, },
				InterpolateBetweenFrames = Input { Value = 0, },
				SampleSpread = Input { Disabled = true, },
				Input = Input {
					SourceOp = "Duplicate2",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 1320, 511.5 } },
		},
		Duplicate1 = Fuse.Duplicate {
			CtrlWZoom = false,
			Inputs = {
				Copies = Input { Value = 50, },
				TimeOffset = Input { Value = 1, },
				ApplyMode = Input { Value = FuID { "Lighten" }, },
				RandomSeed = Input { Value = 26024, },
				Background = Input {
					SourceOp = "Crop1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 1210, 412.5 } },
		},
		Crop1 = Crop {
			CtrlWZoom = false,
			Inputs = {
				XOffset = Input {
					SourceOp = "Crop1XOffset",
					Source = "Value",
				},
				XSize = Input { Value = 50, },
				YSize = Input { Value = 2, },
				Input = Input {
					SourceOp = "Background1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 1100, 412.5 } },
		},
		Crop1XOffset = BezierSpline {
			SplineColor = { Red = 250, Green = 59, Blue = 49 },
			NameSet = true,
			KeyFrames = {
				[0] = { 0, RH = { 16.3333333333333, -16.3333333333333 }, Flags = { Linear = true } },
				[49] = { -49, LH = { 32.6666666666667, -32.6666666666667 }, Flags = { Linear = true } }
			}
		},
		Crop2 = Crop {
			CtrlWZoom = false,
			NameSet = true,
			Inputs = {
				XOffset = Input {
					SourceOp = "Crop2XOffset",
					Source = "Value",
				},
				XSize = Input { Value = 50, },
				YSize = Input { Value = 2, },
				Input = Input {
					SourceOp = "Background2",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 1100, 511.5 } },
		},
		Crop2XOffset = BezierSpline {
			SplineColor = { Red = 250, Green = 59, Blue = 49 },
			NameSet = true,
			KeyFrames = {
				[0] = { 0, RH = { 16.3333333333333, -16.3333333333333 }, Flags = { Linear = true } },
				[49] = { -49, LH = { 32.6666666666667, -32.6666666666667 }, Flags = { Linear = true } }
			}
		},
		Background1 = Background {
			CtrlWZoom = false,
			Inputs = {
				Width = Input { Value = 1, },
				Height = Input { Value = 2, },
				PixelAspect = Input { Value = { 100, 100 }, },
				Depth = Input { Value = 3, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				TopLeftRed = Input {
					Value = 0.813696612665685,
					Expression = "Ellipse1.Center.X",
				},
				TopLeftGreen = Input {
					Value = 0.86173001310616,
					Expression = "Ellipse1.Center.Y",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 990, 412.5 } },
		},
		Background2 = Background {
			CtrlWZoom = false,
			NameSet = true,
			Inputs = {
				Width = Input { Value = 1, },
				Height = Input { Value = 2, },
				PixelAspect = Input { Value = { 100, 100 }, },
				Depth = Input { Value = 3, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				TopLeftRed = Input {
					Value = 0.314432989690722,
					Expression = "Ellipse2.Center.X",
				},
				TopLeftGreen = Input {
					Value = 0.178899082568807,
					Expression = "Ellipse2.Center.Y",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 990, 511.5 } },
		},
		Ellipse2 = EllipseMask {
			CtrlWZoom = false,
			NameSet = true,
			Inputs = {
				MaskWidth = Input { Value = 1920, },
				MaskHeight = Input { Value = 1080, },
				PixelAspect = Input { Value = { 1, 1 }, },
				ClippingMode = Input { Value = FuID { "None" }, },
				Center = Input {
					SourceOp = "Path1_1",
					Source = "Position",
				},
				Width = Input { Value = 0.0270060689556587, },
				Height = Input { Value = 0.0270060689556587, },
			},
			ViewInfo = OperatorInfo { Pos = { 825, 511.5 } },
		},
		Path1_1 = PolyPath {
			DrawMode = "InsertAndModify",
			Inputs = {
				Displacement = Input {
					SourceOp = "Path1_1Displacement",
					Source = "Value",
				},
				PolyLine = Input {
					Value = Polyline {
						Points = {
							{ Linear = true, LockY = true, X = 0.316642120765832, Y = 0.0235910878112713, RX = -0.0740766948575161, RY = -0.0145882797686239 },
							{ X = 0.0944120361932831, Y = -0.0201737514945985, LX = 0.0139771079314992, LY = 0.129819957361908, RX = -0.0130018252820123, RY = -0.120761491719882 },
							{ X = -0.0457363304502395, Y = -0.0215338549688848, LX = 0.02631462938974, LY = -0.19259366083905, RX = -0.0189969640022496, RY = 0.139036561143221 },
							{ LockY = true, X = -0.185567010309278, Y = -0.321100917431193, LX = 0.0280827333761867, LY = 0.075804247581273 }
						}
					},
				},
			},
		},
		Path1_1Displacement = BezierSpline {
			SplineColor = { Red = 255, Green = 0, Blue = 255 },
			NameSet = true,
			KeyFrames = {
				[0] = { 0, RH = { 16.3333333333333, 0.333333333333333 }, Flags = { Linear = true, LockedY = true } },
				[49] = { 1, LH = { 32.6666666666667, 0.666666666666667 }, Flags = { Linear = true, LockedY = true } }
			}
		},
		Ellipse1 = EllipseMask {
			CtrlWZoom = false,
			Inputs = {
				MaskWidth = Input { Value = 1920, },
				MaskHeight = Input { Value = 1080, },
				PixelAspect = Input { Value = { 1, 1 }, },
				ClippingMode = Input { Value = FuID { "None" }, },
				Center = Input {
					SourceOp = "Path1",
					Source = "Position",
				},
				Width = Input { Value = 0.0270060689556587, },
				Height = Input { Value = 0.0270060689556587, },
			},
			ViewInfo = OperatorInfo { Pos = { 825, 412.5 } },
		},
		Path1 = PolyPath {
			DrawMode = "InsertAndModify",
			Inputs = {
				Displacement = Input {
					SourceOp = "Path1Displacement",
					Source = "Value",
				},
				PolyLine = Input {
					Value = Polyline {
						Points = {
							{ Linear = true, LockY = true, X = -0.383652430044183, Y = -0.304062909567497, RX = 0.0755277581779935, RY = 0.200819788707356 },
							{ X = -0.157069155510202, Y = 0.298396456554571, LX = -0.110318315628985, LY = -0.141101004888326, RX = 0.0870957137802527, RY = 0.111398480531471 },
							{ LockY = true, X = 0.313696612665685, Y = 0.36173001310616, LX = -0.156921922725296, LY = -0.0211111855171963 }
						}
					},
				},
			},
		},
		Path1Displacement = BezierSpline {
			SplineColor = { Red = 255, Green = 0, Blue = 255 },
			NameSet = true,
			KeyFrames = {
				[0] = { 0, RH = { 16.3333333333333, 0.333333333333333 }, Flags = { Linear = true, LockedY = true } },
				[49] = { 1, LH = { 32.6666666666667, 0.666666666666667 }, Flags = { Linear = true, LockedY = true } }
			}
		}
	}
}
Last edited by Chad on Thu May 16, 2019 2:03 pm, edited 1 time in total.

User avatar
intelligent machine
Fusionista
Posts: 385
Joined: Fri May 13, 2016 10:01 pm
Answers: 2
Location: Austin, Texas, USA
Been thanked: 25 times
Contact:

Re: Dynamic switching between polylines

#6

Post by intelligent machine » Thu May 16, 2019 1:18 pm

Meh...I gave it a week and I'm over it now...this new one takes some getting used to for sure...a few more weeks and I'll forget what I'm missing.
That, and 16 seems more stable as a beta than 9.02 release.


User avatar
SirEdric
Fusionator
Posts: 1641
Joined: Tue Aug 05, 2014 10:04 am
Answers: 1
Been thanked: 58 times
Contact:

Re: Dynamic switching between polylines

#7

Post by SirEdric » Thu May 16, 2019 11:46 pm

Thanks guys!

A Paint won't cut the mustard, since that simplified comp is just the top of the iceberg....:-)
Further down I use the X/Y Position of the Ellipse to drive some Particle Emitters.
The reason I use a Path rather than XYPath is that I need independend control over time & space in this case.
So at the end of the day one should be able to just select (or draw a new) Polyline,
and the rest of the setup follows along nicely.

Chad's idea is intriguing.
Something I used many times but didn't think of applying in this case....hmmm.....interesting.


User avatar
intelligent machine
Fusionista
Posts: 385
Joined: Fri May 13, 2016 10:01 pm
Answers: 2
Location: Austin, Texas, USA
Been thanked: 25 times
Contact:

Re: Dynamic switching between polylines

#8

Post by intelligent machine » Fri May 17, 2019 12:06 am

SirEdric wrote:
Thu May 16, 2019 11:46 pm

Chad's idea is intriguing.
Something I used many times but didn't think of applying in this case....hmmm.....interesting.

Yeah...I already saved that one off in my library.