Page 1 of 1

motion path struggles

PostPosted: Tue Nov 21, 2017 9:22 am
by Rick van den Berg
Hi, im having some problems with motion paths, im trying to make a cartoony rollercoaster, really basic 2d stuff. but i just cant find a way to create a smooth looking animation. here's the comp:
Code: Select all
{
   Tools = ordered() {
      Background10 = Background {
         Inputs = {
            GlobalOut = Input { Value = 250, },
            Width = Input { Value = 657, },
            Height = Input { Value = 351, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.731, },
            TopLeftBlue = Input { Value = 0.106, },
         },
         ViewInfo = OperatorInfo { Pos = { 10268.7, 808.5 } },
      },
      Polygon13 = PolylineMask {
         DrawMode = "ModifyOnly",
         DrawMode2 = "InsertAndModify",
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Polyline = Input {
               SourceOp = "Polygon13Polyline",
               Source = "Value",
            },
            Polyline2 = Input {
               Value = Polyline {
               },
               Disabled = true,
            },
         },
         ViewInfo = OperatorInfo { Pos = { 10395, 775.5 } },
      },
      Polygon13Polyline = BezierSpline {
         SplineColor = { Red = 173, Green = 255, Blue = 47 },
         NameSet = true,
         KeyFrames = {
            [86] = { 0, Flags = { Linear = true, LockedY = true }, Value = Polyline {
                  Closed = true,
                  Points = {
                     { Linear = true, X = 0.140315532684326, Y = 0.364302664995193, LX = 0.00993384917577108, LY = -0.0909608900547028, RX = 0.0383807917435964, RY = -0.00165347258249917 },
                     { Linear = true, X = 0.255457907915115, Y = 0.359342247247696, LX = -0.0383807917435964, LY = 0.00165347258249917, RX = -0.00722460945447286, RY = -0.0868066549301148 },
                     { Linear = true, X = 0.233784079551697, Y = 0.0989222824573517, LX = 0.00722460945447286, LY = 0.0868066549301148, RX = 0.0415809055169423, RY = 0 },
                     { Linear = true, X = 0.358526796102524, Y = 0.0989222824573517, LX = -0.0415809055169423, LY = 0, RX = 0.00718533992767334, RY = -0.0934205055236817 },
                     { X = 0.380082696676254, Y = -0.181339174509048, LX = 0.00812768936157227, LY = 0.133930251002312, RX = -0.00280946493148804, RY = -0.0462951809167862 },
                     { X = 0.3448626101017, Y = -0.305348664522171, LX = 0.0162053108215332, LY = 0.0388571321964264, RX = 0.00677309433619181, RY = -0.0272821088631948 },
                     { Linear = true, X = 0.365181893110275, Y = -0.387194991111755, LX = -0.00677309433619181, LY = 0.0272821088631948, RX = -0.236627558867137, RY = 0 },
                     { Linear = true, X = -0.344700783491135, Y = -0.387194991111755, LX = 0.236627558867137, LY = 0, RX = 0, RY = 0.218258152405421 },
                     { Linear = true, X = -0.344700783491135, Y = 0.267579466104507, LX = 0, LY = -0.218258152405421, RX = 0.0528531571229299, RY = 0 },
                     { Linear = true, X = -0.186141312122345, Y = 0.267579466104507, LX = -0.0528531571229299, LY = 0, RX = 0.0139957666397095, RY = -0.0132290720939637 },
                     { X = -0.144154012203217, Y = 0.227892190217972, LX = -0.0189646333456039, LY = 0.0496037602424622, RX = 0.0269903540611267, RY = -0.0705958604812622 },
                     { X = -0.0831962525844574, Y = -0.00524568557739258, LX = -0.0169837176799774, LY = 0.0812709927558899, RX = 0.000451539953549703, RY = -0.0644849389791489 },
                     { Linear = true, X = -0.0818416327238083, Y = -0.198700502514839, LX = -0.000451539953549703, LY = 0.0644849389791489, RX = 0.0546436856190364, RY = 0 },
                     { Linear = true, X = 0.0820894241333008, Y = -0.198700502514839, LX = -0.0546436856190364, LY = 0, RX = 0, RY = 0.113274251421293 },
                     { Linear = true, X = 0.0820894241333008, Y = 0.141122251749039, LX = 0, LY = -0.113274251421293, RX = 0.012184073527654, RY = 0 },
                     { Linear = true, X = 0.118641644716263, Y = 0.141122251749039, LX = -0.012184073527654, LY = 0, RX = 0, RY = -0.0165674189726512 },
                     { Linear = true, X = 0.118641644716263, Y = 0.0914199948310852, LX = 0, LY = 0.0165674189726512, RX = 0.0171584784984589, RY = 0 },
                     { Linear = true, X = 0.170117080211639, Y = 0.0914199948310852, LX = -0.0171584784984589, LY = 0, RX = -0.00993384917577108, RY = 0.0909608900547028 }
                  }
               } }
         }
      },
      MatteControl9 = MatteControl {
         Inputs = {
            MultiplyByMask = Input { Value = 1, },
            EffectMask = Input {
               SourceOp = "Polygon13",
               Source = "Mask",
            },
            Background = Input {
               SourceOp = "Background10",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 10433.7, 808.5 } },
      },
      Ellipse6 = EllipseMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.419, },
            Height = Input { Value = 0.419, },
            Angle = Input { Value = -22.825403886401, },
         },
         ViewInfo = OperatorInfo { Pos = { 10378.7, 1006.5 } },
      },
      Background10_1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 250, },
            Width = Input { Value = 100, },
            Height = Input { Value = 100, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Type = Input { Value = FuID { "Gradient" }, },
            TopLeftRed = Input { Value = 0.683792069880592, },
            TopLeftGreen = Input { Value = 0.731, },
            TopLeftBlue = Input { Value = 0.67252, },
            GradientType = Input { Value = FuID { "Radial" }, },
            Start = Input { Value = { 0.500440358886523, 0.482718696092153 }, },
            End = Input { Value = { 0.814488282878338, 0.462258489445034 }, },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0.184563758389262] = { 1, 1, 1, 1 },
                     [0.852348993288591] = { 0.444444444444444, 0.444444444444444, 0.444444444444444, 1 },
                     [1] = { 0, 0, 0, 1 }
                  }
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 10268.7, 1105.5 } },
      },
      Transform8 = Transform {
         Inputs = {
            Size = Input { Value = 0.803, },
            Input = Input {
               SourceOp = "MatteControl10",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 10488.7, 1105.5 } },
      },
      MatteControl10 = MatteControl {
         Inputs = {
            MultiplyByMask = Input { Value = 1, },
            EffectMask = Input {
               SourceOp = "Ellipse6",
               Source = "Mask",
            },
            Background = Input {
               SourceOp = "Background10_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 10378.7, 1105.5 } },
      },
      Merge72 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge71",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform8",
               Source = "Output",
            },
            Center = Input { Value = { 3.37485635146844, 0.5 }, },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 10708.7, 1171.5 } },
      },
      Merge71 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Transform8",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform8",
               Source = "Output",
            },
            Center = Input { Value = { 1.87945349653228, 0.5 }, },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 10598.7, 1171.5 } },
      },
      Merge70 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "MatteControl9",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Merge73",
               Source = "Output",
            },
            Center = Input { Value = { 0.189113355780022, 0.0588235294117647 }, },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 10928.7, 1138.5 } },
      },
      Merge73 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge72",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform8",
               Source = "Output",
            },
            Center = Input { Value = { 4.81003714710253, 0.5 }, },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 10818.7, 1171.5 } },
      },
      Background9_2 = Background {
         Inputs = {
            GlobalOut = Input { Value = 250, },
            Width = Input { Value = 2081, },
            Height = Input { Value = 422, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftAlpha = Input { Value = 0, },
            GradientType = Input { Value = FuID { "Reflect" }, },
            Start = Input { Value = { 0.363636363636364, 0.689054726368159 }, },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 0, 0, 0, 0 },
                     [0.590604026845638] = { 0.5704, 0.604760442306384, 0.62, 1 },
                     [0.996644295302013] = { 0.753, 0.73794, 0.749235, 1 }
                  }
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 10983.7, 1204.5 } },
      },
      Transform9 = Transform {
         CtrlWZoom = false,
         Inputs = {
            Center = Input {
               SourceOp = "Path3",
               Source = "Position",
            },
            Size = Input { Value = 0.394724749563459, },
            Input = Input {
               SourceOp = "Merge75",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 11093.7, 1237.5 } },
      },
      Path3 = PolyPath {
         DrawMode = "InsertAndModify",
         Inputs = {
            Displacement = Input {
               SourceOp = "Path3Displacement",
               Source = "Value",
            },
            PolyLine = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, LockY = true, X = -0.532110747082621, Y = -0.528657616892911, RX = 0.0506220792077218, RY = 0.0307297289515581 },
                     { LockY = true, X = -0.431462585816366, Y = -0.250735118850891, LX = -0.0298865253539417, LY = -0.117708504403188, RX = 0.08189175756474, RY = 0.315555490604537 },
                     { LockY = true, X = -0.184992224174239, Y = -0.225275654028189, LX = -0.0694085322067332, LY = -0.013638520739882, RX = 0.0281579158735543, RY = -0.00844043367930092 },
                     { X = -0.118145290674238, Y = -0.167021205199176, LX = -0.0174863878659429, LY = -0.0451991419451823, RX = 0.0301529204034943, RY = 0.077939819156957 },
                     { LockY = true, X = -0.041347362204172, Y = 0.14990854874222, LX = -0.0295667638158061, LY = -0.0854995324409278, RX = 0.0196396691776323, RY = 0.0660018184411643 },
                     { LockY = true, X = 0.0587324838839807, Y = 0.246267910383714, LX = -0.0511828559532792, LY = 0.0451933586047427, RX = 0.0840534232622805, RY = -0.0796742017009852 },
                     { LockY = true, X = 0.295026074414798, Y = -0.220982968309171, LX = -0.12104727017265, LY = -0.116799445048963, RX = 0.0268406927069304, RY = 0.0193390031261175 },
                     { X = 0.384607934414976, Y = -0.227719433006199, LX = -0.0319563529443387, LY = 0.0381087879582207, RX = 0.0503617811865841, RY = -0.0600577383613527 },
                     { LockY = true, X = 0.531570884427214, Y = -0.460177420669768, LX = -0.0556200078466448, LY = -0.0281730496462278 }
                  }
               },
            },
         },
      },
      Path3Displacement = BezierSpline {
         SplineColor = { Red = 255, Green = 0, Blue = 255 },
         NameSet = true,
         KeyFrames = {
            [0] = { 0, RH = { 4, 0 }, Flags = { LockedY = true } },
            [12] = { 0.133625894735683, LH = { 8.00040006637573, 0.100802479114224 }, RH = { 18.6659295739483, 0.188331010382289 }, Flags = { LockedY = true } },
            [32] = { 0.303646964233612, LH = { 25.3341144149717, 0.243821369139728 }, RH = { 38.6659998893738, 0.363473585196513 }, Flags = { LockedY = true } },
            [52] = { 0.492621526033368, LH = { 45.3340001106262, 0.42952252111527 }, RH = { 56.3327799963797, 0.533634743980822 }, Flags = { LockedY = true } },
            [65] = { 0.568689293520645, LH = { 60.6671623593335, 0.534300913253522 }, RH = { 72.9991998672485, 0.63217644667078 }, Flags = { LockedY = true } },
            [89] = { 0.825962419692375, LH = { 81.0008001327515, 0.768460077258833 }, RH = { 100.998678880155, 0.912215064102686 }, Flags = { LockedY = true } },
            [125] = { 1, LH = { 113.001200199127, 1 }, RH = { 133, 1 }, Flags = { LockedY = true } },
            [149] = { 1, LH = { 141, 1 }, Flags = { Linear = true, Extrapolate = true } }
         }
      },
      Merge75 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background9_2",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Merge70",
               Source = "Output",
            },
            Center = Input { Value = { 0.5, 0.770650456802115 }, },
            Size = Input { Value = 0.581, },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 11093.7, 1204.5 } },
      }
   }
}


