+def create_generic_log(aces_ctl_directory,
+ lut_directory,
+ lut_resolution_1d,
+ cleanup,
+ name='log',
+ aliases=[],
+ min_value=0.0,
+ max_value=1.0,
+ input_scale=1.0,
+ middle_grey=0.18,
+ min_exposure=-6.0,
+ max_exposure=6.5):
+ """
+ Creates the *Generic Log* colorspace.
+
+ Parameters
+ ----------
+ parameter : type
+ Parameter description.
+
+ Returns
+ -------
+ Colorspace
+ *Generic Log* colorspace.
+ """
+
+ cs = ColorSpace(name)
+ cs.description = 'The %s color space' % name
+ cs.aliases = aliases
+ cs.equality_group = name
+ cs.family = 'Utility'
+ cs.is_data = False
+
+ ctls = [os.path.join(
+ aces_ctl_directory,
+ 'utilities',
+ 'ACESlib.OCIO_shaper_log2_to_lin_param.a1.0.0.ctl')]
+ lut = '%s_to_aces.spi1d' % name
+
+ lut = sanitize(lut)
+
+ generate_1d_LUT_from_CTL(
+ os.path.join(lut_directory, lut),
+ ctls,
+ lut_resolution_1d,
+ 'float',
+ input_scale,
+ 1.0,
+ {'middleGrey': middle_grey,
+ 'minExposure': min_exposure,
+ 'maxExposure': max_exposure},
+ cleanup,
+ aces_ctl_directory,
+ min_value,
+ max_value)
+
+ cs.to_reference_transforms = []
+ cs.to_reference_transforms.append({
+ 'type': 'lutFile',
+ 'path': lut,
+ 'interpolation': 'linear',
+ 'direction': 'forward'})
+
+ cs.from_reference_transforms = []
+ return cs
+
+
+def create_LMTs(aces_ctl_directory,
+ lut_directory,
+ lut_resolution_1d,
+ lut_resolution_3d,
+ lmt_info,
+ shaper_name,
+ cleanup):
+ """
+ Object description.
+
+ Parameters
+ ----------
+ parameter : type
+ Parameter description.
+
+ Returns
+ -------
+ type
+ Return value description.
+ """
+
+ colorspaces = []
+
+ # -------------------------------------------------------------------------
+ # *LMT Shaper*
+ # -------------------------------------------------------------------------
+ lmt_lut_resolution_1d = max(4096, lut_resolution_1d)
+ lmt_lut_resolution_3d = max(65, lut_resolution_3d)
+
+ # Defining the *Log 2* shaper.
+ lmt_shaper_name = 'LMT Shaper'
+ lmt_shaper_name_aliases = ['crv_lmtshaper']
+ lmt_params = {
+ 'middleGrey': 0.18,
+ 'minExposure': -10.0,
+ 'maxExposure': 6.5}
+
+ lmt_shaper = create_generic_log(aces_ctl_directory,
+ lut_directory,
+ lmt_lut_resolution_1d,
+ cleanup,
+ name=lmt_shaper_name,
+ middle_grey=lmt_params['middleGrey'],
+ min_exposure=lmt_params['minExposure'],
+ max_exposure=lmt_params['maxExposure'],
+ aliases=lmt_shaper_name_aliases)
+ colorspaces.append(lmt_shaper)
+
+ shaper_input_scale_generic_log2 = 1.0
+
+ # *Log 2* shaper name and *CTL* transforms bundled up.
+ lmt_shaper_data = [
+ lmt_shaper_name,
+ os.path.join('%s',
+ 'utilities',
+ 'ACESlib.OCIO_shaper_log2_to_lin_param.a1.0.0.ctl'),
+ os.path.join('%s',
+ 'utilities',
+ 'ACESlib.OCIO_shaper_lin_to_log2_param.a1.0.0.ctl'),
+ shaper_input_scale_generic_log2,
+ lmt_params]
+
+ sorted_LMTs = sorted(lmt_info.iteritems(), key=lambda x: x[1])
+ print(sorted_LMTs)
+ for lmt in sorted_LMTs:
+ lmt_name, lmt_values = lmt
+ lmt_aliases = ["look_%s" % compact(lmt_values['transformUserName'])]
+ cs = create_ACES_LMT(
+ lmt_values['transformUserName'],
+ lmt_values,
+ lmt_shaper_data,
+ aces_ctl_directory,
+ lut_directory,
+ lmt_lut_resolution_1d,
+ lmt_lut_resolution_3d,
+ cleanup,
+ lmt_aliases)
+ colorspaces.append(cs)
+
+ return colorspaces
+
+
+def create_ODTs(aces_ctl_directory,