Jump to: Board index » General » Fusion

Wipe out a 3D object.

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

Ignacio de La Cierva

  • Posts: 163
  • Joined: Tue Apr 26, 2016 12:20 pm

Wipe out a 3D object.

PostTue Jan 16, 2018 3:47 pm

I need to make a 3D object slowly appear o disappear with a vertical wipe. But I need to do it in the 3D space, not wiping out the render. (I'll deal with the holes 8-) )

It's easy to do, just a white BG with an animated rectangle mask, applied to object material, adding a UVMap3D node, planar, to fit the animated mask to the object front.

The problem comes when the object already had UV's for texture. When you add the UVMap3D node to fit the wipe, you lose the previous mapping, and then the texture is messed.

Is it posible in any way to have different UVmapping for different channels?

Disclaimer: I'm in the first days of a project involving a lot of things I've never done in Fusion before, that's why I'm opening so many threads. Maybe a generic thread "Help me to start a project" where I post the so different issues I'm facing, could be cleaner and more appropiate. Just tell me.

I'm fighting to keep this project 100% Fusion (exceto object modelling). I know how to do all these things within Adsk 3DSMax; Advanced particles, real 3D booleans, mult-material with multi-UV's, real 3D volumetrics with shadows,etc... But then I'd lose interactivitywith the rest of the elements and I'd had to deal with camera import/export issues. I've read that's another headache source.
Last edited by Ignacio de La Cierva on Tue Jan 16, 2018 4:08 pm, edited 1 time in total.
Offline

Naveen Vasanth

  • Posts: 21
  • Joined: Wed Oct 05, 2016 5:57 pm

Re: Wipe out a 3D object.

PostTue Jan 16, 2018 4:07 pm

Do you mean a 3D matte object?

Code: Select all
{
   Tools = ordered() {
      Shape3D1 = Shape3D {
         Inputs = {
            Shape = Input { Value = FuID { "SurfaceConeInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["SurfaceConeInputs.ObjectID.ObjectID"] = Input { Value = 2, }
         },
         ViewInfo = OperatorInfo { Pos = { 387, 82 } },
      },
      Shape3D2 = Shape3D {
         CtrlWZoom = false,
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 0.230446246175056, },
            ["Transform3DOp.Translate.Z"] = Input {
               SourceOp = "Shape3D2ZOffset",
               Source = "Value",
            },
            ["MtlStdInputs.MaterialID"] = Input { Value = 2, },
            ["SurfacePlaneInputs.Width"] = Input { Value = 2.14, },
            ["SurfacePlaneInputs.Matte.Nest"] = Input { Value = 1, },
            ["SurfacePlaneInputs.Matte.IsMatte"] = Input { Value = 1, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 3, }
         },
         ViewInfo = OperatorInfo { Pos = { 391, 115 } },
      },
      Shape3D2ZOffset = BezierSpline {
         SplineColor = { Red = 254, Green = 56, Blue = 46 },
         NameSet = true,
         KeyFrames = {
            [0] = { 1.63570848836249, RH = { 16.6666666666667, 0.59598750555093 }, Flags = { Linear = true } },
            [50] = { -1.4834544600722, LH = { 33.3333333333333, -0.443733477260634 }, RH = { 66.6666666666667, -0.465430771831517 }, Flags = { Linear = true } },
            [100] = { 1.57061660464984, LH = { 83.3333333333333, 0.552592916409163 }, Flags = { Linear = true } }
         }
      },
      Merge3D1 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "Shape3D2",
               Source = "Output",
            },
            SceneInput3 = Input {
               SourceOp = "Camera3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 497, 115 } },
      },
      Camera3D1 = Camera3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 0.631314283470456, },
            ["Transform3DOp.Translate.Y"] = Input { Value = 0.271486410409949, },
            ["Transform3DOp.Translate.Z"] = Input { Value = 5.14163621566249, },
            ["Transform3DOp.Rotate.X"] = Input { Value = -3.00001168251038, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = 7.00000810623169, },
            FLength = Input { Value = 18.2123442718302, },
            ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
            FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 4, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 3, },
         },
         ViewInfo = OperatorInfo { Pos = { 391, 148 } },
      },
      Renderer3D1 = Renderer3D {
         CustomData = {
            ToolVersion = 2,
         },
         Inputs = {
            GlobalOut = Input { Value = 100, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 607, 115 } },
      }
   }
}
https://nxcolor.com/colortwist - ColorTwist - Professional Look Development DCTL Tools
https://nxcolor.com/aura - Aura - Diffusion for DaVinci Resolve
Offline

