X-Git-Url: http://users.mur.at/ms/git/gitweb/?a=blobdiff_plain;f=aces_1.0.0%2Fpython%2Faces_ocio%2Faces_config.py;h=7d802e031bb1ce15ca9fa33624aa9e98be009d44;hb=e567a3894cb97877de4bb60ab4d0a9cc98a11a83;hp=616c7186deaa0c8d8d04b1c622bd315e45916c18;hpb=4899e9d3946e6c80e80149ad2c388b15f271d852;p=OpenColorIO-Configs.git diff --git a/aces_1.0.0/python/aces_ocio/aces_config.py b/aces_1.0.0/python/aces_ocio/aces_config.py index 616c718..7d802e0 100755 --- a/aces_1.0.0/python/aces_ocio/aces_config.py +++ b/aces_1.0.0/python/aces_ocio/aces_config.py @@ -173,11 +173,6 @@ def generate_OCIO_transform(transforms): Return value description. """ - interpolation_options = { - 'linear': ocio.Constants.INTERP_LINEAR, - 'nearest': ocio.Constants.INTERP_NEAREST, - 'tetrahedral': ocio.Constants.INTERP_TETRAHEDRAL} - direction_options = { 'forward': ocio.Constants.TRANSFORM_DIR_FORWARD, 'inverse': ocio.Constants.TRANSFORM_DIR_INVERSE} @@ -316,8 +311,8 @@ def add_colorspace_aliases(config, for alias_name in colorspace_alias_names: if alias_name.lower() == colorspace.name.lower(): - print( - 'Skipping alias creation for %s, alias %s, because lower cased names match' % ( + print('Skipping alias creation for %s, alias %s, ' + 'because lower cased names match' % ( colorspace.name, alias_name)) continue @@ -328,7 +323,8 @@ def add_colorspace_aliases(config, description = colorspace.description if colorspace.aces_transform_id: - description += '\n\nACES Transform ID : %s' % colorspace.aces_transform_id + description += ( + '\n\nACES Transform ID : %s' % colorspace.aces_transform_id) ocio_colorspace_alias = ocio.ColorSpace( name=alias_name, @@ -367,11 +363,9 @@ def add_colorspace_aliases(config, def add_look(config, look, - prefix, custom_lut_dir, reference_name, - config_data, - multiple_displays=False): + config_data): """ Object description. @@ -394,7 +388,7 @@ def add_look(config, # Copy look lut # if custom_lut_dir: - if not '$' in look_lut: + if '$' not in look_lut: print('Getting ready to copy look lut : %s' % look_lut) shutil.copy2(look_lut, custom_lut_dir) look_lut = os.path.split(look_lut)[1] @@ -450,8 +444,7 @@ def add_look(config, print() -def integrate_looks_into_views(config, - looks, +def integrate_looks_into_views(looks, reference_name, config_data, multiple_displays=False): @@ -483,7 +476,7 @@ def integrate_looks_into_views(config, # - Add these new copied colorspaces for the Displays / Views else: for display, view_list in config_data['displays'].iteritems(): - output_colorspace_copy = None + output_colorspace_c = None look_names_string = '' for view_name, output_colorspace in view_list.iteritems(): if view_name == 'Output Transform': @@ -491,64 +484,67 @@ def integrate_looks_into_views(config, print('Adding new View that incorporates looks') # Make a copy of the output colorspace - output_colorspace_copy = copy.deepcopy(output_colorspace) + output_colorspace_c = copy.deepcopy(output_colorspace) # for look_name in look_names: for i in range(len(look_names)): look_name = look_names[i] - # Add the LookTransform to the head of the from_reference transform list - if output_colorspace_copy.from_reference_transforms: - output_colorspace_copy.from_reference_transforms.insert( + # Add the LookTransform to the head of the + # from_reference transform list. + if output_colorspace_c.from_reference_transforms: + output_colorspace_c.from_reference_transforms.insert( i, {'type': 'look', 'look': look_name, 'src': reference_name, 'dst': reference_name, 'direction': 'forward'}) - # Add the LookTransform to the end of the to_reference transform list - if output_colorspace_copy.to_reference_transforms: + # Add the LookTransform to the end of + # the to_reference transform list. + if output_colorspace_c.to_reference_transforms: inverse_look_name = look_names[ len(look_names) - 1 - i] - output_colorspace_copy.to_reference_transforms.append( + output_colorspace_c.to_reference_transforms.append( {'type': 'look', 'look': inverse_look_name, 'src': reference_name, 'dst': reference_name, 'direction': 'inverse'}) - if not look_name in config_data['looks']: + if look_name not in config_data['looks']: config_data['looks'].append(look_name) look_names_string = ', '.join(look_names) - output_colorspace_copy.name = '%s with %s' % ( + output_colorspace_c.name = '%s with %s' % ( output_colorspace.name, look_names_string) - output_colorspace_copy.aliases = [ - 'out_%s' % compact(output_colorspace_copy.name)] + output_colorspace_c.aliases = [ + 'out_%s' % compact(output_colorspace_c.name)] - print( - 'Colorspace that incorporates looks created : %s' % output_colorspace_copy.name) + print('Colorspace that incorporates looks ' + 'created : %s' % output_colorspace_c.name) - config_data['colorSpaces'].append(output_colorspace_copy) + config_data['colorSpaces'].append(output_colorspace_c) - if output_colorspace_copy: - print( - 'Adding colorspace that incorporates looks into view list') + if output_colorspace_c: + print('Adding colorspace that incorporates looks ' + 'into view list') # Change the name of the View - view_list[ - 'Output Transform with %s' % look_names_string] = output_colorspace_copy + view_list['Output Transform with %s' % look_names_string] = ( + output_colorspace_c) config_data['displays'][display] = view_list - # print( 'Display : %s, View List : %s' % (display, ', '.join(view_list)) ) + # print('Display : %s, View List : %s' % ( + # display, ', '.join(view_list)) ) def create_config(config_data, aliases=False, prefix=False, multiple_displays=False, - look_info=[], + look_info=None, custom_lut_dir=None): """ Object description. @@ -564,6 +560,9 @@ def create_config(config_data, Return value description. """ + if look_info is None: + look_info = [] + prefixed_names = {} alias_colorspaces = [] @@ -574,10 +573,10 @@ def create_config(config_data, config.setDescription('An ACES config generated from python') # Setting configuration search path. - searchPath = ['luts'] + search_path = ['luts'] if custom_lut_dir: - searchPath.append('custom') - config.setSearchPath(':'.join(searchPath)) + search_path.append('custom') + config.setSearchPath(':'.join(search_path)) # Defining the reference colorspace. reference_data = config_data['referenceColorSpace'] @@ -608,13 +607,15 @@ def create_config(config_data, if reference_data.aliases: # add_colorspace_alias(config, reference_data, # reference_data, reference_data.aliases) - # defer adding alias colorspaces until end. Helps with some applications + # defer adding alias colorspaces until end. + # Helps with some applications. alias_colorspaces.append( [reference_data, reference_data, reference_data.aliases]) print() - # print( 'color spaces : %s' % [x.name for x in sorted(config_data['colorSpaces'])]) + # print('color spaces : %s' % [ + # x.name for x in sorted(config_data['colorSpaces'])]) # # Add Looks and Look colorspaces @@ -628,14 +629,12 @@ def create_config(config_data, for look in look_info: add_look(config, look, - prefix, custom_lut_dir, reference_data.name, config_data) # Integrate looks with displays, views - integrate_looks_into_views(config, - look_info, + integrate_looks_into_views(look_info, reference_data.name, config_data, multiple_displays) @@ -657,7 +656,8 @@ def create_config(config_data, description = colorspace.description if colorspace.aces_transform_id: - description += '\n\nACES Transform ID : %s' % colorspace.aces_transform_id + description += ( + '\n\nACES Transform ID : %s' % colorspace.aces_transform_id) ocio_colorspace = ocio.ColorSpace( name=colorspace.name, @@ -694,7 +694,8 @@ def create_config(config_data, if colorspace.aliases: # add_colorspace_alias(config, reference_data, # colorspace, colorspace.aliases) - # defer adding alias colorspaces until end. Helps with some applications + # defer adding alias colorspaces until end. + # Helps with some applications. alias_colorspaces.append( [reference_data, colorspace, colorspace.aliases]) @@ -703,9 +704,9 @@ def create_config(config_data, print() # - # We add roles early so we can create alias colorspaces with the names of the roles - # before the rest of the colorspace aliases are added to the config. - # + # We add roles early so we can create alias colorspaces with the names + # of the roles before the rest of the colorspace aliases are added + # to the config. print('Setting the roles') if prefix: @@ -724,7 +725,8 @@ def create_config(config_data, texture_paint=prefixed_names[ config_data['roles']['texture_paint']]) - # Not allowed for the moment. role names can not overlap with colorspace names. + # Not allowed for the moment. role names can not overlap + # with colorspace names. """ # Add the aliased colorspaces for each role for role_name, role_colorspace_name in config_data['roles'].iteritems(): @@ -732,7 +734,9 @@ def create_config(config_data, print( 'Finding colorspace : %s' % role_colorspace_prefixed_name ) # Find the colorspace pointed to by the role - role_colorspaces = [colorspace for colorspace in config_data['colorSpaces'] if colorspace.name == role_colorspace_prefixed_name] + role_colorspaces = [colorspace + for colorspace in config_data['colorSpaces'] + if colorspace.name == role_colorspace_prefixed_name] role_colorspace = None if len(role_colorspaces) > 0: role_colorspace = role_colorspaces[0] @@ -744,7 +748,8 @@ def create_config(config_data, print( 'Adding an alias colorspace named %s, pointing to %s' % ( role_name, role_colorspace.name)) - add_colorspace_aliases(config, reference_data, role_colorspace, [role_name], 'Roles') + add_colorspace_aliases( + config, reference_data, role_colorspace, [role_name], 'Roles') """ else: @@ -760,12 +765,15 @@ def create_config(config_data, scene_linear=config_data['roles']['scene_linear'], texture_paint=config_data['roles']['texture_paint']) - # Not allowed for the moment. role names can not overlap with colorspace names. + # Not allowed for the moment. role names can not overlap + # with colorspace names. """ # Add the aliased colorspaces for each role for role_name, role_colorspace_name in config_data['roles'].iteritems(): # Find the colorspace pointed to by the role - role_colorspaces = [colorspace for colorspace in config_data['colorSpaces'] if colorspace.name == role_colorspace_name] + role_colorspaces = [colorspace + for colorspace in config_data['colorSpaces'] + if colorspace.name == role_colorspace_name] role_colorspace = None if len(role_colorspaces) > 0: role_colorspace = role_colorspaces[0] @@ -777,15 +785,17 @@ def create_config(config_data, print( 'Adding an alias colorspace named %s, pointing to %s' % ( role_name, role_colorspace.name)) - add_colorspace_aliases(config, reference_data, role_colorspace, [role_name], 'Roles') + add_colorspace_aliases( + config, reference_data, role_colorspace, [role_name], 'Roles') """ print() - # We add these at the end as some applications use the order of the colorspaces - # definitions in the config to order the colorspaces in their selection lists. - # Other go alphabetically. This should keep the alias colorspaces out of the way - # for the apps that use the order of definition in the config. + # We add these at the end as some applications use the order of the + # colorspaces definitions in the config to order the colorspaces + # in their selection lists. + # Other go alphabetically. This should keep the alias colorspaces out + # of the way for the apps that use the order of definition in the config. print('Adding the alias colorspaces') for reference, colorspace, aliases in alias_colorspaces: add_colorspace_aliases(config, reference, colorspace, aliases) @@ -794,7 +804,8 @@ def create_config(config_data, print('Adding the diplays and views') - # Set the color_picking role to be the first Display's Output Transform View + # Set the color_picking role to be + # the first Display's Output Transform View. default_display_name = config_data['defaultDisplay'] default_display_views = config_data['displays'][default_display_name] default_display_colorspace = default_display_views['Output Transform'] @@ -815,7 +826,8 @@ def create_config(config_data, print('Creating multiple displays, with looks : %s' % looks) # Note: We don't reorder the Displays to put the 'defaultDisplay' first - # because OCIO will order them alphabetically when the config is written to disk. + # because OCIO will order them alphabetically + # when the config is written to disk. # Create Displays, Views for display, view_list in config_data['displays'].iteritems(): @@ -861,7 +873,8 @@ def create_config(config_data, # We use the Display names as the View names in this case # as there is a single Display that contains all views. - # This works for more applications than not, as of the time of this implementation. + # This works for more applications than not, + # as of the time of this implementation. # Maya 2016 doesn't like parentheses in View names display_cleaned = replace(display, {')': '', '(': ''}) @@ -872,10 +885,10 @@ def create_config(config_data, display_cleaned = '%s with %s' % ( display_cleaned, look_names) - viewsWithLooksAtEnd = False - # Storing combo of display, view and colorspace name in a list so we can - # add them to the end of the list - if viewsWithLooksAtEnd: + views_with_looks_at_end = False + # Storing combo of display, view and colorspace name + # in a list so we can add them to the end of the list. + if views_with_looks_at_end: displays_views_colorspaces.append( [single_display_name, display_cleaned, colorspace.name]) @@ -898,10 +911,12 @@ def create_config(config_data, if not (display_cleaned in views): views.append(display_cleaned) - # Add to config any display, view combinations that were saved for later - # This list will be empty unless viewsWithLooksAtEnd is set to True above + # Add to config any display, view combinations that were saved + # for later. This list will be empty unless views_with_looks_at_end is + # set to True above. for display_view_colorspace in displays_views_colorspaces: - single_display_name, display_cleaned, colorspace_name = display_view_colorspace + single_display_name, display_cleaned, colorspace_name = ( + display_view_colorspace) # Add to config config.addDisplay(single_display_name, display_cleaned, @@ -1035,9 +1050,9 @@ def generate_LUTs(odt_info, # ------------------------------------------------------------------------- # *ARRI Log-C* to *ACES*. - arri_colorSpaces = arri.create_colorspaces(lut_directory, + arri_colorspaces = arri.create_colorspaces(lut_directory, lut_resolution_1d) - for cs in arri_colorSpaces: + for cs in arri_colorspaces: config_data['colorSpaces'].append(cs) # *Canon-Log* to *ACES*. @@ -1053,9 +1068,9 @@ def generate_LUTs(odt_info, config_data['colorSpaces'].append(cs) # *Panasonic V-Log* to *ACES*. - panasonic_colorSpaces = panasonic.create_colorspaces(lut_directory, + panasonic_colorspaces = panasonic.create_colorspaces(lut_directory, lut_resolution_1d) - for cs in panasonic_colorSpaces: + for cs in panasonic_colorspaces: config_data['colorSpaces'].append(cs) # *RED* colorspaces to *ACES*. @@ -1065,18 +1080,17 @@ def generate_LUTs(odt_info, config_data['colorSpaces'].append(cs) # *S-Log* to *ACES*. - sony_colorSpaces = sony.create_colorspaces(lut_directory, + sony_colorspaces = sony.create_colorspaces(lut_directory, lut_resolution_1d) - for cs in sony_colorSpaces: + for cs in sony_colorspaces: config_data['colorSpaces'].append(cs) # ------------------------------------------------------------------------- # General Color Spaces # ------------------------------------------------------------------------- - general_colorSpaces = general.create_colorspaces(lut_directory, - lut_resolution_1d, - lut_resolution_3d) - for cs in general_colorSpaces: + general_colorspaces = general.create_colorspaces(lut_directory, + lut_resolution_1d) + for cs in general_colorspaces: config_data['colorSpaces'].append(cs) # The *Raw* color space @@ -1096,7 +1110,6 @@ def generate_baked_LUTs(odt_info, shaper_name, baked_directory, config_path, - lut_resolution_1d, lut_resolution_3d, lut_resolution_shaper=1024, prefix=False): @@ -1117,7 +1130,8 @@ def generate_baked_LUTs(odt_info, odt_info_C = dict(odt_info) # Uncomment if you would like to support the older behavior where ODTs - # that have support for full and legal range output generate a LUT for each. + # that have support for full and legal range output generate + # a LUT for each. """ # Create two entries for ODTs that have full and legal range support for odt_ctl_name, odt_values in odt_info.iteritems(): @@ -1264,7 +1278,7 @@ def generate_baked_LUTs(odt_info, def create_config_dir(config_directory, - bake_secondary_LUTs=False, + bake_secondary_luts=False, custom_lut_dir=None): """ Object description. @@ -1283,7 +1297,7 @@ def create_config_dir(config_directory, lut_directory = os.path.join(config_directory, 'luts') dirs = [config_directory, lut_directory] - if bake_secondary_LUTs: + if bake_secondary_luts: dirs.extend([os.path.join(config_directory, 'baked'), os.path.join(config_directory, 'baked', 'flame'), os.path.join(config_directory, 'baked', 'photoshop'), @@ -1304,9 +1318,9 @@ def create_ACES_config(aces_ctl_directory, config_directory, lut_resolution_1d=4096, lut_resolution_3d=64, - bake_secondary_LUTs=True, + bake_secondary_luts=True, multiple_displays=False, - look_info=[], + look_info=None, copy_custom_luts=True, cleanup=True, prefix_colorspaces_with_family_names=True): @@ -1324,13 +1338,16 @@ def create_ACES_config(aces_ctl_directory, Return value description. """ + if look_info is None: + look_info = [] + # Directory for custom LUTs custom_lut_dir = None if copy_custom_luts: custom_lut_dir = os.path.join(config_directory, 'custom') lut_directory = create_config_dir(config_directory, - bake_secondary_LUTs, + bake_secondary_luts, custom_lut_dir) odt_info = aces.get_ODTs_info(aces_ctl_directory) @@ -1358,12 +1375,11 @@ def create_ACES_config(aces_ctl_directory, write_config(config, os.path.join(config_directory, 'config.ocio')) - if bake_secondary_LUTs: + if bake_secondary_luts: generate_baked_LUTs(odt_info, shaper_name, os.path.join(config_directory, 'baked'), os.path.join(config_directory, 'config.ocio'), - lut_resolution_1d, lut_resolution_3d, lut_resolution_1d, prefix=prefix_colorspaces_with_family_names) @@ -1394,30 +1410,53 @@ def main(): usage += '\n' usage += 'Command line examples' usage += '\n' - usage += 'Create a GUI-friendly ACES 1.0 config with no secondary, baked LUTs : \n' - usage += '\tcreate_aces_config -a /path/to/aces-dev/transforms/ctl --lutResolution1d 1024 --lutResolution3d 33 -c aces_1.0.0 --dontBakeSecondaryLUTs' + usage += ('Create a GUI-friendly ACES 1.0 config with no secondary, ' + 'baked LUTs : \n') + usage += ('\tcreate_aces_config -a /path/to/aces-dev/transforms/ctl ' + '--lutResolution1d 1024 --lutResolution3d 33 -c aces_1.0.0 ' + '--dontBakeSecondaryLUTs') usage += '\n' usage += 'Create a more OCIO-compliant ACES 1.0 config : \n' - usage += '\tcreate_aces_config -a /path/to/aces-dev/transforms/ctl --lutResolution1d 1024 --lutResolution3d 33 -c aces_1.0.0 --createMultipleDisplays' + usage += ('\tcreate_aces_config -a /path/to/aces-dev/transforms/ctl ' + '--lutResolution1d 1024 --lutResolution3d 33 -c aces_1.0.0 ' + '--createMultipleDisplays') usage += '\n' usage += '\n' usage += 'Adding custom looks' usage += '\n' - usage += 'Create a GUI-friendly ACES 1.0 config with an ACES-style CDL (will be applied in the ACEScc colorspace): \n' - usage += '\tcreate_aces_config -a /path/to/aces-dev/transforms/ctl --lutResolution1d 1024 --lutResolution3d 33 -c aces_1.0.0 \n\t\t--addACESLookCDL ACESCDLName /path/to/SampleCDL.ccc cc03345' + usage += ('Create a GUI-friendly ACES 1.0 config with an ACES-style CDL ' + '(will be applied in the ACEScc colorspace): \n') + usage += ('\tcreate_aces_config -a /path/to/aces-dev/transforms/ctl ' + '--lutResolution1d 1024 --lutResolution3d 33 -c aces_1.0.0 ' + '\n\t\t--addACESLookCDL ACESCDLName ' + '/path/to/SampleCDL.ccc cc03345') usage += '\n' usage += 'Create a GUI-friendly ACES 1.0 config with an general CDL: \n' - usage += '\tcreate_aces_config -a /path/to/aces-dev/transforms/ctl --lutResolution1d 1024 --lutResolution3d 33 -c aces_1.0.0 \n\t\t--addCustomLookCDL CustomCDLName "ACES - ACEScc" /path/to/SampleCDL.ccc cc03345' + usage += ('\tcreate_aces_config -a /path/to/aces-dev/transforms/ctl ' + '--lutResolution1d 1024 --lutResolution3d 33 -c aces_1.0.0 ' + '\n\t\t--addCustomLookCDL CustomCDLName "ACES - ACEScc" ' + '/path/to/SampleCDL.ccc cc03345') usage += '\n' - usage += '\tIn this example, the CDL will be applied in the ACEScc colorspace, but the user could choose other spaces by changing the argument after the name of the look. \n' + usage += ('\tIn this example, the CDL will be applied in the ' + 'ACEScc colorspace, but the user could choose other spaces ' + 'by changing the argument after the name of the look. \n') usage += '\n' - usage += 'Create a GUI-friendly ACES 1.0 config with an ACES-style LUT (will be applied in the ACEScc colorspace): \n' - usage += '\tcreate_aces_config -a /path/to/aces-dev/transforms/ctl --lutResolution1d 1024 --lutResolution3d 33 -c aces_1.0.0 \n\t\t--addACESLookLUT ACESLUTName /path/to/SampleCDL.ccc cc03345' + usage += ('Create a GUI-friendly ACES 1.0 config with an ACES-style LUT ' + '(will be applied in the ACEScc colorspace): \n') + usage += ('\tcreate_aces_config -a /path/to/aces-dev/transforms/ctl ' + '--lutResolution1d 1024 --lutResolution3d 33 -c aces_1.0.0 ' + '\n\t\t--addACESLookLUT ACESLUTName ' + '/path/to/SampleCDL.ccc cc03345') usage += '\n' usage += 'Create a GUI-friendly ACES 1.0 config with an general LUT: \n' - usage += '\tcreate_aces_config -a /path/to/aces-dev/transforms/ctl --lutResolution1d 1024 --lutResolution3d 33 -c aces_1.0.0 \n\t\t--addCustomLookLUT CustomLUTName "ACES - ACEScc" /path/to/SampleCDL.ccc cc03345' + usage += ('\tcreate_aces_config -a /path/to/aces-dev/transforms/ctl ' + '--lutResolution1d 1024 --lutResolution3d 33 -c aces_1.0.0 ' + '\n\t\t--addCustomLookLUT CustomLUTName "ACES - ACEScc" ' + '/path/to/SampleCDL.ccc cc03345') usage += '\n' - usage += '\tIn this example, the LUT will be applied in the ACEScc colorspace, but the user could choose other spaces by changing the argument after the name of the look. \n' + usage += ('\tIn this example, the LUT will be applied in the ' + 'ACEScc colorspace, but the user could choose other spaces ' + 'by changing the argument after the name of the look. \n') usage += '\n' look_info = [] @@ -1473,14 +1512,6 @@ def main(): print(look_info) - # TODO: Investigate the following statements. - try: - args_start = sys.argv.index('--') + 1 - args = sys.argv[args_start:] - except: - args_start = len(sys.argv) + 1 - args = [] - print('command line : \n%s\n' % ' '.join(sys.argv)) assert aces_ctl_directory is not None, (