Format constraint issue

Hi;

I’ve written a python script that builds a colorChecker setup (which is to say: a bunch of Constant nodes contained within a Group node). The Group node has some user params to let me adjust the size of the chart. This all works great, except that the Group node seems to want to ‘constrain’ my output to whatever format my Project Settings is set to (so, 1920 HD by default).

What I’d like to be able to do is set my colorChecker chart up arbitrarily, and have Natron simply use it at whatever size I want, rather than me having to go create a custom Project format to accommodate it. Is this possible?

I’ve seen notes about how “size is animatable, format is not”, but I don’t quite understand it (and this behavior is jarringly different from Nuke).

Thanks!

To add a bit of context: I currently have my ColorChecker set so that it generates a chart 2048x1380px in size. I want to now analyze the chart. When I do this:

thisNatronSession = app
nodeToSolve = thisNatronSession.getSelectedNodes()[0]
print(nodeToSolve.getOutputFormat().width())

the output is “1920”, rather than the “2048” I expect. The 1920 seems to come from a crop window with the label HD on it in the Viewport. It’s not clear to me why that crop window is there, and how I can get the ‘real’ width of my chart.

Did you mean to use the region of definition, not the format?

https://natron.readthedocs.io/en/rb-2.4/devel/PythonReference/NatronEngine/Effect.html#NatronEngine.NatronEngine.Effect.getRegionOfDefinition
vs
https://natron.readthedocs.io/en/rb-2.4/devel/PythonReference/NatronEngine/Effect.html#NatronEngine.NatronEngine.Effect.getOutputFormat

I don’t know? I mean, I want to query the output of a group and understand its resolution, and I’m confused by the differences you mention.

I find that if I append a Reformat at the end of my node graph within my colorChecker chart group, I can basically reformat it to match its ROD. But doing this doesn’t change the output of getOutputFormat(), and I can’t figure out what the “view” parameter of getRegionOfDefinition is meant to represent.

thisNatronSession = app
nodeToSolve = thisNatronSession.getSelectedNodes()[0]
print(nodeToSolve.getRegionOfDefinition(0, 0).width())

returns “0.0”