Ignacio de La Cierva

  • Posts: 163
  • Joined: Tue Apr 26, 2016 12:20 pm

Re: Wipe out a 3D object.

PostTue Jan 16, 2018 4:17 pm

Thanks Naveen

I tested, but I need the wipe to work from any point of view.

I can put a matte box bounding my object, and animate it up, revealing the geometry.

That works from a "Front" or lower view, but, as you raise angle, the matte starts blocking undesired parts. From a cenital view, the matte object blocks the entire geometry. The object is uncovered but yu can't see it.

I need a camera flying around while the 3Dobject appears from bottom to top. I'll see the hole, but I'll cover it with glowing particles.

(Im trying to simulate 3D printing, where an object is created layer by layer.)
Last edited by Ignacio de La Cierva on Tue Jan 16, 2018 4:21 pm, edited 1 time in total.
Offline

Okke Verbart

  • Posts: 290
  • Joined: Tue Jan 17, 2017 8:40 pm

Re: Wipe out a 3D object.

PostTue Jan 16, 2018 4:19 pm

Have you tried playing around with the CustomVertex tool. Simple example below. May be hard to do more complex shapes etc, but worth having a play.

Code: Select all
{
   Tools = ordered() {
      Shape3D1 = Shape3D {
         Inputs = {
            Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, }
         },
         ViewInfo = OperatorInfo { Pos = { 282, 157.5 } },
      },
      CustomVertex3D1 = CustomVertex3D {
         CtrlWZoom = false,
         Inputs = {
            SceneInput = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
            ["Position.X"] = Input { Value = "if(px>-0, 0,px)", },
            ["Position.Y"] = Input { Value = "if(px>-0, 0,py)", },
            ["VertexColor.Nest"] = Input { Value = 1, },
            LUT1 = Input {
               SourceOp = "CustomVertex3D1LUT1_1",
               Source = "Value",
            },
            LUT2 = Input {
               SourceOp = "CustomVertex3D1LUT2_1",
               Source = "Value",
            },
            LUT3 = Input {
               SourceOp = "CustomVertex3D1LUT3_1",
               Source = "Value",
            },
            LUT4 = Input {
               SourceOp = "CustomVertex3D1LUT4_1",
               Source = "Value",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 421, 160.5 } },
      },
      CustomVertex3D1LUT1_1 = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 0, Green = 0, Blue = 0 },
         NameSet = true,
      },
      CustomVertex3D1LUT2_1 = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 0, Green = 0, Blue = 0 },
         NameSet = true,
      },
      CustomVertex3D1LUT3_1 = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 0, Green = 0, Blue = 0 },
         NameSet = true,
      },
      CustomVertex3D1LUT4_1 = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 0, Green = 0, Blue = 0 },
         NameSet = true,
      }
   }
}
www.ablackbirdcalledsue.com
Offline
User avatar

Bryan Ray

  • Posts: 2478
  • Joined: Mon Nov 28, 2016 5:32 am
  • Location: Los Angeles, CA, USA

Re: Wipe out a 3D object.

PostTue Jan 16, 2018 4:41 pm

I'd do it by manipulating the vertex alpha by position, instead:

Code: Select all
{
   Tools = ordered() {
      Shape3D1 = Shape3D {
         CtrlWZoom = false,
         Inputs = {
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, }
         },
         ViewInfo = OperatorInfo { Pos = { 470, 219 } },
      },
      CustomVertex3D2 = CustomVertex3D {
         Inputs = {
            SceneInput = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
            ["VertexColor.Nest"] = Input { Value = 1, },
            ["VertexColor.A"] = Input { Value = "if(py<n1,1,0)", },
            Number1 = Input { Value = 0.2703862, },
            LUT1 = Input {
               SourceOp = "CustomVertex3D2LUT1",
               Source = "Value",
            },
            LUT2 = Input {
               SourceOp = "CustomVertex3D2LUT2",
               Source = "Value",
            },
            LUT3 = Input {
               SourceOp = "CustomVertex3D2LUT3",
               Source = "Value",
            },
            LUT4 = Input {
               SourceOp = "CustomVertex3D2LUT4",
               Source = "Value",
            },
            Intermediate1 = Input { Value = "(n1 - n2) / (n3 - n2)", },
            Intermediate2 = Input { Value = "math.min(math.max(i1, 0), 1.0)", },
         },
         ViewInfo = OperatorInfo { Pos = { 653, 220 } },
      },
      CustomVertex3D2LUT1 = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 0, Green = 0, Blue = 0 },
         NameSet = true,
      },
      CustomVertex3D2LUT2 = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 0, Green = 0, Blue = 0 },
         NameSet = true,
      },
      CustomVertex3D2LUT3 = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 0, Green = 0, Blue = 0 },
         NameSet = true,
      },
      CustomVertex3D2LUT4 = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
               [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 0, Green = 0, Blue = 0 },
         NameSet = true,
      }
   }
}
Bryan Ray
http://www.bryanray.name
http://www.sidefx.com
Offline