my goal is to make the car/train move at a single speed. no accelleration, or braking. it has to be perfect, because i want to attach more cars, and there will grow a gap between the cars if it speeds up.

anyone who can help me?

Re: motion path struggles

PostPosted: Tue Nov 21, 2017 11:01 am
by Umberto Uderzo
I suspect you get the struggling effect because you animated the center point over time and you didn't position in time the key frames so that the motion is uniform.

Maybe this tutorial is of any help?

http://lesterbanks.com/2017/06/easily-create-motion-path-mask-fusion/

It works on a different concept, that is to use a mask path, where each spline point is defined statically, and to work with the displacement over the path to get an uniform motion.
I tried to follow it but, while i got better results, they still don't look like perfectly uniform.

Edit: Maybe because i tried with a BSpline instead of a polyline? Just guessing...

Re: motion path struggles

PostPosted: Tue Nov 21, 2017 11:43 am
by Rick van den Berg
yeah i saw that one, i first started with the same idea, but still the same issue

Re: motion path struggles

PostPosted: Tue Nov 21, 2017 12:02 pm
by Sander de Regt
In the basis the idea of seperating displacement and the shape of the motion-path is a good one.
The main reason that it's a little unpredictable at times is that what is logical for us humans (just keep the same speed along the path) is not so simple for Fusion. The curvature of the spline and the handles of the spline points all influence the 'length' of the spline internally. I haven't found a way around this yet, but it can be difficult to work with this.

