Page 1 of 1

Page Curl effect in Fusion - how to?

PostPosted: Mon Apr 28, 2025 12:37 pm
by SlaV05
Hello everyone,

I'm using the Page Curl effect in Fusion page, and I'm trying to replace the back side of the curled page with a clean background (for example, just plain paper) without the front text appearing reversed on the back.
I want the front side to show my normal content (paper + text) and the back side to show only the background texture (paper without any text).
So far, I've tried using a separate background input in Page Curl, but the text from the front still "bleeds" through or mirrors onto the back side.
How can I properly set up nodes or settings so that:
- The front side shows text on paper,
- The back side shows only clean paper (no mirrored text)?
This is how it looks now, without touching anything (just regular Transition Effect)
[img]
Curl%20Fusion.jpg
[/img]
Any help or example node setup would be greatly appreciated!

Thanks in advance!

Re: Page Curl effect in Fusion - how to?

PostPosted: Mon Apr 28, 2025 1:04 pm
by KrunoSmithy
Hmm, the way its built is more for ease of use on the edit page and for projecting an image so it fits every resolution, rather then doing it with image plane. So images have to go directly into camera. What you could do is make an instance of most of the nodes and use one of the renderers to output not the same image, but your white background image.

Something like this perhaps...

sshot-1208.jpg
sshot-1208.jpg (182.88 KiB) Viewed 395 times


If that is what you were after? if so, copy this code here into fusion page, and either replace the original effect or use mine to modify yours to your liking.