Okke Verbart

  • Posts: 290
  • Joined: Tue Jan 17, 2017 8:40 pm

Re: Wipe out a 3D object.

PostTue Jan 16, 2018 4:45 pm

hmmm, yes had thought of that too, but then you can't see geometry where the cut is? If you do it with the position ones (at least in my simple example) you can make a virtual cut.
www.ablackbirdcalledsue.com
Offline

Ignacio de La Cierva

  • Posts: 163
  • Joined: Tue Apr 26, 2016 12:20 pm

Re: Wipe out a 3D object.

PostTue Jan 16, 2018 5:11 pm

Impressive!!

Bryan, that works perfect for me, as I'll cover the holes with a glowing particle system. Its perfect for 1st 1/3 of my object printing.

The last 2/3 of the printing process, due to my object shape, is compatible with Okke's variant, that leaves no holes and really looks like a real-3D-geometry-animated-boolean so I can give very close shots of that final part.

So in this project of simulate a 3D printing I'm, for first time using, expressions, advanced particles, pcustom, and customVertex. I wont be the same when I finish :)

Love this forum!

PS: You have lots of beers payed if you come to visit north Spain.
Offline

Okke Verbart

  • Posts: 290
  • Joined: Tue Jan 17, 2017 8:40 pm

Re: Wipe out a 3D object.

PostTue Jan 16, 2018 9:09 pm

Hey Ignacio - would be awesome to see your finished project (if/when you can share). Sounds intriguing!
www.ablackbirdcalledsue.com
Offline

Ignacio de La Cierva

  • Posts: 163
  • Joined: Tue Apr 26, 2016 12:20 pm

Re: Wipe out a 3D object.

PostTue Jan 16, 2018 9:59 pm

Not so awesome, I'm afraid.

Just a graphic version of the process of metal-3D-printing a high security key.

Two years ago, when they were a start-up with just an idea, I did this low-budget for them:

Pure 3DMax render with no post.



Now they have functional prototypes and are in negotiations for mass production. I'm also preparing a new version of the video, heavily updated visually, 100% Fusion (trying to), imitating the real process, that involves millions of metal dust particles, a laser melting it and a lot of sparks. :D Yeah.

At this precise moment I'm stucked with something pretty stupid. Want to connect a camera position to the position of another object. But that object has no own animation, offset x,y and z are 0.0 . It moves because its linked to a merge node at certain distance, and the merge node rotates. How can I access the actual position of an non-animated object that inherits movement from its parent node?

(What I'm trying to do now is a kind of semi-automated camera travel+crane+hot head. Surely it's already done over there...)
Offline

Okke Verbart

  • Posts: 290
  • Joined: Tue Jan 17, 2017 8:40 pm

Re: Wipe out a 3D object.

PostWed Jan 17, 2018 7:59 pm

Looks pretty awesome to me!

Re the question around position etc. Try the CoordTransform Position modifier. Page 104 of the reference guide. Small example below with a shape3D, then a merge that rotates/repositions it and then another merge. Then I added a pEmitter, and added the modifier to the position. In the modifier tab you can then drag in the target and the output scene...and presto: pemitter is now positioned in the "new" position of the Shape3D:

