Jump to: Board index » General » Fusion

Gridwarp and reverse Gridwarp

Learn about 3D compositing, animation, broadcast design and VFX workflows.
  • Author
  • Message
Offline

birdseye

  • Posts: 347
  • Joined: Fri Jun 12, 2020 2:36 pm
  • Real Name: Iain Fisher

Gridwarp and reverse Gridwarp

PostFri Jun 12, 2020 2:58 pm

I am quite new to fusion but lately have had a chance to try it out properly and appear to be making slow progress after some years on various other software which seems quite often to send me in the wrong direction with regard to some aspects of fusion.
This is my first post sparked mainly by one feature mentioned in a long tutorial. It basically involved using the Gridwarp tool to remove perspective from an image or flatten it out, modify the image and then reverse the Gridwarp effect.
I set up a test project, which is simply a red rectangle on a blue background, did a simple warp on the rectangle, painted on the retangle and the tried to undo the warp. The problem I have found is that the second Gridwarp doesnt appear to do anything. The first Gidwarp works as expected, if the paint node is piped into that it gets warped but the second Gridwarp has no affect on the image or added paint effect..
I
The tutorial was by Con Fusion, entitled 'BMD Fusion - Camera Projection' and the feature is mentioned at about 11:00 to about 16:00

I have pasted the script for my test into the 'file comment, I'm not sure in that's where it should go.
Offline

xunile

  • Posts: 3028
  • Joined: Mon Apr 23, 2018 5:21 am
  • Real Name: Eric Eisenmann

Re: Gridwarp and reverse Gridwarp

PostFri Jun 12, 2020 4:26 pm

It works as expected. Did you copy the grid from the first GridWarp node source to the second GridWarp node destination?

Here are the nodes of my comp.