Best example is write on/write off. If you create a spline and use that as a paintstroke and then animate the write on end to go from 0-1 and use that same spline to move a small dot over time and animate the displacement from 0-1 in the same way you did with the Write On End, the two will not match up.
It's really annoying.

Re: motion path struggles

PostPosted: Tue Nov 21, 2017 4:02 pm
by Umberto Uderzo
Looks like the only viable option is to "sample" the BSpline curve by quantization and create a number or nearly linear curves all of the same length. This would make the path traversing more uniform, but it's a destructive way.
Or maybe writing a fuse (whathever thing a fuse is :? )that transforms a path into a "quantized path" so the original path is still editable in its original form.

Re: motion path struggles

PostPosted: Tue Nov 21, 2017 5:13 pm
by JP Docherty
Another method that I've found quite useful is detailed here -
http://tale2tell.com/fusion-motion-paths/

Re: motion path struggles

PostPosted: Tue Nov 21, 2017 7:54 pm
by Sander de Regt
JP Docherty wrote:Another method that I've found quite useful is detailed here -
http://tale2tell.com/fusion-motion-paths/

You really, really shouldn't follow the workflow demonstrated in this video. It's so completely wrong in so many ways. There is no need to export/import paths in Fusion.
He should have just added points on the very first path he creates to shape the motion path the way he wants to and he'd be done. It's a sympathetic video and the method works. But the whole point of working in Fusion is that you can keep almost anything connected all the time in a non-destructive way.

