Jump to: Board index » General » Fusion

Crashing when Node has variable GlobalIn/Out

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

Robert Chan

  • Posts: 1
  • Joined: Sun Nov 10, 2019 1:32 pm
  • Real Name: Robert Chan

Crashing when Node has variable GlobalIn/Out

PostMon Nov 11, 2019 3:59 am

Firstly, yes I know there are ways to achieve what I'm doing, like setting blank string as text or size to 0, this post is just to point out a potential bug.

I'm working on a Fusion comp where GlobalIn/GlobalOut for some nodes are controlled by an expression, and it would take the values from a Custom Tool.

I'm doing it from a Custom Tool because this affects multiple nodes (so a bunch of nodes appear/disappear based off 1 value.) Specifically I am controlling the in/out values for text nodes.

I found that if I create the Fusion comp, then modified the node with the expressions for GlobalIn/Out, it would run fine with no errors and as expected. I would save my work, then when I try to load the project again later on, the program crashes.

I know that they don't allow you to set GlobalIn/Out via expression normally in Fusion since you can't do it via the right click menu, but they also don't allow you to set expressions for Font and Style either and I've had no issues with setting those, and changing them based on timings set in a Custom Tool.

Anyway, if you want to test this yourself, you can create a project, and add a new Fusion Comp.
In this Comp, add a custom tool. Then create a text node, background, merge to mediaOut, pretty basic.

Now you copy the text node, then paste it into a text editor then edit it as follows:

Replace:
Code: Select all
GlobalOut = Input { Value = 119, },

Note: the comma before the closing brace is from Fusion, you can remove it.

With:
Code: Select all
GlobalIn = Input {
   Value = 0,
   Expression = "iif(CustomTool1.NumberIn1 < 0, 0, math.floor(CustomTool1.NumberIn1))"
},
GlobalOut = Input {
   Value = 119,
   Expression = "iif(CustomTool1.NumberIn2 < 0, 0, math.floor(CustomTool1.NumberIn2))"
},


Pretty straightforward, set GlobalIn and GlobalOut to whatever value is in NumberIn1 and NumberIn2 respectively, with a check to ensure negative numbers are set to 0 and to round down the values.

Then go into the CustomTool and set whatever values to NumberIn1 and NumberIn2 (make sure the value in 2 is less than the value in 1, just to be safe.)

If you run the comp, the text will only appear between the frames specified from NumberIn1 to NumberIn2, it runs as expected, if you put it in your timeline it works as expected, and you can export the video, no problem. Save the project, then try to re-open the project, it won't open.

I've tested with using the same expression for other attributes and so far the only attribute I've tried that makes the project unusable is GlobalIn and GlobalOut.

Anyway, if you want to test this, do it on a new project. And yes I figured there are many other ways to shut off a node based on another node's variables but having a project be unusable based off something like this isn't ideal.

Return to Fusion

Who is online

Users browsing this forum: No registered users and 59 guests