Code: Select all
{
   Tools = ordered() {
      GridWarp2 = GridWarp {
         SrcDrawMode = 1,
         DestDrawMode = 1,
         CtrlWZoom = false,
         Inputs = {
            MagnetType = Input { Value = 0, },
            DstXGridSize = Input { Value = 4, },
            DstYGridSize = Input { Value = 4, },
            SrcXGridSize = Input { Value = 4, },
            SrcYGridSize = Input { Value = 4, },
            SrcPointTolerance = Input { Value = 0.00999999977648258, },
            SrcOverSizeAmount = Input { Value = 0.0500000007450581, },
            SrcSnapDistance = Input { Value = 0.0199999995529652, },
            SrcGridChange = Input {
               Value = Mesh {
                  Count = 25,
                  Col = 5,
                  DeltaR = 0.25,
                  DeltaC = 0.25,
                  P1X = -0.5,
                  P1Y = -0.5,
                  Points = {
                     { X = -0.5, Y = -0.5, L_CX = 0, T_CY = 0, },
                     { X = -0.25, Y = -0.5, T_CY = 0, },
                     { X = 0, Y = -0.5, T_CY = 0, },
                     { X = 0.25, Y = -0.5, T_CY = 0, },
                     { X = 0.5, Y = -0.5, T_CY = 0, R_CX = 0, },
                     { X = -0.5, Y = -0.25, L_CX = 0, },
                     { X = -0.25, Y = -0.25, },
                     { X = 0, Y = -0.25, },
                     { X = 0.25, Y = -0.25, },
                     { X = 0.5, Y = -0.25, R_CX = 0, },
                     { X = -0.5, Y = 0, L_CX = 0, },
                     { X = -0.25, Y = 0, },
                     { X = 0, Y = 0, },
                     { X = 0.25, Y = 0, },
                     { X = 0.5, Y = 0, R_CX = 0, },
                     { X = -0.5, Y = 0.25, L_CX = 0, },
                     { X = -0.25, Y = 0.25, },
                     { X = 0, Y = 0.25, },
                     { X = 0.25, Y = 0.25, },
                     { X = 0.5, Y = 0.25, R_CX = 0, },
                     { X = -0.5, Y = 0.5, L_CX = 0, B_CY = 0, },
                     { X = -0.25, Y = 0.5, B_CY = 0, },
                     { X = 0, Y = 0.5, B_CY = 0, },
                     { X = 0.25, Y = 0.5, B_CY = 0, },
                     { X = 0.5, Y = 0.5, R_CX = 0, B_CY = 0, }
                  },
                  SavePoints = {
                  }
               },
            },
            SrcPolyline = Input {
               Value = Polyline {
               },
            },
            DstGridChange = Input {
               Value = Mesh {
                  Count = 25,
                  Col = 5,
                  DeltaR = 0.25,
                  DeltaC = 0.25,
                  P1X = -0.5,
                  P1Y = -0.5,
                  Points = {
                     { X = -0.5, Y = -0.5, V = -0.5, L_CX = 0, T_CY = 0, },
                     { LinearX = true, X = -0.25, Y = -0.5, V = -0.5, T_CY = 0, B_CX = -0.0145066231641033, B_CY = 0.075475762896468, },
                     { LinearX = true, X = 0, Y = -0.5, V = -0.5, T_CY = 0, B_CY = 0.0777001223060491, },
                     { LinearX = true, X = 0.25, Y = -0.5, V = -0.5, T_CY = 0, B_CX = 0.00685815861507126, B_CY = 0.0822237329725351, },
                     { LinearX = true, X = 0.5, Y = -0.5, V = -0.5, T_CY = 0, R_CX = 0, },
                     { LinearX = true, LinearY = true, X = -0.5, Y = -0.25, V = -0.25, L_CX = 0, R_CX = 0.0688267101692301, R_CY = -0.00785757043686531, },
                     { LinearX = true, LinearY = true, X = -0.29351986949231, Y = -0.273572711310596, Z = 9.63113633547203e-005, U = -0.25, V = -0.25, L_CX = -0.0688267101692301, L_CY = 0.00785757043686531, T_CX = 0.0145066231641033, T_CY = -0.075475762896468, R_CX = 0.0978399564974366, R_CY = 0.0022243594095811, B_CX = -0.0127680780493284, B_CY = 0.0867780547817572, },
                     { LinearX = true, LinearY = true, X = 0, Y = -0.266899633081853, Z = 9.66659012281971e-005, V = -0.25, L_CX = -0.0978399564974366, L_CY = -0.0022243594095811, T_CY = -0.0777001223060491, R_CX = 0.0901914919484046, R_CY = 0.00452361066648595, B_CY = 0.0889665443606175, },
                     { LinearX = true, LinearY = true, X = 0.270574475845214, Y = -0.253328801082395, Z = 9.52037109564897e-005, U = 0.25, V = -0.25, L_CX = -0.0901914919484046, L_CY = -0.00452361066648595, T_CX = -0.00685815861507126, T_CY = -0.0822237329725351, R_CX = 0.0764751747182621, R_CY = 0.00110960036079826, B_CX = 0.0113124778525457, B_CY = 0.0766370526073075, },
                     { LinearX = true, LinearY = true, X = 0.5, Y = -0.25, V = -0.25, L_CX = -0.0764751747182621, L_CY = -0.00110960036079826, R_CX = 0, },
                     { LinearX = true, LinearY = true, X = -0.5, Y = 0, L_CX = 0, R_CX = 0.0560586321199016, R_CY = -0.00441284898844141, },
                     { LinearX = true, LinearY = true, X = -0.331824103640295, Y = -0.0132385469653242, Z = 9.46556108020686e-005, U = -0.25, V = 0, L_CX = -0.0560586321199016, L_CY = 0.00441284898844141, T_CX = 0.0127680780493284, T_CY = -0.0867780547817572, R_CX = 0.110608034546765, R_CY = 0.00441284898844141, B_CX = -0.00952455867645746, B_CY = 0.0659153859535305, },
                     { LinearX = true, LinearY = true, X = 0, Y = 0, L_CX = -0.110608034546765, L_CY = -0.00441284898844141, T_CY = -0.0889665443606175, R_CX = 0.10150396980095, R_CY = -0.00780588108682412, B_CX = -0.000618488334732566, B_CY = 0.0613186086914541, },
                     { LinearX = true, LinearY = true, X = 0.304511909402851, Y = -0.0234176432604724, Z = 9.56777996070727e-005, U = 0.25, V = 0, L_CX = -0.10150396980095, L_CY = 0.00780588108682412, T_CX = -0.0113124778525457, T_CY = -0.0766370526073075, R_CX = 0.0651626968657164, R_CY = 0.00780588108682412, B_CX = 0.0102358097631747, B_CY = 0.0693084180519132, },
                     { LinearX = true, LinearY = true, X = 0.5, Y = 0, L_CX = -0.0651626968657164, L_CY = -0.00780588108682412, R_CX = 0, },
                     { LinearX = true, LinearY = true, X = -0.5, Y = 0.25, V = 0.25, L_CX = 0, R_CX = 0.0465340734434442, R_CY = -0.0218307963682443, },
                     { LinearX = true, LinearY = true, X = -0.360397779669667, Y = 0.184507610895267, Z = 9.85832804418609e-005, U = -0.25, V = 0.25, L_CX = -0.0465340734434442, L_CY = 0.0218307963682443, T_CX = 0.00952455867645746, T_CY = -0.0659153859535305, R_CX = 0.11951410488849, R_CY = -0.000183928273634929, B_CX = 0.0367992598898892, B_CY = 0.105164129701578, },
                     { LinearX = true, LinearY = true, X = -0.0018554650041977, Y = 0.183955826074362, Z = 9.44431687136617e-005, U = 0, V = 0.25, L_CX = -0.11951410488849, L_CY = 0.000183928273634929, T_CX = 0.000618488334732566, T_CY = -0.0613186086914541, R_CX = 0.112358267898858, R_CY = 0.000183928273634929, B_CX = 0.000618488334732566, B_CY = 0.105348057975213, },
                     { LinearX = true, LinearY = true, X = 0.335219338692375, Y = 0.184507610895267, Z = 9.85832804418609e-005, U = 0.25, V = 0.25, L_CX = -0.112358267898858, L_CY = -0.000183928273634929, T_CX = -0.0102358097631747, T_CY = -0.0693084180519132, R_CX = 0.0549268871025417, R_CY = 0.0218307963682443, B_CX = -0.0284064462307916, B_CY = 0.105164129701578, },
                     { LinearX = true, LinearY = true, X = 0.5, Y = 0.25, V = 0.25, L_CX = -0.0549268871025417, L_CY = -0.0218307963682443, R_CX = 0, },
                     { LinearX = true, LinearY = true, X = -0.5, Y = 0.5, V = 0.5, L_CX = 0, B_CY = 0, },
                     { LinearX = true, LinearY = true, X = -0.25, Y = 0.5, V = 0.5, T_CX = -0.0367992598898892, T_CY = -0.105164129701578, B_CY = 0, },
                     { LinearX = true, LinearY = true, X = 0, Y = 0.5, V = 0.5, T_CX = -0.000618488334732566, T_CY = -0.105348057975213, B_CY = 0, },
                     { LinearX = true, LinearY = true, X = 0.25, Y = 0.5, V = 0.5, T_CX = 0.0284064462307916, T_CY = -0.105164129701578, B_CY = 0, },
                     { LinearX = true, LinearY = true, X = 0.5, Y = 0.5, V = 0.5, R_CX = 0, B_CY = 0, }
                  },
                  SavePoints = {
                  }
               },
            },
            DstPolyline = Input {
               Value = Polyline {
               },
            },
            Input = Input {
               SourceOp = "Paint1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 673.328, -9.99947 } },
      },
      Paint1 = Paint {
         Inputs = {
            Input = Input {
               SourceOp = "GridWarp1",
               Source = "Output",
            },
            Paint = Input {
               SourceOp = "PolylineStroke1",
               Source = "Out",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 535.044, -9.99947 } },
      },
      PolylineStroke1 = PolylineStroke {
         Points = {
         },
         IsThreaded = false,
         Brushes = { "SoftBrush" },
         ApplyModes = { "PaintApplyColor" },
         CtrlWZoom = false,
         Inputs = {
            Polyline = Input {
               Value = Polyline {
                  Points = {
                     { Linear = true, X = -0.191552057862282, Y = 0.125874131917953, RX = 0.0392927291760979, RY = -0.0990676010822083 },
                     { Linear = true, X = -0.0736738666892052, Y = -0.17132867872715, LX = -0.0392927291760979, LY = 0.0990676010822083, RX = 0.0242305161393618, RY = 0.0477855502517073 },
                     { Linear = true, X = -0.000982318306341767, Y = -0.0279720276594162, LX = -0.0242305161393618, LY = -0.0477855502517073, RX = 0.0301244269927492, RY = -0.0442890443932482 },
                     { Linear = true, X = 0.0893909633159637, Y = -0.160839155316353, LX = -0.0301244269927492, LY = 0.0442890443932482, RX = 0.0320890633085622, RY = 0.0990675972266631 },
                     { Linear = true, X = 0.185658156871796, Y = 0.136363640427589, LX = -0.0320890633085622, LY = -0.0990675972266631 }
                  }
               },
            },
         },
      },
      GridWarp1 = GridWarp {
         SrcDrawMode = 1,
         DestDrawMode = 1,
         Inputs = {
            MagnetType = Input { Value = 0, },
            DstXGridSize = Input { Value = 4, },
            DstYGridSize = Input { Value = 4, },
            SrcXGridSize = Input { Value = 4, },
            SrcYGridSize = Input { Value = 4, },
            SrcPointTolerance = Input { Value = 0.00999999977648258, },
            SrcOverSizeAmount = Input { Value = 0.0500000007450581, },
            SrcSnapDistance = Input { Value = 0.0199999995529652, },
            SrcGridChange = Input {
               Value = Mesh {
                  Count = 25,
                  Col = 5,
                  DeltaR = 0.25,
                  DeltaC = 0.25,
                  P1X = -0.5,
                  P1Y = -0.5,
                  Points = {
                     { X = -0.5, Y = -0.5, L_CX = 0, T_CY = 0, },
                     { LinearX = true, X = -0.25, Y = -0.5, T_CY = 0, B_CX = -0.0145066231641033, B_CY = 0.075475762896468, },
                     { LinearX = true, X = 0, Y = -0.5, T_CY = 0, B_CY = 0.0777001223060491, },
                     { LinearX = true, X = 0.25, Y = -0.5, T_CY = 0, B_CX = 0.00685815861507127, B_CY = 0.0822237329725351, },
                     { LinearX = true, X = 0.5, Y = -0.5, T_CY = 0, R_CX = 0, },
                     { LinearX = true, LinearY = true, X = -0.5, Y = -0.25, L_CX = 0, R_CX = 0.0688267101692301, R_CY = -0.0078575704368653, },
                     { LinearX = true, LinearY = true, X = -0.29351986949231, Y = -0.273572711310596, Z = 9.63113633547203e-005, U = -0.25, V = -0.25, L_CX = -0.0688267101692301, L_CY = 0.0078575704368653, T_CX = 0.0145066231641033, T_CY = -0.075475762896468, R_CX = 0.0978399564974366, R_CY = 0.00222435940958108, B_CX = -0.0127680780493284, B_CY = 0.0867780547817572, },
                     { LinearX = true, LinearY = true, X = 0, Y = -0.266899633081853, Z = 9.66659012281971e-005, V = -0.25, L_CX = -0.0978399564974366, L_CY = -0.00222435940958108, T_CY = -0.0777001223060491, R_CX = 0.0901914919484046, R_CY = 0.00452361066648597, B_CY = 0.0889665443606176, },
                     { LinearX = true, LinearY = true, X = 0.270574475845214, Y = -0.253328801082395, Z = 9.52037109564897e-005, U = 0.25, V = -0.25, L_CX = -0.0901914919484046, L_CY = -0.00452361066648597, T_CX = -0.00685815861507127, T_CY = -0.0822237329725351, R_CX = 0.0764751747182621, R_CY = 0.00110960036079825, B_CX = 0.0113124778525457, B_CY = 0.0766370526073075, },
                     { LinearX = true, LinearY = true, X = 0.5, Y = -0.25, L_CX = -0.0764751747182621, L_CY = -0.00110960036079825, R_CX = 0, },
                     { LinearX = true, LinearY = true, X = -0.5, Y = 0, L_CX = 0, R_CX = 0.0560586321199016, R_CY = -0.00441284898844142, },
                     { LinearX = true, LinearY = true, X = -0.331824103640295, Y = -0.0132385469653243, Z = 9.46556108020686e-005, U = -0.25, V = 0, L_CX = -0.0560586321199016, L_CY = 0.00441284898844142, T_CX = 0.0127680780493284, T_CY = -0.0867780547817572, R_CX = 0.110608034546765, R_CY = 0.00441284898844142, B_CX = -0.00952455867645746, B_CY = 0.0659153859535305, },
                     { LinearX = true, LinearY = true, X = 0, Y = 0, L_CX = -0.110608034546765, L_CY = -0.00441284898844142, T_CY = -0.0889665443606176, R_CX = 0.10150396980095, R_CY = -0.00780588108682411, B_CX = -0.000618488334732569, B_CY = 0.0613186086914541, },
                     { LinearX = true, LinearY = true, X = 0.304511909402851, Y = -0.0234176432604723, Z = 9.56777996070727e-005, U = 0.25, V = 0, L_CX = -0.10150396980095, L_CY = 0.00780588108682411, T_CX = -0.0113124778525457, T_CY = -0.0766370526073075, R_CX = 0.0651626968657164, R_CY = 0.00780588108682411, B_CX = 0.0102358097631747, B_CY = 0.0693084180519132, },
                     { LinearX = true, LinearY = true, X = 0.5, Y = 0, L_CX = -0.0651626968657164, L_CY = -0.00780588108682411, R_CX = 0, },
                     { LinearX = true, LinearY = true, X = -0.5, Y = 0.25, L_CX = 0, R_CX = 0.0465340734434442, R_CY = -0.0218307963682443, },
                     { LinearX = true, LinearY = true, X = -0.360397779669667, Y = 0.184507610895267, Z = 9.85832804418609e-005, U = -0.25, V = 0.25, L_CX = -0.0465340734434442, L_CY = 0.0218307963682443, T_CX = 0.00952455867645746, T_CY = -0.0659153859535305, R_CX = 0.11951410488849, R_CY = -0.000183928273634911, B_CX = 0.0367992598898892, B_CY = 0.105164129701578, },
                     { LinearX = true, LinearY = true, X = -0.00185546500419771, Y = 0.183955826074362, Z = 9.44431687136617e-005, U = 0, V = 0.25, L_CX = -0.11951410488849, L_CY = 0.000183928273634911, T_CX = 0.000618488334732569, T_CY = -0.0613186086914541, R_CX = 0.112358267898858, R_CY = 0.000183928273634929, B_CX = 0.000618488334732569, B_CY = 0.105348057975213, },
                     { LinearX = true, LinearY = true, X = 0.335219338692375, Y = 0.184507610895267, Z = 9.85832804418609e-005, U = 0.25, V = 0.25, L_CX = -0.112358267898858, L_CY = -0.000183928273634929, T_CX = -0.0102358097631747, T_CY = -0.0693084180519132, R_CX = 0.0549268871025417, R_CY = 0.0218307963682443, B_CX = -0.0284064462307916, B_CY = 0.105164129701578, },
                     { LinearX = true, LinearY = true, X = 0.5, Y = 0.25, L_CX = -0.0549268871025417, L_CY = -0.0218307963682443, R_CX = 0, },
                     { LinearX = true, LinearY = true, X = -0.5, Y = 0.5, L_CX = 0, B_CY = 0, },
                     { LinearX = true, LinearY = true, X = -0.25, Y = 0.5, T_CX = -0.0367992598898892, T_CY = -0.105164129701578, B_CY = 0, },
                     { LinearX = true, LinearY = true, X = 0, Y = 0.5, T_CX = -0.000618488334732569, T_CY = -0.105348057975213, B_CY = 0, },
                     { LinearX = true, LinearY = true, X = 0.25, Y = 0.5, T_CX = 0.0284064462307916, T_CY = -0.105164129701578, B_CY = 0, },
                     { LinearX = true, LinearY = true, X = 0.5, Y = 0.5, R_CX = 0, B_CY = 0, }
                  },
                  SavePoints = {
                  }
               },
            },
            SrcPolyline = Input {
               Value = Polyline {
               },
            },
            DstGridChange = Input {
               Value = Mesh {
                  Count = 25,
                  Col = 5,
                  DeltaR = 0.25,
                  DeltaC = 0.25,
                  P1X = -0.5,
                  P1Y = -0.5,
                  Points = {
                     { X = -0.5, Y = -0.5, L_CX = 0, T_CY = 0, },
                     { X = -0.25, Y = -0.5, T_CY = 0, },
                     { X = 0, Y = -0.5, T_CY = 0, },
                     { X = 0.25, Y = -0.5, T_CY = 0, },
                     { X = 0.5, Y = -0.5, T_CY = 0, R_CX = 0, },
                     { X = -0.5, Y = -0.25, L_CX = 0, },
                     { X = -0.25, Y = -0.25, Z = 9.63113633547203e-005, },
                     { X = 0, Y = -0.25, Z = 9.741961123795e-005, },
                     { X = 0.25, Y = -0.25, },
                     { X = 0.5, Y = -0.25, R_CX = 0, },
                     { X = -0.5, Y = 0, L_CX = 0, },
                     { X = -0.25, Y = 0, },
                     { X = 0, Y = 0, },
                     { X = 0.25, Y = 0, },
                     { X = 0.5, Y = 0, R_CX = 0, },
                     { X = -0.5, Y = 0.25, L_CX = 0, },
                     { X = -0.25, Y = 0.25, },
                     { X = 0, Y = 0.25, },
                     { X = 0.25, Y = 0.25, },
                     { X = 0.5, Y = 0.25, R_CX = 0, },
                     { X = -0.5, Y = 0.5, L_CX = 0, B_CY = 0, },
                     { X = -0.25, Y = 0.5, B_CY = 0, },
                     { X = 0, Y = 0.5, B_CY = 0, },
                     { X = 0.25, Y = 0.5, B_CY = 0, },
                     { X = 0.5, Y = 0.5, R_CX = 0, B_CY = 0, }
                  },
                  SavePoints = {
                  }
               },
            },
            DstPolyline = Input {
               Value = Polyline {
               },
            },
            Input = Input {
               SourceOp = "Merge1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 381.058, -8.42644 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background2",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 223.923, -9.99947 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 948, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
         },
         ViewInfo = OperatorInfo { Pos = { 113.923, -9.99947 } },
      },
      Background2 = Background {
         Inputs = {
            GlobalOut = Input { Value = 948, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.803, },
            TopLeftGreen = Input { Value = 0.081906, },
            TopLeftBlue = Input { Value = 0.081906, },
            EffectMask = Input {
               SourceOp = "Polygon1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 221.56, -61.4254 } },
      },
      Polygon1 = PolylineMask {
         DrawMode = "InsertAndModify",
         DrawMode2 = "InsertAndModify",
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Polyline = Input {
               SourceOp = "Polygon1Polyline",
               Source = "Value",
            },
            Polyline2 = Input {
               Value = Polyline {
               },
               Disabled = true,
            },
         },
         ViewInfo = OperatorInfo { Pos = { 221.56, -94.4254 } },
      },
      Polygon1Polyline = BezierSpline {
         SplineColor = { Red = 173, Green = 255, Blue = 47 },
         NameSet = true,
         KeyFrames = {
            [161] = { 0, Flags = { LockedY = true }, Value = Polyline {
                  Closed = true,
                  Points = {
                     { Linear = true, X = -0.303339511156082, Y = -0.268976897001266, LX = -0.018552878644633, LY = 0.151815178960857, RX = 0.193568334269096, RY = 0.00110010978150027 },
                     { Linear = true, X = 0.277365505695343, Y = -0.265676558017731, LX = -0.193568334269096, LY = -0.00110010978150027, RX = 0.0191713002042116, RY = 0.149614958283138 },
                     { Linear = true, X = 0.334879398345947, Y = 0.183168321847916, LX = -0.0191713002042116, LY = -0.149614958283138, RX = -0.231292515145309, RY = 0.00110010601112946 },
                     { Linear = true, X = -0.358998147089981, Y = 0.186468639881304, LX = 0.231292515145309, LY = -0.00110010601112946, RX = 0.018552878644633, RY = -0.151815178960857 }
                  }
               } }
         }
      }
   }
}
Attachments
2020-06-12 (7).png
2020-06-12 (7).png (251.67 KiB) Viewed 3149 times
2020-06-12 (8).png
2020-06-12 (8).png (319.18 KiB) Viewed 3149 times
2020-06-12 (9).png
2020-06-12 (9).png (281.9 KiB) Viewed 3149 times
Win 10 Home | Intel i7 - 10700f 64 GB 1 TB GB SSD 2 TB SSD
RTX-3060 12 GB | Resolve Studio 18.6.6| Fusion Studio 18.6.6

Win 10 Home | Intel Core I7-7700HQ 32 GB 1 TB NVME SSD 1 TB SATA SSD
GTX-1060-6GB | Resolve 17.4.6
Offline

birdseye

  • Posts: 347
  • Joined: Fri Jun 12, 2020 2:36 pm
  • Real Name: Iain Fisher

Re: Gridwarp and reverse Gridwarp

PostFri Jun 12, 2020 4:44 pm

I did get it to work by using a new gridwarp node rather than duplicating the first one. The rectangle was restored approximately with a few bumps here and there and the paint node was warped.
Offline

birdseye

  • Posts: 347
  • Joined: Fri Jun 12, 2020 2:36 pm
  • Real Name: Iain Fisher

Re: Gridwarp and reverse Gridwarp

PostTue Jun 16, 2020 12:34 pm

While messing around with the gridwarp node this morning I'm convinced there is a bug in there. When 'Show Source' is selected it effectively disables the node. Surely the ouput of this node should be derived from the difference between the source and destination grids, regardless of which grid is being shown or warped. There is already an option at the top of the inspector to disable the node. Maybe 'Show' is a confusing label as it implies switching views, rather than switching the node on and off. It had me confused when I first tried it as I expected the node would process the data regardless of which grid is shown.
What confused me the fisrt time was the 'Con Fusion' appeared to duplicate his first Gridwarp node and then just copy the first node's source to the second's destination. This would make both grids the same in the second Gridwarp node, which would do nothing.
If the first node is duplicated to achieve the reverse gridwarp, then Gridwarp1_1 would need both the source from Gridwarp1 copied to the destination and the destination from Gridwarp1 copied to the source of Gridwarp1_1.. Both Gridwarps would also need to be showing the destination grid or they would be disabled.
Hopfully I've got that right.
Offline

xunile

  • Posts: 3028
  • Joined: Mon Apr 23, 2018 5:21 am
  • Real Name: Eric Eisenmann

Re: Gridwarp and reverse Gridwarp

PostTue Jun 16, 2020 5:46 pm

Show Source doesn't disable the node, it shows you the starting grid so you can say match it to a clip that has a perspective issue like from a fisheye lens. You set up the points to match the lines then when you switch to the Destination it warps it to conform to the new points of the grid. If it effectively disabled it, the warp wouldn't work in correcting perspective. It is just showing the starting point that you work from before the Destination grid.

He did in his example duplicate the node instead of adding a new one, which is why he had an issue when he had finished copying the grid from one to the other. You should add a new Gridwarp node, set its x and y grid size to be the same as the other node, then copy the Source grid from the first node to the Destination grid of the second.
Attachments
2020-06-16 (1).png
2020-06-16 (1).png (598.92 KiB) Viewed 3083 times
2020-06-16 (2).png
2020-06-16 (2).png (630.98 KiB) Viewed 3083 times
Win 10 Home | Intel i7 - 10700f 64 GB 1 TB GB SSD 2 TB SSD
RTX-3060 12 GB | Resolve Studio 18.6.6| Fusion Studio 18.6.6

Win 10 Home | Intel Core I7-7700HQ 32 GB 1 TB NVME SSD 1 TB SATA SSD
GTX-1060-6GB | Resolve 17.4.6
Offline

birdseye

  • Posts: 347
  • Joined: Fri Jun 12, 2020 2:36 pm
  • Real Name: Iain Fisher

Re: Gridwarp and reverse Gridwarp

PostWed Jun 17, 2020 8:09 am

Yes but if there is a difference in either grid the image is warped when showing the destination grid in the Gridwarp node. If you switch back to show source, the ouput is the same as the input. If you warp or make either grid different from the other, then feed the output into eg a merge node and show the merge in a viewer, when you switch between show source or show destination in the connected Gridwarp, the warping is switched on and off. So the output of the Gridwarp node is effectively disabled by showing the source grid. Both grids remain different in the node but the image isn't changed as it passes through the node.
Offline

xunile

  • Posts: 3028
  • Joined: Mon Apr 23, 2018 5:21 am
  • Real Name: Eric Eisenmann

Re: Gridwarp and reverse Gridwarp

PostWed Jun 17, 2020 2:44 pm

If you view any node in a viewer, you are seeing it's output. If you have set that node in an intermediate state, you will see something other than it's final output. If you connect it to a Merge node, it will show the same thing since it is still showing the output of that state.

I will use the DeltaKeyer node as an example. You take your greenscreen footage and connect it to the input of the DeltaKeyer node. You then use the eyedropper to choose the color you want to key, usually the green. If you put the DeltaKeyer in a viewer at this point, you will see the green is gone replaced with transparency. You will see this if you have the view mode set to "Final Result". This is equivalent of the Destination mode in the GridWarp. It is showing the finished product.

If you click on the View Mode dropdown menu, you will see other modes like "Pre Matte". If you select this mode, you will no longer see the final output in the DeltaKeyer node or the Merge node connected to it's output. You see an intermediate stage to allow tweaking of different settings. This is equivalent to the source node in the GridWarp node, it allows for viewing an in-between stage before the final result. If you were to leave the node like this, it would not output the final result. This is the same with the Gridwarp node, the source shows the input image so you can adjust the grid for the 'before", and when you switch to the Destination, you are seeing the "after".

I would ask what you would want the Source to show if not the original image. All the nodes are designed to show it's output if you put that node in a viewer, you will always see the same thing if you connect a Merge to its output. If you want to see the final output of the Gridwarp, you have to have it set on Destination. That is just how it works. If you want to see the final output of a DeltaKeyer, you have to have it set on Final Result. There is no separate view for the different settings of the node, there is just the Output. As you go through different steps you will see a different output, and there is one intended final setting that shows the expected output.
Attachments
2020-06-17.png
2020-06-17.png (484.78 KiB) Viewed 3038 times
2020-06-17 (1).png
2020-06-17 (1).png (489.81 KiB) Viewed 3038 times
Win 10 Home | Intel i7 - 10700f 64 GB 1 TB GB SSD 2 TB SSD
RTX-3060 12 GB | Resolve Studio 18.6.6| Fusion Studio 18.6.6

Win 10 Home | Intel Core I7-7700HQ 32 GB 1 TB NVME SSD 1 TB SATA SSD
GTX-1060-6GB | Resolve 17.4.6
Offline

birdseye

  • Posts: 347
  • Joined: Fri Jun 12, 2020 2:36 pm
  • Real Name: Iain Fisher

Re: Gridwarp and reverse Gridwarp

PostThu Jun 18, 2020 9:01 am

I expected wrongly that the source view would show the original image and changes made to the grid but I also expected the image to pass through the node affected by the settings in the node ie.the difference that was set between the two grids. In my mind if you set up a node to process an image with certain settings and that image passes through the node, being able to view the input grid or the output grid of the effect should not change how the settings affect the the image as it is processed by the node. It could be said that the Gridwarp node mimics quantum superposition whereby merely viewing the settings appears to change them.
In the case of the Deltakeyer it's a bit more obvious what will be ouput because of the wording used in the controls (it's called a mode rather than just 'show') so it's more obvious that you are changing the settings rather than showing them.. If the wording on the Gridwarp had been Warp Mode - Unprossessed/Processed I would have twigged on right away.
The excuse for my confusion I'm sticking with is, I'm still in a Media Composer mind set which has sent me in the wrong direction a few times. In fact in Media Composer it is/was mildy difficult to prevent some effects in lower tracks being messed up by similar effects in tracks above. Even positioning an animatte required the hassle of a workaround and if an animated layer was placed above that all bets were off.
Offline

birdseye

  • Posts: 347
  • Joined: Fri Jun 12, 2020 2:36 pm
  • Real Name: Iain Fisher

Re: Gridwarp and reverse Gridwarp

PostFri Jun 19, 2020 8:18 am

Sorry to go on about the gridwarp but as a newbie it's one of at least a dozen nodes that seem very useful and yet there are virtually no tutorials (it only gets a mention now and again as an add on). So one last question, how difficult would it be to make a few preset warps of common shapes, such as a cylinder/truncated cylinder, hemisphere, cone section etc.
I was thinking along the lines of being able to feed text or a logo into a Gridwarp, set up the grids and instantly warp it to a set shape and then position the logo on a eg a bottle using a transform and/or merge. Maybe there is an easier way already that I haven't come accross yet.
Offline

Zaparl

  • Posts: 1
  • Joined: Sat Jan 28, 2023 1:19 pm
  • Real Name: Zapa Zaparl

Re: Gridwarp and reverse Gridwarp

PostSat Jan 28, 2023 1:24 pm

I'm new to Resolve. Come from AE and dealing with Grid Warp for the first time trying to make the exact same dripping effect but I have difficulties with concepts like the destination warp, etc.

Right now I'm trying to move the grid but the whole media is moving with it. Also I don't see the keyframes, etc. Total mess :cry:

Is there any tutorial or source of information where this operator gets explained in deep?

Thank you!

Return to Fusion

Who is online

Users browsing this forum: No registered users and 23 guests