Re: motion path struggles

PostPosted: Tue Nov 21, 2017 10:23 pm
by Umberto Uderzo
Just to try every possible approach, i applied the technique hoping in some kind of escamotage to obtain an uniform movement speed but too bad nothing changes. Guess the issue must be faced in a different way, if possible. At the moment the only solution i see is to apply some manual correction until the movement "looks like" is't uniform, but sure it's not easy in every case.

Re: motion path struggles

PostPosted: Wed Nov 22, 2017 8:24 pm
by Marcus Goller
Have a look at this version, if this covers your needs.

I converted the motion path to a XY Path (Fusion 9 User Manual, page 305) and deleted the superflous keyframes for the X value to make it a straight line.

I also removed the Matte Control nodes, as you can connect the mask directly to the background node.

Code: Select all
{
   Tools = ordered() {
      Ellipse6 = EllipseMask {
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input { Value = 0.419, },
            Height = Input { Value = 0.419, },
            Angle = Input { Value = -22.825403886401, },
         },
         ViewInfo = OperatorInfo { Pos = { 605, 313.5 } },
      },
      Background10 = Background {
         Inputs = {
            GlobalOut = Input { Value = 150, },
            Width = Input { Value = 657, },
            Height = Input { Value = 351, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.731, },
            TopLeftBlue = Input { Value = 0.106, },
            EffectMask = Input {
               SourceOp = "Polygon13",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1138.7, 346.5 } },
      },
      Polygon13 = PolylineMask {
         DrawMode = "ModifyOnly",
         DrawMode2 = "InsertAndModify",
         Inputs = {
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Polyline = Input {
               SourceOp = "Polygon13Polyline",
               Source = "Value",
            },
            Polyline2 = Input {
               Value = Polyline {
               },
               Disabled = true,
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1155, 280.5 } },
      },
      Polygon13Polyline = BezierSpline {
         SplineColor = { Red = 173, Green = 255, Blue = 47 },
         NameSet = true,
         KeyFrames = {
            [86] = { 0, Flags = { Linear = true, LockedY = true }, Value = Polyline {
                  Closed = true,
                  Points = {
                     { Linear = true, X = 0.140315532684326, Y = 0.364302664995193, LX = 0.00993384917577108, LY = -0.0909608900547028, RX = 0.0383807917435964, RY = -0.00165347258249917 },
                     { Linear = true, X = 0.255457907915115, Y = 0.359342247247696, LX = -0.0383807917435964, LY = 0.00165347258249917, RX = -0.00722460945447286, RY = -0.0868066549301148 },
                     { Linear = true, X = 0.233784079551697, Y = 0.0989222824573517, LX = 0.00722460945447286, LY = 0.0868066549301148, RX = 0.0415809055169423, RY = 0 },
                     { Linear = true, X = 0.358526796102524, Y = 0.0989222824573517, LX = -0.0415809055169423, LY = 0, RX = 0.00718533992767334, RY = -0.0934205055236817 },
                     { X = 0.380082696676254, Y = -0.181339174509048, LX = 0.00812768936157227, LY = 0.133930251002312, RX = -0.00280946493148804, RY = -0.0462951809167862 },
                     { X = 0.3448626101017, Y = -0.305348664522171, LX = 0.0162053108215332, LY = 0.0388571321964264, RX = 0.00677309433619181, RY = -0.0272821088631948 },
                     { Linear = true, X = 0.365181893110275, Y = -0.387194991111755, LX = -0.00677309433619181, LY = 0.0272821088631948, RX = -0.236627558867137, RY = 0 },
                     { Linear = true, X = -0.344700783491135, Y = -0.387194991111755, LX = 0.236627558867137, LY = 0, RX = 0, RY = 0.218258152405421 },
                     { Linear = true, X = -0.344700783491135, Y = 0.267579466104507, LX = 0, LY = -0.218258152405421, RX = 0.0528531571229299, RY = 0 },
                     { Linear = true, X = -0.186141312122345, Y = 0.267579466104507, LX = -0.0528531571229299, LY = 0, RX = 0.0139957666397095, RY = -0.0132290720939637 },
                     { X = -0.144154012203217, Y = 0.227892190217972, LX = -0.0189646333456039, LY = 0.0496037602424622, RX = 0.0269903540611267, RY = -0.0705958604812622 },
                     { X = -0.0831962525844574, Y = -0.00524568557739258, LX = -0.0169837176799774, LY = 0.0812709927558899, RX = 0.000451539953549703, RY = -0.0644849389791489 },
                     { Linear = true, X = -0.0818416327238083, Y = -0.198700502514839, LX = -0.000451539953549703, LY = 0.0644849389791489, RX = 0.0546436856190364, RY = 0 },
                     { Linear = true, X = 0.0820894241333008, Y = -0.198700502514839, LX = -0.0546436856190364, LY = 0, RX = 0, RY = 0.113274251421293 },
                     { Linear = true, X = 0.0820894241333008, Y = 0.141122251749039, LX = 0, LY = -0.113274251421293, RX = 0.012184073527654, RY = 0 },
                     { Linear = true, X = 0.118641644716263, Y = 0.141122251749039, LX = -0.012184073527654, LY = 0, RX = 0, RY = -0.0165674189726512 },
                     { Linear = true, X = 0.118641644716263, Y = 0.0914199948310852, LX = 0, LY = 0.0165674189726512, RX = 0.0171584784984589, RY = 0 },
                     { Linear = true, X = 0.170117080211639, Y = 0.0914199948310852, LX = -0.0171584784984589, LY = 0, RX = -0.00993384917577108, RY = 0.0909608900547028 }
                  }
               } }
         }
      },
      Transform8 = Transform {
         Inputs = {
            Size = Input { Value = 0.803, },
            Input = Input {
               SourceOp = "Background10_1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 715, 412.5 } },
      },
      Background10_1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 150, },
            Width = Input { Value = 100, },
            Height = Input { Value = 100, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Type = Input { Value = FuID { "Gradient" }, },
            TopLeftRed = Input { Value = 0.683792069880592, },
            TopLeftGreen = Input { Value = 0.731, },
            TopLeftBlue = Input { Value = 0.67252, },
            GradientType = Input { Value = FuID { "Radial" }, },
            Start = Input { Value = { 0.500440358886523, 0.482718696092153 }, },
            End = Input { Value = { 0.814488282878338, 0.462258489445034 }, },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0.184563758389262] = { 1, 1, 1, 1 },
                     [0.852348993288591] = { 0.444444444444444, 0.444444444444444, 0.444444444444444, 1 },
                     [1] = { 0, 0, 0, 1 }
                  }
               },
            },
            EffectMask = Input {
               SourceOp = "Ellipse6",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 605, 412.5 } },
      },
      Merge70 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background10",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Merge73",
               Source = "Output",
            },
            Center = Input { Value = { 0.189113355780022, 0.0588235294117647 }, },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1155, 445.5 } },
      },
      Merge73 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge72",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform8",
               Source = "Output",
            },
            Center = Input { Value = { 4.81003714710253, 0.5 }, },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1045, 478.5 } },
      },
      Merge72 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge71",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform8",
               Source = "Output",
            },
            Center = Input { Value = { 3.37485635146844, 0.5 }, },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 935, 478.5 } },
      },
      Merge71 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Transform8",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform8",
               Source = "Output",
            },
            Center = Input { Value = { 1.87945349653228, 0.5 }, },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 825, 478.5 } },
      },
      Merge75 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background9_2",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Merge70",
               Source = "Output",
            },
            Center = Input { Value = { 0.5, 0.770650456802115 }, },
            Size = Input { Value = 0.581, },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 1320, 511.5 } },
      },
      Background9_2 = Background {
         Inputs = {
            GlobalOut = Input { Value = 150, },
            Width = Input { Value = 2081, },
            Height = Input { Value = 422, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftAlpha = Input { Value = 0, },
            GradientType = Input { Value = FuID { "Reflect" }, },
            Start = Input { Value = { 0.363636363636364, 0.689054726368159 }, },
            Gradient = Input {
               Value = Gradient {
                  Colors = {
                     [0] = { 0, 0, 0, 0 },
                     [0.590604026845638] = { 0.5704, 0.604760442306384, 0.62, 1 },
                     [0.996644295302013] = { 0.753, 0.73794, 0.749235, 1 }
                  }
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1210, 511.5 } },
      },
      Transform9 = Transform {
         CtrlWZoom = false,
         Inputs = {
            Center = Input {
               SourceOp = "XYPath1",
               Source = "Value",
            },
            Size = Input { Value = 0.394724749563459, },
            Input = Input {
               SourceOp = "Merge75",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 1320, 544.5 } },
      },
      XYPath1 = XYPath {
         ShowKeyPoints = false,
         DrawMode = "ModifyOnly",
         Inputs = {
            X = Input {
               SourceOp = "XYPath1X",
               Source = "Value",
            },
            Y = Input {
               SourceOp = "XYPath1Y",
               Source = "Value",
            },
         },
      },
      XYPath1X = BezierSpline {
         SplineColor = { Red = 255, Green = 0, Blue = 0 },
         NameSet = true,
         KeyFrames = {
            [0] = { -0.032110747082621, RH = { 41.6666666666667, 0.322449796753991 }, Flags = { Linear = true } },
            [125] = { 1.03157088442721, LH = { 83.3344708982133, 0.660738255716818 } }
         }
      },
      XYPath1Y = BezierSpline {
         SplineColor = { Red = 0, Green = 255, Blue = 0 },
         NameSet = true,
         KeyFrames = {
            [0] = { -0.028657616892911, RH = { 4.0007038423304, 0.025666317450726 }, Flags = { Linear = true } },
            [12] = { 0.249264881149109, LH = { 8.00010442128288, 0.15222013250718 }, RH = { 18.6655336743417, 0.372461070798404 } },
            [32] = { 0.274724345971811, LH = { 25.3333436750238, 0.26023608928037 }, RH = { 33.5899307340263, 0.265636903934981 } },
            [36.7695143677978] = { 0.332978794800824, LH = { 35.1798509793655, 0.302439769242236 }, RH = { 41.8464233872599, 0.434681157164045 } },
            [52] = { 0.64990854874222, LH = { 46.9231167233257, 0.546929145797813 }, RH = { 56.3331083736503, 0.704509654133304 } },
            [65] = { 0.746267910383714, LH = { 60.6667082809911, 0.78358193559229 }, RH = { 73.0003123931662, 0.607488353213858 } },
            [89] = { 0.279017031690829, LH = { 80.9995227138635, 0.150093225697664 }, RH = { 91.1245162275229, 0.298855675929609 } },
            [95.373822995296] = { 0.272280566993801, LH = { 93.2493732077175, 0.298278122089536 }, RH = { 105.24923679068, 0.197579712112591 } },
            [125] = { 0.039822579330232, LH = { 115.124380668336, 0.00082688924184629 } }
         }
      }
   }
}

Re: motion path struggles

PostPosted: Wed Nov 22, 2017 9:04 pm
by Sander de Regt
Hi everyone,
not to be a technical bore, but Marcus' example is exactly why this is such a difficult discussion.
When you have a constant speed on the X-axis, and then add an up/down motion to it, the speed on the path as a whole changes enormously.
I am in no way a mathematical expert, but when you compare a couple of points on a rotating disc - in our human perception they all move at the same speed, but a point on the outer rim of the disc moves much faster than a point somewhere on the middle of the disc. Their *rotational* speed is the same - they make the same number of revolutions, but their actual velocity is different.
So if you want something to follow a path with a constant velocity, which definition do you use?
Food for thought. :cry: :idea:

Re: motion path struggles

PostPosted: Wed Nov 22, 2017 11:30 pm
by Marcus Goller
Good points, Sander. :-)

My understanding in this case, was that the perception of the moving object should be that of constant speed.
Either way, I think there are mainly those two options to choose from. So whatever looks right (considering the goal I am trying to achieve), is right. But maybe I am oversimplifying. ;-)