Code: Select all
{
   Tools = ordered() {
      Shape3D1 = Shape3D {
         Inputs = {
            Shape = Input { Value = FuID { "SurfaceSphereInputs" }, },
            ["MtlStdInputs.MaterialID"] = Input { Value = 1, },
            ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
            ["SurfaceSphereInputs.ObjectID.ObjectID"] = Input { Value = 2, }
         },
         ViewInfo = OperatorInfo { Pos = { 396, 141 } },
      },
      Merge3D1 = Merge3D {
         Inputs = {
            ["Transform3DOp.Translate.X"] = Input { Value = 4, },
            ["Transform3DOp.Rotate.X"] = Input { Value = 53.7, },
            ["Transform3DOp.Rotate.Y"] = Input { Value = 292.6, },
            ["Transform3DOp.Rotate.Z"] = Input { Value = 22.5, },
            ["Transform3DOp.PivotNest"] = Input { Value = 1, },
            ["Transform3DOp.Pivot.X"] = Input { Value = -2.154, },
            ["Transform3DOp.Pivot.Y"] = Input { Value = 2.288, },
            SceneInput1 = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 562, 143 } },
      },
      Merge3D2 = Merge3D {
         Inputs = {
            SceneInput1 = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
            SceneInput2 = Input {
               SourceOp = "pRender1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 777, 143 } },
      },
      pEmitter1 = pEmitter {
         ID = 6,
         CtrlWZoom = false,
         Inputs = {
            ["ParticleStyle.SizeOverLife"] = Input {
               SourceOp = "pEmitter1SizeoverLife",
               Source = "Value",
            },
            ["ParticleStyle.BlurOverLife"] = Input {
               SourceOp = "pEmitter1BluroverLife2D",
               Source = "Value",
            },
            ["SphereRgn.Translate.X"] = Input {
               SourceOp = "CoordTransform3D1",
               Source = "Position.X",
            },
            ["SphereRgn.Translate.Y"] = Input {
               SourceOp = "CoordTransform3D1",
               Source = "Position.Y",
            },
            ["SphereRgn.Translate.Z"] = Input {
               SourceOp = "CoordTransform3D1",
               Source = "Position.Z",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 783, 252 } },
      },
      pEmitter1SizeoverLife = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.5, RH = { 0.3, 0.5 }, Flags = { Linear = true } },
               [1] = { 0.5, LH = { 0.7, 0.5 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 0, Green = 0, Blue = 0 },
         NameSet = true,
      },
      pEmitter1BluroverLife2D = LUTBezier {
         KeyColorSplines = {
            [0] = {
               [0] = { 0.5, RH = { 0.3, 0.5 }, Flags = { Linear = true } },
               [1] = { 0.5, LH = { 0.7, 0.5 }, Flags = { Linear = true } }
            }
         },
         SplineColor = { Red = 0, Green = 0, Blue = 0 },
         NameSet = true,
      },
      CoordTransform3D1 = CoordTransform3D {
         CtrlWZoom = false,
         Inputs = {
            TargetObject = Input {
               SourceOp = "Shape3D1",
               Source = "Output",
            },
            SceneInput = Input {
               SourceOp = "Merge3D1",
               Source = "Output",
            },
         },
      },
      pRender1 = pRender {
         Inputs = {
            _MotionBlurWarning = Input { Disabled = true, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            OutputMode = Input { Disabled = true, },
            IntegrationMethod = Input { Value = FuID { "RK4" }, },
            ["MaterialID.MaterialID"] = Input { Value = 2, },
            ["ObjectID.ObjectID"] = Input { Value = 3, },
            Input = Input {
               SourceOp = "pEmitter1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 892, 247 } },
      }
   }
}
www.ablackbirdcalledsue.com
Offline

Ignacio de La Cierva

  • Posts: 163
  • Joined: Tue Apr 26, 2016 12:20 pm

Re: Wipe out a 3D object.

PostWed Jan 17, 2018 11:32 pm

Again, the answer was RTFM :mrgreen:

It seems I'm entering in that learning stage where one needs to pay attention to those parts of manuals that, in the first days, were too cryptic or simply "wtf why would anyone ever need this?".

I'll bring the manuals to bed for reading. Sad, but I guess I'll find oil and gold, now I have the basics.


Thanks again, Okke!
Offline

Okke Verbart

  • Posts: 290
  • Joined: Tue Jan 17, 2017 8:40 pm

Re: Wipe out a 3D object.

PostThu Jan 18, 2018 9:08 pm

My pleasure! To be honest, it was only fairly recently that I needed this myself :-)
www.ablackbirdcalledsue.com

Return to Fusion

Who is online

Users browsing this forum: No registered users and 32 guests