Code: Select all
{
   Tools = ordered() {
      MediaIn1 = MediaIn {
         ExtentSet = true,
         CustomData = {
            MediaProps = {
               MEDIA_AUDIO_TRACKS_DESC = {
                  {
                     MEDIA_AUDIO_BIT_DEPTH = 32,
                     MEDIA_AUDIO_FRAME_RATE = 25,
                     MEDIA_AUDIO_NUM_CHANNELS = 2,
                     MEDIA_AUDIO_SAMPLE_RATE = 48000,
                     MEDIA_AUDIO_START_TIME = 0,
                     MEDIA_AUDIO_TRACK_ID = "Timeline Audio",
                     MEDIA_AUDIO_TRACK_NAME = "Timeline Audio [Timeline 2 copy]"
                  }
               },
               MEDIA_AUDIO_TRACKS_NUM = 1,
               MEDIA_HAS_AUDIO = true,
               MEDIA_HEIGHT = 1080,
               MEDIA_IS_SOURCE_RES = false,
               MEDIA_LAYERS_IN_OUT_LIST = {
                  {
                     0,
                     13
                  },
                  {
                     0,
                     13
                  }
               },
               MEDIA_MARK_IN = 0,
               MEDIA_MARK_OUT = 12,
               MEDIA_NAME = "Page Curl",
               MEDIA_NUM_FRAMES = 13,
               MEDIA_NUM_LAYERS = 2,
               MEDIA_PAR = 1,
               MEDIA_SRC_FRAME_RATE = 25,
               MEDIA_START_FRAME = 0,
               MEDIA_WIDTH = 1920,
            },
         },
         Inputs = {
            GlobalOut = Input { Value = 12, },
            AudioTrack = Input { Value = FuID { "Timeline Audio" }, },
            Layer = Input { Value = "0", },
            ClipTimeEnd = Input { Value = 12, },
            DeepOutputMode = Input {
               Value = 0,
               Disabled = true,
            },
            LeftAudio = Input {
               SourceOp = "Left",
               Source = "Data",
            },
            RightAudio = Input {
               SourceOp = "Right",
               Source = "Data",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 90.5637, 148.5 } },
         Version = 1
      },
      Left = AudioDisplay {
         CtrlWZoom = false,
      },
      Right = AudioDisplay {
         CtrlWZoom = false,
      },
      MediaIn2 = MediaIn {
         ExtentSet = true,
         CustomData = {
            MediaProps = {
               MEDIA_AUDIO_TRACKS_DESC = {
                  {
                     MEDIA_AUDIO_BIT_DEPTH = 32,
                     MEDIA_AUDIO_FRAME_RATE = 25,
                     MEDIA_AUDIO_NUM_CHANNELS = 2,
                     MEDIA_AUDIO_SAMPLE_RATE = 48000,
                     MEDIA_AUDIO_START_TIME = 0,
                     MEDIA_AUDIO_TRACK_ID = "Timeline Audio",
                     MEDIA_AUDIO_TRACK_NAME = "Timeline Audio [Timeline 2 copy]"
                  }
               },
               MEDIA_AUDIO_TRACKS_NUM = 1,
               MEDIA_HAS_AUDIO = true,
               MEDIA_HEIGHT = 1080,
               MEDIA_IS_SOURCE_RES = false,
               MEDIA_LAYERS_IN_OUT_LIST = {
                  {
                     0,
                     13
                  },
                  {
                     0,
                     13
                  }
               },
               MEDIA_MARK_IN = 0,
               MEDIA_MARK_OUT = 12,
               MEDIA_NAME = "Page Curl",
               MEDIA_NUM_FRAMES = 13,
               MEDIA_NUM_LAYERS = 2,
               MEDIA_PAR = 1,
               MEDIA_SRC_FRAME_RATE = 25,
               MEDIA_START_FRAME = 0,
               MEDIA_WIDTH = 1920,
            },
         },
         Inputs = {
            GlobalOut = Input { Value = 12, },
            AudioTrack = Input { Value = FuID { "Timeline Audio" }, },
            Layer = Input { Value = "1", },
            ClipTimeEnd = Input { Value = 12, },
            DeepOutputMode = Input {
               Value = 0,
               Disabled = true,
            },
            LeftAudio = Input {
               SourceOp = "Left",
               Source = "Data",
            },
            RightAudio = Input {
               SourceOp = "Right",
               Source = "Data",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 110, 49.5 } },
         Version = 1
      },
      MediaOut1 = MediaOut {
         Inputs = {
            Index = Input { Value = "0", },
            Input = Input {
               SourceOp = "Merge2",
               Source = "Output",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 1028.86, 148.5 } },
      },
      PageCurl = GroupOperator {
         CtrlWZoom = false,
         CustomData = {
            Path = {
               Map = {
                  ["Setting:"] = "Templates:\\Templates.drfx\\Edit\\Transitions\\"
               }
            },
         },
         Inputs = ordered() {
            MainInput1 = InstanceInput {
               SourceOp = "Merge2",
               Source = "Background",
            },
            MainInput2 = InstanceInput {
               SourceOp = "Camera3D1_FG_CLIP",
               Source = "ImageInput",
            },
            Input1 = InstanceInput {
               SourceOp = "Transform3D2",
               Source = "Transform3DOp.Rotate.Z",
               Name = "Curl Angle",
               Default = 23.5,
            },
            Input2 = InstanceInput {
               SourceOp = "Bender3D2",
               Source = "Amount",
               Name = "Roll Amount",
               Default = -1.25,
            },
            Input10 = InstanceInput {
               SourceOp = "Merge1",
               Source = "Blank5",
            },
            Input3 = InstanceInput {
               SourceOp = "Merge1",
               Source = "BlendClone",
               Name = "Shading",
               Default = 0.402,
            },
            Input4 = InstanceInput {
               SourceOp = "Merge1",
               Source = "Blank5",
            },
            Input5 = InstanceInput {
               SourceOp = "Shadow1",
               Source = "Softness",
               Name = "Shadow Softness",
               Default = 0.05,
            },
            Input6 = InstanceInput {
               SourceOp = "Shadow1",
               Source = "Red",
               Name = "Shadow Color",
               ControlGroup = 8,
               Default = 0,
            },
            Input7 = InstanceInput {
               SourceOp = "Shadow1",
               Source = "Green",
               Name = "Shadow Color",
               ControlGroup = 8,
               Default = 0,
            },
            Input8 = InstanceInput {
               SourceOp = "Shadow1",
               Source = "Blue",
               Name = "Shadow Color",
               ControlGroup = 8,
               Default = 0,
            },
            Input9 = InstanceInput {
               SourceOp = "Shadow1",
               Source = "Blend",
               Name = "Shadow Blend",
               Default = 1,
            }
         },
         Outputs = {
            MainOutput1 = InstanceOutput {
               SourceOp = "Merge2",
               Source = "Output",
            }
         },
         ViewInfo = GroupInfo {
            Pos = { 468.879, 148.5 },
            Flags = {
               AllowPan = false,
               ForceSource = true,
               ForceMask = true,
               GridSnap = true,
               ConnectedSnap = true,
               AutoSnap = true,
               RemoveRouters = true
            },
            Size = { 849.554, 486.559, 424.777, 54.9972 },
            Direction = "Horizontal",
            PipeStyle = "Direct",
            Scale = 1,
            Offset = { 0, 0 }
         },
         Tools = ordered() {
            Merge2 = Merge {
               CtrlWShown = false,
               Inputs = {
                  Background = Input {
                     SourceOp = "MediaIn1",
                     Source = "Output",
                  },
                  Foreground = Input {
                     SourceOp = "Shadow1",
                     Source = "Output",
                  },
                  PerformDepthMerge = Input { Value = 0, }
               },
               ViewInfo = OperatorInfo { Pos = { 361, 251.435 } },
            },
            Camera3D1_FG_CLIP = Camera3D {
               NameSet = true,
               Inputs = {
                  ["Transform3DOp.Translate.Z"] = Input { Value = 5, },
                  AoV = Input { Value = 19.26427, },
                  FLength = Input { Value = 34.9999968656308, },
                  ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
                  FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
                  ApertureW = Input { Value = 0.831496062992126, },
                  ApertureH = Input { Value = 0.467716535433071, },
                  IDepth = Input { Value = 4.6, },
                  ["SurfacePlaneInputs.SubdivisionWidth"] = Input { Value = 100, },
                  ["SurfacePlaneInputs.Lighting.Nest"] = Input { Value = 1, },
                  ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2, },
                  ImageInput = Input {
                     SourceOp = "MediaIn2",
                     Source = "Output",
                  },
                  ["MtlStdInputs.Specular.Nest"] = Input { Value = 1, },
                  ["MtlStdInputs.Specular.Intensity"] = Input { Value = 0, },
                  ["MtlStdInputs.MaterialID"] = Input { Value = 2, }
               },
               ViewInfo = OperatorInfo { Pos = { -330, 148.5 } },
            },
            Transform3D2 = Transform3D {
               Inputs = {
                  SceneInput = Input {
                     SourceOp = "Camera3D1_FG_CLIP",
                     Source = "Output",
                  },
                  ["Transform3DOp.Rotate.Z"] = Input { Value = 23.5, }
               },
               ViewInfo = OperatorInfo { Pos = { -262.936, 62.6317 } },
            },
            Bender3D2 = Bender3D {
               Inputs = {
                  SceneInput = Input {
                     SourceOp = "Transform3D2",
                     Source = "Output",
                  },
                  Amount = Input { Value = -1.25, },
                  Axis = Input { Value = 0, },
                  Angle = Input { Value = -90, },
                  Center = Input { Value = 1, },
                  RangeMax = Input {
                     SourceOp = "AnimCurves6",
                     Source = "Value",
                  },
                  Group = Input { Value = 1, }
               },
               ViewInfo = OperatorInfo { Pos = { -126.138, 62.6317 } },
               UserControls = ordered() { Min = { INP_Integer = false, LINKID_DataType = "Number", ICS_ControlPage = "Controls", INPID_InputControl = "ScrewControl", ICD_Center = 0, LINKS_Name = "Min", }, Max = { INP_Integer = false, LINKID_DataType = "Number", ICS_ControlPage = "Controls", INPID_InputControl = "ScrewControl", ICD_Center = 0, LINKS_Name = "Max", } }
            },
            AnimCurves6 = LUTLookup {
               CtrlWZoom = false,
               Inputs = {
                  Source = Input { Value = FuID { "Duration" }, },
                  Curve = Input { Value = FuID { "Easing" }, },
                  EaseIn = Input { Value = FuID { "Sine" }, },
                  EaseOut = Input { Value = FuID { "Cubic" }, },
                  Lookup = Input {
                     SourceOp = "AnimCurves6Lookup",
                     Source = "Value",
                  },
                  Invert = Input { Value = 1, }
               },
            },
            AnimCurves6Lookup = 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 },
            },
            Transform3D2_1 = Transform3D {
               Inputs = {
                  SceneInput = Input {
                     SourceOp = "Bender3D2",
                     Source = "Output",
                  },
                  ["Transform3DOp.Rotate.Z"] = Input {
                     Value = -23.5,
                     Expression = "Transform3D2.Transform3DOp.Rotate.Z*-1",
                  }
               },
               ViewInfo = OperatorInfo { Pos = { 1.177, 62.6317 } },
            },
            DirectionalLight1 = LightDirectional {
               Inputs = {
                  ["ShadowLightInputs3D.ShadowsEnabled"] = Input { Value = 1, },
                  ["ShadowLightInputs3D.ShadowMapSize"] = Input { Value = 2048, }
               },
               ViewInfo = OperatorInfo { Pos = { -140.798, 133.336 } },
            },
            Merge3D1 = Merge3D {
               Inputs = {
                  SceneInput1 = Input {
                     SourceOp = "Transform3D2_1",
                     Source = "Output",
                  },
                  SceneInput2 = Input {
                     SourceOp = "DirectionalLight1",
                     Source = "Output",
                  }
               },
               ViewInfo = OperatorInfo { Pos = { 0, 133.336 } },
            },
            Renderer3D1 = Renderer3D {
               CustomData = { ToolVersion = 2, },
               Inputs = {
                  Quality = Input { Value = 10, },
                  GlobalOut = Input { Value = 12, },
                  Width = Input { Value = 1920, },
                  Height = Input { Value = 1080, },
                  UseFrameFormatSettings = Input { Value = 1, },
                  ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
                  SceneInput = Input {
                     SourceOp = "Merge3D1",
                     Source = "Output",
                  },
                  CameraSelector = Input { Value = FuID { "Camera3D1_FG_CLIP" }, },
                  OutputType = Input { Disabled = true, },
                  RendererType = Input { Value = FuID { "RendererOpenGL" }, },
                  ["RendererOpenGL.AntiAliasing.Channels.RGBA.HighQuality.Enable"] = Input { Value = 1, },
                  ["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.HighQuality.Rate"] = Input { Value = 1, },
                  ["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
                  ["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
                  ["RendererOpenGL.AntiAliasing.Presets.Aux.Supersampling.HighQuality.Rate"] = Input { Value = 1, },
                  ["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
                  ["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
                  ["RendererOpenGL.AccumQuality"] = Input { Value = 32, },
                  ["RendererOpenGL.LightingEnabled"] = Input { Value = 1, }
               },
               ViewInfo = OperatorInfo { Pos = { 229.153, 78.7844 } },
               SubInputsData = {
                  RendererOpenGL = {
                     Version = 1
                  }
               }
            },
            Renderer3D1_1 = Renderer3D {
               CustomData = { ToolVersion = 2, },
               Inputs = {
                  Quality = Input { Value = 10, },
                  GlobalOut = Input { Value = 12, },
                  Width = Input { Value = 1920, },
                  Height = Input { Value = 1080, },
                  UseFrameFormatSettings = Input { Value = 1, },
                  ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
                  SceneInput = Input {
                     SourceOp = "Merge3D2",
                     Source = "Output",
                  },
                  CameraSelector = Input { Value = FuID { "Instance_Camera3D1_FG_CLIP" }, },
                  OutputType = Input { Disabled = true, },
                  RendererType = Input { Value = FuID { "RendererOpenGL" }, },
                  ["RendererOpenGL.AntiAliasing.Channels.RGBA.HighQuality.Enable"] = Input { Value = 1, },
                  ["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.HighQuality.Rate"] = Input { Value = 1, },
                  ["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
                  ["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
                  ["RendererOpenGL.AntiAliasing.Presets.Aux.Supersampling.HighQuality.Rate"] = Input { Value = 1, },
                  ["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
                  ["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
                  ["RendererOpenGL.AccumQuality"] = Input { Value = 32, },
                  ["RendererOpenGL.LightingEnabled"] = Input { Value = 1, },
                  ["RendererOpenGL.ShadowsEnabled"] = Input { Value = 1, }
               },
               ViewInfo = OperatorInfo { Pos = { 220, 133.336 } },
               SubInputsData = {
                  RendererOpenGL = {
                     Version = 1
                  }
               }
            },
            Merge1 = Merge {
               Inputs = {
                  Blend = Input { Value = 0.402, },
                  Background = Input {
                     SourceOp = "Renderer3D1",
                     Source = "Output",
                  },
                  Foreground = Input {
                     SourceOp = "Renderer3D1_1",
                     Source = "Output",
                  },
                  ApplyMode = Input { Value = FuID { "Screen" }, },
                  PerformDepthMerge = Input { Value = 0, }
               },
               ViewInfo = OperatorInfo { Pos = { 358.275, 133.336 } },
            },
            Shadow1 = Shadow {
               Inputs = {
                  Softness = Input { Value = 0.05, },
                  Input = Input {
                     SourceOp = "Merge1",
                     Source = "Output",
                  }
               },
               ViewInfo = OperatorInfo { Pos = { 361, 181.5 } },
            },
            Instance_Camera3D1_FG_CLIP = Camera3D {
               NameSet = true,
               SourceOp = "Camera3D1_FG_CLIP",
               Inputs = {
                  LayersNest = Input {
                  },
                  SceneInput = Input {
                  },
                  ["Transform3DOp.Translation"] = Input {
                  },
                  ["Transform3DOp.Rotation"] = Input {
                  },
                  ["Transform3DOp.PivotNest"] = Input {
                  },
                  ["Transform3DOp.ScaleNest"] = Input {
                  },
                  ["Transform3DOp.TargetNest"] = Input {
                  },
                  ["Stereo.Nest"] = Input {
                  },
                  ["Stereo.RightCamera"] = Input {
                  },
                  FilmBack = Input {
                  },
                  ControlVis = Input {
                  },
                  ["SurfacePlaneInputs.Visibility.Nest"] = Input {
                  },
                  ["SurfacePlaneInputs.Lighting.Nest"] = Input {
                     Value = 1,
                  },
                  ["SurfacePlaneInputs.Matte.Nest"] = Input {
                  },
                  ["SurfacePlaneInputs.BlendMode.Nest"] = Input {
                  },
                  ["SurfacePlaneInputs.Controls.Nest"] = Input {
                  },
                  ["SurfacePlaneInputs.ObjectID.Nest"] = Input {
                  },
                  ImageInput = Input {
                     SourceOp = "Background4",
                     Source = "Output",
                  },
                  ["MtlStdInputs.Diffuse.Nest"] = Input {
                  },
                  ["MtlStdInputs.Specular.Nest"] = Input {
                     Value = 1,
                  },
                  ["MtlStdInputs.Transmittance.Nest"] = Input {
                  },
                  ["MtlStdInputs.MaterialIDNest"] = Input {
                  },
                  CommentsNest = Input {
                  },
                  FrameRenderScriptNest = Input {
                  },
                  StartRenderScripts = Input {
                  },
                  EndRenderScripts = Input {
                  }
               },
               ViewInfo = OperatorInfo { Pos = { -110, 346.5 } },
            },
            Instance_Transform3D2 = Transform3D {
               SourceOp = "Transform3D2",
               Inputs = {
                  LayersNest = Input {
                  },
                  SceneInput = Input {
                     SourceOp = "Instance_Camera3D1_FG_CLIP",
                     Source = "Output",
                  },
                  ["Transform3DOp.Translation"] = Input {
                  },
                  ["Transform3DOp.Rotation"] = Input {
                  },
                  ["Transform3DOp.PivotNest"] = Input {
                  },
                  ["Transform3DOp.ScaleNest"] = Input {
                  },
                  ["Transform3DOp.TargetNest"] = Input {
                  },
                  CommentsNest = Input {
                  },
                  FrameRenderScriptNest = Input {
                  },
                  StartRenderScripts = Input {
                  },
                  EndRenderScripts = Input {
                  }
               },
               ViewInfo = OperatorInfo { Pos = { 0, 313.5 } },
            },
            Instance_Bender3D2 = Bender3D {
               SourceOp = "Bender3D2",
               Inputs = {
                  LayersNest = Input {
                  },
                  SceneInput = Input {
                     SourceOp = "Instance_Transform3D2",
                     Source = "Output",
                  },
                  CommentsNest = Input {
                  },
                  FrameRenderScriptNest = Input {
                  },
                  StartRenderScripts = Input {
                  },
                  EndRenderScripts = Input {
                  }
               },
               ViewInfo = OperatorInfo { Pos = { 110, 313.5 } },
               UserControls = ordered() { Min = { INP_Integer = false, LINKID_DataType = "Number", ICS_ControlPage = "Controls", INPID_InputControl = "ScrewControl", ICD_Center = 0, LINKS_Name = "Min", }, Max = { INP_Integer = false, LINKID_DataType = "Number", ICS_ControlPage = "Controls", INPID_InputControl = "ScrewControl", ICD_Center = 0, LINKS_Name = "Max", } }
            },
            Instance_Transform3D2_1 = Transform3D {
               SourceOp = "Transform3D2_1",
               Inputs = {
                  LayersNest = Input {
                  },
                  SceneInput = Input {
                     SourceOp = "Instance_Bender3D2",
                     Source = "Output",
                  },
                  ["Transform3DOp.Translation"] = Input {
                  },
                  ["Transform3DOp.Rotation"] = Input {
                  },
                  ["Transform3DOp.Rotate.Z"] = Input { Expression = "Transform3D2.Transform3DOp.Rotate.Z*-1", },
                  ["Transform3DOp.PivotNest"] = Input {
                  },
                  ["Transform3DOp.ScaleNest"] = Input {
                  },
                  ["Transform3DOp.TargetNest"] = Input {
                  },
                  CommentsNest = Input {
                  },
                  FrameRenderScriptNest = Input {
                  },
                  StartRenderScripts = Input {
                  },
                  EndRenderScripts = Input {
                  }
               },
               ViewInfo = OperatorInfo { Pos = { 275, 313.5 } },
            },
            Background4 = Background {
               Inputs = {
                  GlobalOut = Input { Value = 12, },
                  Width = Input { Value = 1920, },
                  Height = Input { Value = 1080, },
                  ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
                  TopLeftRed = Input { Value = 1, },
                  TopLeftGreen = Input { Value = 1, },
                  TopLeftBlue = Input { Value = 1, },
                  GradientType = Input { Value = FuID { "Radial" }, },
                  Start = Input { Value = { 0.5, 0.5 }, },
                  Gradient = Input {
                     Value = Gradient {
                        Colors = {
                           [0] = { 1, 1, 1, 1 },
                           [1] = { 0, 0, 0, 1 }
                        }
                     },
                  }
               },
               ViewInfo = OperatorInfo { Pos = { -275, 346.5 } },
            },
            Merge3D2 = Merge3D {
               Inputs = {
                  SceneInput1 = Input {
                     SourceOp = "DirectionalLight1_1",
                     Source = "Output",
                  },
                  SceneInput2 = Input {
                     SourceOp = "Instance_Transform3D2_1",
                     Source = "Output",
                  }
               },
               ViewInfo = OperatorInfo { Pos = { 110, 247.5 } },
            },
            DirectionalLight1_1 = LightDirectional {
               Inputs = {
                  ["Transform3DOp.Rotate.X"] = Input { Value = 5.2, },
                  ["Transform3DOp.Rotate.Y"] = Input { Value = -187.8, },
                  Intensity = Input { Value = 2, },
                  ["ShadowLightInputs3D.Nest"] = Input { Value = 1, },
                  ["ShadowLightInputs3D.ShadowMapSize"] = Input { Value = 2048, }
               },
               ViewInfo = OperatorInfo { Pos = { -220, 247.5 } },
            }
         },
      }
   }
}

Re: Page Curl effect in Fusion - how to?

PostPosted: Mon Apr 28, 2025 4:14 pm
by SlaV05
Thank you very much for your help but shared code doesn't appears as scheme presented on your screen shot. It is still very basic and doesn't change anything. Has it to be that complicated instead of just replacing one or two files in default transition? Why?

Re: Page Curl effect in Fusion - how to?

PostPosted: Mon Apr 28, 2025 4:33 pm
by KrunoSmithy
SlaV05 wrote:Thank you very much for your help but shared code doesn't appears as scheme presented on your screen shot. It is still very basic and doesn't change anything.


Not sure what you mean. It should work as you said you wanted.

SlaV05 wrote: Has it to be that complicated instead of just replacing one or two files in default transition? Why?


I didn't build the macro for the transition, someone else did, who obviously didn't intended you to change it as the end user. If you want to modify the existing effect, I have shared how to do it. I don't know what your skill level with fusion is, but that is the simplest way to do it for that particular transition macro. Otherwise you would have build one for your needs.

You can't replace one or two files, because the way the macro was created. Like I wrote earlier. Instead of building it with image plane, it was just image plugged into camera input and than render is split, but its the same image. If you wanted to have another image you can't do it unless you rebuild part of the comp, and since there is no shape like image plane to only replace that, you have to build also the transition elements. so you can copy the same movement , not break anything, but create conditions for new image to be put into the back side. You also have to replace lighting, because you need to shine light from different direction. Otherwise the white image is in the shadow and its dark.