@@ -31,45 +31,44 @@ def __init__(self):
31
31
self ._used_vars [name ] = 0
32
32
33
33
34
- def _create_scene (self , indent : str ):
34
+ def _create_scene (self , indent_level : int ):
35
35
#TODO: wrap in more general unique name util function
36
- self ._write (f"# Generate unique scene name" , indent )
36
+ self ._write (f"# Generate unique scene name" , indent_level )
37
37
self ._write (f"{ BASE_NAME } = { str_to_py_str (self .compositor_name )} " ,
38
- indent )
39
- self ._write (f"{ END_NAME } = { BASE_NAME } " , indent )
40
- self ._write (f"if bpy.data.scenes.get({ END_NAME } ) != None:" , indent )
38
+ indent_level )
39
+ self ._write (f"{ END_NAME } = { BASE_NAME } " , indent_level )
40
+ self ._write (f"if bpy.data.scenes.get({ END_NAME } ) != None:" , indent_level )
41
41
42
- indent2 = f"{ indent } \t "
43
- self ._write (f"{ INDEX } = 1" , indent2 )
42
+ self ._write (f"{ INDEX } = 1" , indent_level + 1 )
44
43
self ._write (f"{ END_NAME } = { BASE_NAME } + f\" .{{i:03d}}\" " ,
45
- indent2 )
44
+ indent_level + 1 )
46
45
self ._write (f"while bpy.data.scenes.get({ END_NAME } ) != None:" ,
47
- indent2 )
46
+ indent_level + 1 )
48
47
49
- indent3 = f" { indent } \t \t "
50
- self . _write ( f" { END_NAME } = { BASE_NAME } + f \" .{{ { INDEX } :03d}} \" " , indent3 )
51
- self ._write (f"{ INDEX } += 1\n " , indent3 )
48
+ self . _write ( f" { END_NAME } = { BASE_NAME } + f \" .{{ { INDEX } :03d}} \" " ,
49
+ indent_level + 2 )
50
+ self ._write (f"{ INDEX } += 1\n " , indent_level + 2 )
52
51
53
- self ._write (f"{ SCENE } = bpy.context.window.scene.copy()\n " , indent )
54
- self ._write (f"{ SCENE } .name = { END_NAME } " , indent )
55
- self ._write (f"{ SCENE } .use_fake_user = True" , indent )
56
- self ._write (f"bpy.context.window.scene = { SCENE } " , indent )
52
+ self ._write (f"{ SCENE } = bpy.context.window.scene.copy()\n " , indent_level )
53
+ self ._write (f"{ SCENE } .name = { END_NAME } " , indent_level )
54
+ self ._write (f"{ SCENE } .use_fake_user = True" , indent_level )
55
+ self ._write (f"bpy.context.window.scene = { SCENE } " , indent_level )
57
56
58
57
def _initialize_compositor_node_tree (self , ntp_nt , nt_name ):
59
58
#initialize node group
60
- self ._write (f"#initialize { nt_name } node group" , self ._outer )
61
- self ._write (f"def { ntp_nt .var } _node_group():" , self ._outer )
59
+ self ._write (f"#initialize { nt_name } node group" , self ._outer_indent_level )
60
+ self ._write (f"def { ntp_nt .var } _node_group():" , self ._outer_indent_level )
62
61
63
62
if ntp_nt .node_tree == self ._base_node_tree :
64
63
self ._write (f"{ ntp_nt .var } = { SCENE } .node_tree" )
65
64
self ._write (f"#start with a clean node tree" )
66
65
self ._write (f"for { NODE } in { ntp_nt .var } .nodes:" )
67
- self ._write (f"\t { ntp_nt .var } .nodes.remove({ NODE } )" )
66
+ self ._write (f"{ ntp_nt .var } .nodes.remove({ NODE } )" , self . _inner_indent_level + 1 )
68
67
else :
69
68
self ._write ((f"{ ntp_nt .var } = bpy.data.node_groups.new("
70
69
f"type = \' CompositorNodeTree\' , "
71
70
f"name = { str_to_py_str (nt_name )} )" ))
72
- self ._write ("" )
71
+ self ._write ("" , 0 )
73
72
74
73
# Compositor node tree settings
75
74
#TODO: might be good to make this optional
@@ -108,7 +107,7 @@ def _set_color_balance_settings(self, node: CompositorNodeColorBalance
108
107
NTPNodeSetting ("gamma" , ST .COLOR , min_version_ = (3 , 5 , 0 )),
109
108
NTPNodeSetting ("lift" , ST .VEC3 , max_version_ = (3 , 5 , 0 )),
110
109
NTPNodeSetting ("lift" , ST .COLOR , min_version_ = (3 , 5 , 0 ))]
111
- else :
110
+ elif node . correction_method == 'OFFSET_POWER_SLOPE' :
112
111
lst = [NTPNodeSetting ("correction_method" , ST .ENUM ),
113
112
NTPNodeSetting ("offset" , ST .VEC3 , max_version_ = (3 , 5 , 0 )),
114
113
NTPNodeSetting ("offset" , ST .COLOR , min_version_ = (3 , 5 , 0 )),
@@ -117,11 +116,20 @@ def _set_color_balance_settings(self, node: CompositorNodeColorBalance
117
116
NTPNodeSetting ("power" , ST .COLOR , min_version_ = (3 , 5 , 0 )),
118
117
NTPNodeSetting ("slope" , ST .VEC3 , max_version_ = (3 , 5 , 0 )),
119
118
NTPNodeSetting ("slope" , ST .COLOR , min_version_ = (3 , 5 , 0 ))]
119
+ elif node .correction_method == 'WHITEPOINT' :
120
+ lst = [NTPNodeSetting ("correction_method" , ST .ENUM ),
121
+ NTPNodeSetting ("input_temperature" , ST .FLOAT ),
122
+ NTPNodeSetting ("input_tint" , ST .FLOAT ),
123
+ NTPNodeSetting ("output_temperature" , ST .FLOAT ),
124
+ NTPNodeSetting ("output_tint" , ST .FLOAT )]
125
+ else :
126
+ self .report ({'ERROR' },
127
+ f"Unknown color balance correction method "
128
+ f"{ enum_to_py_str (node .correction_method )} " )
129
+ return
120
130
121
131
color_balance_info = self ._node_infos ['CompositorNodeColorBalance' ]
122
132
self ._node_infos ['CompositorNodeColorBalance' ] = color_balance_info ._replace (attributes_ = lst )
123
- for setting in self ._node_infos ['CompositorNodeColorBalance' ].attributes_ :
124
- print (setting .name_ )
125
133
126
134
def _process_node (self , node : Node , ntp_nt : NTP_NodeTree ):
127
135
"""
@@ -191,7 +199,7 @@ def _process_node_tree(self, node_tree: CompositorNodeTree):
191
199
self ._write (f"return { nt_var } \n " )
192
200
193
201
#create node group
194
- self ._write (f"{ nt_var } = { nt_var } _node_group()\n " , self ._outer )
202
+ self ._write (f"{ nt_var } = { nt_var } _node_group()\n " , self ._outer_indent_level )
195
203
196
204
def execute (self , context ):
197
205
if not self ._setup_options (context .scene .ntp_options ):
@@ -214,8 +222,8 @@ def execute(self, context):
214
222
comp_var = clean_string (self .compositor_name )
215
223
216
224
if self ._mode == 'ADDON' :
217
- self ._outer = " \t \t "
218
- self ._inner = " \t \t \t "
225
+ self ._outer_indent_level = 2
226
+ self ._inner_indent_level = 3
219
227
220
228
if not self ._setup_addon_directories (context , comp_var ):
221
229
return {'CANCELLED' }
@@ -226,25 +234,25 @@ def execute(self, context):
226
234
self ._class_name = clean_string (self .compositor_name , lower = False )
227
235
self ._init_operator (comp_var , self .compositor_name )
228
236
229
- self ._write ("def execute(self, context):" , " \t " )
237
+ self ._write ("def execute(self, context):" , 1 )
230
238
else :
231
239
self ._file = StringIO ("" )
232
240
if self ._include_imports :
233
241
self ._file .write ("import bpy, mathutils\n \n " )
234
242
235
243
if self .is_scene :
236
244
if self ._mode == 'ADDON' :
237
- self ._create_scene (" \t \t " )
245
+ self ._create_scene (2 )
238
246
elif self ._mode == 'SCRIPT' :
239
- self ._create_scene ("" )
247
+ self ._create_scene (0 )
240
248
241
249
node_trees_to_process = self ._topological_sort (self ._base_node_tree )
242
250
243
251
for node_tree in node_trees_to_process :
244
252
self ._process_node_tree (node_tree )
245
253
246
254
if self ._mode == 'ADDON' :
247
- self ._write ("return {'FINISHED'}\n " , self ._outer )
255
+ self ._write ("return {'FINISHED'}\n " , self ._outer_indent_level )
248
256
249
257
self ._create_menu_func ()
250
258
self ._create_register_func ()
0 commit comments