585 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			585 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | import bpy, os | ||
|  | from bpy.props import * | ||
|  | from .. utility import utility | ||
|  | 
 | ||
|  | def transfer_load(): | ||
|  |     load_folder = bpy.context.scene.TLM_SceneProperties.tlm_load_folder | ||
|  |     lightmap_folder = os.path.join(os.path.dirname(bpy.data.filepath), bpy.context.scene.TLM_EngineProperties.tlm_lightmap_savedir) | ||
|  |     print(load_folder) | ||
|  |     print(lightmap_folder) | ||
|  |     #transfer_assets(True, load_folder, lightmap_folder) | ||
|  | 
 | ||
|  | class TLM_SceneProperties(bpy.types.PropertyGroup): | ||
|  | 
 | ||
|  |     engines = [('Cycles', 'Cycles', 'Use Cycles for lightmapping')] | ||
|  | 
 | ||
|  |     #engines.append(('LuxCoreRender', 'LuxCoreRender', 'Use LuxCoreRender for lightmapping')) | ||
|  |     #engines.append(('OctaneRender', 'Octane Render', 'Use Octane Render for lightmapping')) | ||
|  | 
 | ||
|  |     tlm_atlas_pointer : StringProperty( | ||
|  |             name = "Atlas Group", | ||
|  |             description = "Atlas Lightmap Group", | ||
|  |             default = "") | ||
|  | 
 | ||
|  |     tlm_postatlas_pointer : StringProperty( | ||
|  |             name = "Atlas Group", | ||
|  |             description = "Atlas Lightmap Group", | ||
|  |             default = "") | ||
|  | 
 | ||
|  |     tlm_lightmap_engine : EnumProperty( | ||
|  |         items = engines, | ||
|  |                 name = "Lightmap Engine",  | ||
|  |                 description="Select which lightmap engine to use.",  | ||
|  |                 default='Cycles') | ||
|  | 
 | ||
|  |     #SETTINGS GROUP | ||
|  |     tlm_setting_clean_option : EnumProperty( | ||
|  |         items = [('Clean', 'Full Clean', 'Clean lightmap directory and revert all materials'), | ||
|  |                 ('CleanMarked', 'Clean marked', 'Clean only the objects marked for lightmapping')], | ||
|  |                 name = "Clean mode",  | ||
|  |                 description="The cleaning mode, either full or partial clean. Be careful that you don't delete lightmaps you don't intend to delete.",  | ||
|  |                 default='Clean') | ||
|  | 
 | ||
|  |     tlm_setting_keep_cache_files : BoolProperty( | ||
|  |         name="Keep cache files",  | ||
|  |         description="Keep cache files (non-filtered and non-denoised)",  | ||
|  |         default=True) | ||
|  | 
 | ||
|  |     tlm_keep_baked_files : BoolProperty( | ||
|  |         name="Keep bake files",  | ||
|  |         description="Keep the baked lightmap files when cleaning",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_repartition_on_clean : BoolProperty( | ||
|  |         name="Repartition on clean",  | ||
|  |         description="Repartition material names on clean",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_setting_renderer : EnumProperty( | ||
|  |         items = [('CPU', 'CPU', 'Bake using the processor'), | ||
|  |                 ('GPU', 'GPU', 'Bake using the graphics card')], | ||
|  |                 name = "Device",  | ||
|  |                 description="Select whether to use the CPU or the GPU",  | ||
|  |                 default="CPU") | ||
|  | 
 | ||
|  |     tlm_setting_scale : EnumProperty( | ||
|  |         items = [('8', '1/8', '1/8th of set scale'), | ||
|  |                 ('4', '1/4', '1/4th of set scale'), | ||
|  |                 ('2', '1/2', 'Half of set scale'), | ||
|  |                 ('1', '1/1', 'Full scale')], | ||
|  |                 name = "Lightmap Resolution scale",  | ||
|  |                 description="Lightmap resolution scaling. Adjust for previewing.",  | ||
|  |                 default="1") | ||
|  | 
 | ||
|  |     tlm_setting_supersample : EnumProperty( | ||
|  |         items = [('2x', '2x', 'Double the sampling resolution'), | ||
|  |                 ('4x', '4x', 'Quadruple the sampling resolution')], | ||
|  |                 name = "Lightmap Supersampling",  | ||
|  |                 description="Supersamples the baked lightmap. Increases bake time",  | ||
|  |                 default="2x") | ||
|  | 
 | ||
|  |     tlm_setting_savedir : StringProperty( | ||
|  |         name="Lightmap Directory",  | ||
|  |         description="Your baked lightmaps will be stored here.",  | ||
|  |         default="Lightmaps",  | ||
|  |         subtype="FILE_PATH") | ||
|  | 
 | ||
|  |     tlm_setting_exposure_multiplier : FloatProperty( | ||
|  |         name="Exposure Multiplier",  | ||
|  |         default=0, | ||
|  |         description="0 to disable. Multiplies GI value") | ||
|  | 
 | ||
|  |     tlm_alert_on_finish : BoolProperty( | ||
|  |         name="Alert on finish",  | ||
|  |         description="Play a sound when the lightmaps are done.",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_setting_apply_scale : BoolProperty( | ||
|  |         name="Apply scale",  | ||
|  |         description="Apply the scale before unwrapping.",  | ||
|  |         default=True) | ||
|  | 
 | ||
|  |     tlm_play_sound : BoolProperty( | ||
|  |         name="Play sound on finish",  | ||
|  |         description="Play sound on finish",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_compile_statistics : BoolProperty( | ||
|  |         name="Compile statistics",  | ||
|  |         description="Compile time statistics in the lightmap folder.",  | ||
|  |         default=True) | ||
|  | 
 | ||
|  |     tlm_apply_on_unwrap : BoolProperty( | ||
|  |         name="Apply scale",  | ||
|  |         description="TODO",  | ||
|  |         default=False) | ||
|  |          | ||
|  |     tlm_save_preprocess_lightmaps : BoolProperty( | ||
|  |         name="Save preprocessed lightmaps",  | ||
|  |         description="TODO",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     #DENOISE SETTINGS GROUP | ||
|  |     tlm_denoise_use : BoolProperty( | ||
|  |         name="Enable denoising",  | ||
|  |         description="Enable denoising for lightmaps",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_denoise_engine : EnumProperty( | ||
|  |         items = [('Integrated', 'Integrated', 'Use the Blender native denoiser (Compositor; Slow)'), | ||
|  |                 ('OIDN', 'Intel Denoiser', 'Use Intel denoiser (CPU powered)'), | ||
|  |                 ('Optix', 'Optix Denoiser', 'Use Nvidia Optix denoiser (GPU powered)')], | ||
|  |                 name = "Denoiser",  | ||
|  |                 description="Select which denoising engine to use.",  | ||
|  |                 default='Integrated') | ||
|  | 
 | ||
|  |     #FILTERING SETTINGS GROUP | ||
|  |     tlm_filtering_use : BoolProperty( | ||
|  |         name="Enable denoising",  | ||
|  |         description="Enable denoising for lightmaps",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_filtering_engine : EnumProperty( | ||
|  |         items = [('OpenCV', 'OpenCV', 'Make use of OpenCV based image filtering (Requires it to be installed first in the preferences panel)'), | ||
|  |                 ('Shader', 'Shader', 'Make use of GPU offscreen shader to filter')], | ||
|  |                 name = "Filtering library",  | ||
|  |                 description="Select which filtering library to use.",  | ||
|  |                 default='OpenCV') | ||
|  | 
 | ||
|  |     #Numpy Filtering options | ||
|  |     tlm_numpy_filtering_mode : EnumProperty( | ||
|  |         items = [('Blur', 'Blur', 'Basic blur filtering.')], | ||
|  |                 name = "Filter",  | ||
|  |                 description="TODO",  | ||
|  |                 default='Blur') | ||
|  | 
 | ||
|  |     #OpenCV Filtering options | ||
|  |     tlm_filtering_mode : EnumProperty( | ||
|  |         items = [('Box', 'Box', 'Basic box blur'), | ||
|  |                     ('Gaussian', 'Gaussian', 'Gaussian blurring'), | ||
|  |                     ('Bilateral', 'Bilateral', 'Edge-aware filtering'), | ||
|  |                     ('Median', 'Median', 'Median blur')], | ||
|  |                 name = "Filter",  | ||
|  |                 description="TODO",  | ||
|  |                 default='Median') | ||
|  | 
 | ||
|  |     tlm_filtering_gaussian_strength : IntProperty( | ||
|  |         name="Gaussian Strength",  | ||
|  |         default=3,  | ||
|  |         min=1,  | ||
|  |         max=50) | ||
|  | 
 | ||
|  |     tlm_filtering_iterations : IntProperty( | ||
|  |         name="Filter Iterations",  | ||
|  |         default=5,  | ||
|  |         min=1,  | ||
|  |         max=50) | ||
|  | 
 | ||
|  |     tlm_filtering_box_strength : IntProperty( | ||
|  |         name="Box Strength",  | ||
|  |         default=1,  | ||
|  |         min=1,  | ||
|  |         max=50) | ||
|  | 
 | ||
|  |     tlm_filtering_bilateral_diameter : IntProperty( | ||
|  |         name="Pixel diameter",  | ||
|  |         default=3,  | ||
|  |         min=1,  | ||
|  |         max=50) | ||
|  | 
 | ||
|  |     tlm_filtering_bilateral_color_deviation : IntProperty( | ||
|  |         name="Color deviation",  | ||
|  |         default=75,  | ||
|  |         min=1,  | ||
|  |         max=100) | ||
|  | 
 | ||
|  |     tlm_filtering_bilateral_coordinate_deviation : IntProperty( | ||
|  |         name="Coordinate deviation",  | ||
|  |         default=75,  | ||
|  |         min=1,  | ||
|  |         max=100) | ||
|  | 
 | ||
|  |     tlm_filtering_median_kernel : IntProperty( | ||
|  |         name="Median kernel",  | ||
|  |         default=3,  | ||
|  |         min=1,  | ||
|  |         max=5) | ||
|  | 
 | ||
|  |     tlm_clamp_hdr : BoolProperty( | ||
|  |         name="Enable HDR Clamp",  | ||
|  |         description="Clamp HDR Value",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_clamp_hdr_value : IntProperty( | ||
|  |         name="HDR Clamp value",  | ||
|  |         default=10,  | ||
|  |         min=0,  | ||
|  |         max=20) | ||
|  | 
 | ||
|  |     #Encoding properties | ||
|  |     tlm_encoding_use : BoolProperty( | ||
|  |         name="Enable encoding",  | ||
|  |         description="Enable encoding for lightmaps",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_encoding_device : EnumProperty( | ||
|  |         items = [('CPU', 'CPU', 'Todo'), | ||
|  |                 ('GPU', 'GPU', 'Todo.')], | ||
|  |                 name = "Encoding Device",  | ||
|  |                 description="TODO",  | ||
|  |                 default='CPU') | ||
|  | 
 | ||
|  |     encoding_modes_1 = [('RGBM', 'RGBM', '8-bit HDR encoding. Good for compatibility, good for memory but has banding issues.'), | ||
|  |                     ('RGBD', 'RGBD', '8-bit HDR encoding. Similar to RGBM.'), | ||
|  |                     ('HDR', 'HDR', '32-bit HDR encoding. Best quality, but high memory usage and not compatible with all devices.'), | ||
|  |                     ('SDR', 'SDR', '8-bit flat encoding.')] | ||
|  | 
 | ||
|  |     encoding_modes_2 = [('RGBD', 'RGBD', '8-bit HDR encoding. Similar to RGBM.'), | ||
|  |                     ('LogLuv', 'LogLuv', '8-bit HDR encoding. Different.'), | ||
|  |                     ('HDR', 'HDR', '32-bit HDR encoding. Best quality, but high memory usage and not compatible with all devices.'), | ||
|  |                     ('SDR', 'SDR', '8-bit flat encoding.')] | ||
|  |      | ||
|  |     tlm_encoding_mode_a : EnumProperty( | ||
|  |         items = encoding_modes_1, | ||
|  |                 name = "Encoding Mode",  | ||
|  |                 description="TODO",  | ||
|  |                 default='HDR') | ||
|  | 
 | ||
|  |     tlm_encoding_mode_b : EnumProperty( | ||
|  |         items = encoding_modes_2, | ||
|  |                 name = "Encoding Mode",  | ||
|  |                 description="RGBE 32-bit Radiance HDR File",  | ||
|  |                 default='HDR') | ||
|  | 
 | ||
|  |     tlm_encoding_range : IntProperty( | ||
|  |         name="Encoding range",  | ||
|  |         description="Higher gives a larger HDR range, but also gives more banding.",  | ||
|  |         default=6,  | ||
|  |         min=1,  | ||
|  |         max=255) | ||
|  | 
 | ||
|  |     tlm_decoder_setup : BoolProperty( | ||
|  |         name="Use decoder",  | ||
|  |         description="Apply a node for decoding.",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_split_premultiplied : BoolProperty( | ||
|  |         name="Split for premultiplied",  | ||
|  |         description="Some game engines doesn't support non-premultiplied files. This splits the alpha channel to a separate file.",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_encoding_colorspace : EnumProperty( | ||
|  |         items = [('XYZ', 'XYZ', 'TODO'), | ||
|  |                 ('sRGB', 'sRGB', 'TODO'), | ||
|  |                 ('NonColor', 'Non-Color', 'TODO'), | ||
|  |                 ('ACES', 'Linear ACES', 'TODO'), | ||
|  |                 ('Linear', 'Linear', 'TODO'), | ||
|  |                 ('FilmicLog', 'Filmic Log', 'TODO')], | ||
|  |             name = "Color Space",  | ||
|  |             description="TODO",  | ||
|  |             default='Linear') | ||
|  | 
 | ||
|  |     tlm_compression : IntProperty( | ||
|  |         name="PNG Compression",  | ||
|  |         description="0 = No compression. 100 = Maximum compression.",  | ||
|  |         default=0,  | ||
|  |         min=0,  | ||
|  |         max=100) | ||
|  |      | ||
|  |     tlm_format : EnumProperty( | ||
|  |         items = [('RGBE', 'HDR', '32-bit RGBE encoded .hdr files. No compression available.'), | ||
|  |                  ('EXR', 'EXR', '32-bit OpenEXR format.')], | ||
|  |                 name = "Format",  | ||
|  |                 description="Select default 32-bit format",  | ||
|  |                 default='RGBE') | ||
|  | 
 | ||
|  |     tlm_override_object_settings : BoolProperty( | ||
|  |         name="Override settings",  | ||
|  |         description="TODO",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_mesh_lightmap_resolution : EnumProperty( | ||
|  |         items = [('32', '32', 'TODO'), | ||
|  |                  ('64', '64', 'TODO'), | ||
|  |                  ('128', '128', 'TODO'), | ||
|  |                  ('256', '256', 'TODO'), | ||
|  |                  ('512', '512', 'TODO'), | ||
|  |                  ('1024', '1024', 'TODO'), | ||
|  |                  ('2048', '2048', 'TODO'), | ||
|  |                  ('4096', '4096', 'TODO'), | ||
|  |                  ('8192', '8192', 'TODO')], | ||
|  |                 name = "Lightmap Resolution",  | ||
|  |                 description="TODO",  | ||
|  |                 default='256') | ||
|  | 
 | ||
|  |     tlm_mesh_lightmap_unwrap_mode : EnumProperty( | ||
|  |         items = [('Lightmap', 'Lightmap', 'TODO'), | ||
|  |                  ('SmartProject', 'Smart Project', 'TODO'), | ||
|  |                  ('AtlasGroupA', 'Atlas Group (Prepack)', 'Attaches the object to a prepack Atlas group. Will overwrite UV map on build.'), | ||
|  |                  ('Xatlas', 'Xatlas', 'TODO')], | ||
|  |                 name = "Unwrap Mode",  | ||
|  |                 description="TODO",  | ||
|  |                 default='SmartProject') | ||
|  | 
 | ||
|  |     tlm_postpack_object : BoolProperty( #CHECK INSTEAD OF ATLASGROUPB | ||
|  |         name="Postpack object",  | ||
|  |         description="Postpack object into an AtlasGroup",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_mesh_unwrap_margin : FloatProperty( | ||
|  |         name="Unwrap Margin",  | ||
|  |         default=0.1,  | ||
|  |         min=0.0,  | ||
|  |         max=1.0,  | ||
|  |         subtype='FACTOR') | ||
|  | 
 | ||
|  |     tlm_headless : BoolProperty( | ||
|  |         name="Don't apply materials",  | ||
|  |         description="Headless; Do not apply baked materials on finish.",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_atlas_mode : EnumProperty( | ||
|  |         items = [('Prepack', 'Pre-packing', 'Todo.'), | ||
|  |                  ('Postpack', 'Post-packing', 'Todo.')], | ||
|  |                 name = "Atlas mode",  | ||
|  |                 description="TODO",  | ||
|  |                 default='Prepack') | ||
|  | 
 | ||
|  |     tlm_alert_sound : EnumProperty( | ||
|  |         items = [('dash', 'Dash', 'Dash alert'), | ||
|  |                 ('noot', 'Noot', 'Noot alert'), | ||
|  |                 ('gentle', 'Gentle', 'Gentle alert'), | ||
|  |                 ('pingping', 'Ping', 'Ping alert')], | ||
|  |                 name = "Alert sound",  | ||
|  |                 description="Alert sound when lightmap building finished.",  | ||
|  |                 default="gentle") | ||
|  | 
 | ||
|  |     tlm_metallic_clamp : EnumProperty( | ||
|  |         items = [('ignore', 'Ignore', 'Ignore clamping'), | ||
|  |                 ('skip', 'Skip', 'Skip baking metallic materials'), | ||
|  |                 ('zero', 'Zero', 'Set zero'), | ||
|  |                 ('limit', 'Limit', 'Clamp to 0.9')], | ||
|  |                 name = "Metallic clamping",  | ||
|  |                 description="TODO.",  | ||
|  |                 default="ignore") | ||
|  | 
 | ||
|  |     tlm_texture_interpolation : EnumProperty( | ||
|  |         items = [('Smart', 'Smart', 'Bicubic when magnifying.'), | ||
|  |                 ('Cubic', 'Cubic', 'Cubic interpolation'), | ||
|  |                 ('Closest', 'Closest', 'No interpolation'), | ||
|  |                 ('Linear', 'Linear', 'Linear')], | ||
|  |                 name = "Texture interpolation",  | ||
|  |                 description="Texture interpolation.",  | ||
|  |                 default="Linear") | ||
|  | 
 | ||
|  |     tlm_texture_extrapolation : EnumProperty( | ||
|  |         items = [('REPEAT', 'Repeat', 'Repeat in both direction.'), | ||
|  |                 ('EXTEND', 'Extend', 'Extend by repeating edge pixels.'), | ||
|  |                 ('CLIP', 'Clip', 'Clip to image size')], | ||
|  |                 name = "Texture extrapolation",  | ||
|  |                 description="Texture extrapolation.",  | ||
|  |                 default="EXTEND") | ||
|  | 
 | ||
|  |     tlm_verbose : BoolProperty( | ||
|  |         name="Verbose",  | ||
|  |         description="Verbose console output",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_compile_statistics : BoolProperty( | ||
|  |         name="Compile statistics",  | ||
|  |         description="Compile lightbuild statistics",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_override_bg_color : BoolProperty( | ||
|  |         name="Override background",  | ||
|  |         description="Override background color, black by default.",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_override_color : FloatVectorProperty(name="Color", | ||
|  |         description="Background color for baked maps",  | ||
|  |         subtype='COLOR',  | ||
|  |         default=[0.5,0.5,0.5]) | ||
|  | 
 | ||
|  |     tlm_reset_uv : BoolProperty( | ||
|  |         name="Remove Lightmap UV",  | ||
|  |         description="Remove existing UV maps for lightmaps.",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_apply_modifiers : BoolProperty( | ||
|  |         name="Apply modifiers",  | ||
|  |         description="Apply all modifiers to objects.",  | ||
|  |         default=True) | ||
|  | 
 | ||
|  |     tlm_batch_mode : BoolProperty( | ||
|  |         name="Batch mode",  | ||
|  |         description="Batch collections.",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_network_render : BoolProperty( | ||
|  |         name="Enable network rendering",  | ||
|  |         description="Enable network rendering (Unstable).",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_network_paths : PointerProperty( | ||
|  |         name="Network file",  | ||
|  |         description="Network instruction file",  | ||
|  |         type=bpy.types.Text) | ||
|  | 
 | ||
|  |     tlm_network_dir : StringProperty( | ||
|  |         name="Network directory",  | ||
|  |         description="Use a path that is accessible to all your network render devices.",  | ||
|  |         default="",  | ||
|  |         subtype="FILE_PATH") | ||
|  | 
 | ||
|  |     tlm_cmft_path : StringProperty( | ||
|  |         name="CMFT Path",  | ||
|  |         description="The path to the CMFT binaries",  | ||
|  |         default="",  | ||
|  |         subtype="FILE_PATH") | ||
|  |      | ||
|  |     tlm_create_spherical : BoolProperty( | ||
|  |         name="Create spherical texture",  | ||
|  |         description="Merge cubemap to a 360 spherical texture.",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_write_sh : BoolProperty( | ||
|  |         name="Calculate SH coefficients",  | ||
|  |         description="Calculates spherical harmonics coefficients to a file.",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_write_radiance : BoolProperty( | ||
|  |         name="Write radiance images",  | ||
|  |         description="Writes out the radiance images.",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_invert_direction : BoolProperty( | ||
|  |         name="Invert direction",  | ||
|  |         description="Inverts the direction.",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_environment_probe_resolution : EnumProperty( | ||
|  |         items = [('32', '32', 'TODO'), | ||
|  |                  ('64', '64', 'TODO'), | ||
|  |                  ('128', '128', 'TODO'), | ||
|  |                  ('256', '256', 'TODO'), | ||
|  |                  ('512', '512', 'TODO'), | ||
|  |                  ('1024', '1024', 'TODO'), | ||
|  |                  ('2048', '2048', 'TODO'), | ||
|  |                  ('4096', '4096', 'TODO'), | ||
|  |                  ('8192', '8192', 'TODO')], | ||
|  |                 name = "Probe Resolution",  | ||
|  |                 description="TODO",  | ||
|  |                 default='256') | ||
|  | 
 | ||
|  |     tlm_environment_probe_engine : EnumProperty( | ||
|  |         items = [('BLENDER_EEVEE', 'Eevee', 'TODO'), | ||
|  |                  ('CYCLES', 'Cycles', 'TODO')], | ||
|  |                 name = "Probe Render Engine",  | ||
|  |                 description="TODO",  | ||
|  |                 default='BLENDER_EEVEE') | ||
|  | 
 | ||
|  |     tlm_load_folder : StringProperty( | ||
|  |         name="Load Folder", | ||
|  |         description="Load existing lightmaps from folder", | ||
|  |         subtype="DIR_PATH") | ||
|  | 
 | ||
|  |     tlm_load_atlas : BoolProperty( | ||
|  |         name="Load lightmaps based on atlas sets",  | ||
|  |         description="Use the current Atlas list.",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_utility_set : EnumProperty( | ||
|  |         items = [('Scene', 'Scene', 'Set for all objects in the scene.'), | ||
|  |                  ('Selection', 'Selection', 'Set for selected objects.'), | ||
|  |                  ('Enabled', 'Enabled', 'Set for objects that has been enabled for lightmapping.')], | ||
|  |                 name = "Set",  | ||
|  |                 description="Utility selection set",  | ||
|  |                 default='Scene') | ||
|  | 
 | ||
|  |     tlm_resolution_weight : EnumProperty( | ||
|  |         items = [('Single', 'Single', 'Set a single resolution for all objects.'), | ||
|  |                  ('Dimension', 'Dimension', 'Distribute resolutions based on object dimensions.'), | ||
|  |                  ('Surface', 'Surface', 'Distribute resolutions based on mesh surface area.'), | ||
|  |                  ('Volume', 'Volume', 'Distribute resolutions based on mesh volume.')], | ||
|  |                 name = "Resolution weight",  | ||
|  |                 description="Method for setting resolution value",  | ||
|  |                 default='Single') | ||
|  |         #Todo add vertex color option | ||
|  | 
 | ||
|  |     tlm_resolution_min : EnumProperty( | ||
|  |         items = [('32', '32', 'TODO'), | ||
|  |                  ('64', '64', 'TODO'), | ||
|  |                  ('128', '128', 'TODO'), | ||
|  |                  ('256', '256', 'TODO'), | ||
|  |                  ('512', '512', 'TODO'), | ||
|  |                  ('1024', '1024', 'TODO'), | ||
|  |                  ('2048', '2048', 'TODO'), | ||
|  |                  ('4096', '4096', 'TODO')], | ||
|  |                 name = "Minimum resolution",  | ||
|  |                 description="Minimum distributed resolution",  | ||
|  |                 default='32') | ||
|  | 
 | ||
|  |     tlm_resolution_max : EnumProperty( | ||
|  |         items = [('64', '64', 'TODO'), | ||
|  |                  ('128', '128', 'TODO'), | ||
|  |                  ('256', '256', 'TODO'), | ||
|  |                  ('512', '512', 'TODO'), | ||
|  |                  ('1024', '1024', 'TODO'), | ||
|  |                  ('2048', '2048', 'TODO'), | ||
|  |                  ('4096', '4096', 'TODO')], | ||
|  |                 name = "Maximum resolution",  | ||
|  |                 description="Maximum distributed resolution",  | ||
|  |                 default='256') | ||
|  | 
 | ||
|  |     tlm_remove_met_spec_link : BoolProperty( | ||
|  |         name="Remove image link",  | ||
|  |         description="Removes the connected node on metallic or specularity set disable",  | ||
|  |         default=False) | ||
|  | 
 | ||
|  |     tlm_utility_context : EnumProperty( | ||
|  |         items = [('SetBatching', 'Set Batching', 'Set batching options. Allows to set lightmap options for multiple objects.'), | ||
|  |                  ('EnvironmentProbes', 'Environment Probes', 'Options for rendering environment probes. Cubemaps and panoramic HDRs for external engines'), | ||
|  |                  ('LoadLightmaps', 'Load Lightmaps', 'Options for loading pre-built lightmaps.'), | ||
|  |                  ('NetworkRender', 'Network Rendering', 'Distribute lightmap building across multiple machines.'), | ||
|  |                  ('MaterialAdjustment', 'Material Adjustment', 'Allows adjustment of multiple materials at once.'), | ||
|  |                  ('TexelDensity', 'Texel Density', 'Allows setting texel densities of the UV.'), | ||
|  |                  ('GLTFUtil', 'GLTF Utilities', 'GLTF related material utilities.')], | ||
|  |                 name = "Utility Context",  | ||
|  |                 description="Set Utility Context",  | ||
|  |                 default='SetBatching') | ||
|  | 
 | ||
|  |     tlm_addon_uimode : EnumProperty( | ||
|  |         items = [('Simple', 'Simple', 'TODO'), | ||
|  |                  ('Advanced', 'Advanced', 'TODO')], | ||
|  |                 name = "UI Mode",  | ||
|  |                 description="TODO",  | ||
|  |                 default='Simple') | ||
|  | 
 | ||
|  | class TLM_GroupListItem(bpy.types.PropertyGroup): | ||
|  |     obj: PointerProperty(type=bpy.types.Object, description="The object to bake") | ||
|  | 
 | ||
|  | class TLM_UL_GroupList(bpy.types.UIList): | ||
|  |     def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index): | ||
|  |         custom_icon = 'OBJECT_DATAMODE' | ||
|  | 
 | ||
|  |         if self.layout_type in {'DEFAULT', 'COMPACT'}: | ||
|  | 
 | ||
|  |             amount = 0 | ||
|  | 
 | ||
|  |             for obj in bpy.context.scene.objects: | ||
|  |                 if obj.TLM_ObjectProperties.tlm_mesh_lightmap_use: | ||
|  |                     if obj.TLM_ObjectProperties.tlm_mesh_lightmap_unwrap_mode == "AtlasGroupA": | ||
|  |                         if obj.TLM_ObjectProperties.tlm_atlas_pointer == item.name: | ||
|  |                             amount = amount + 1 | ||
|  | 
 | ||
|  |             row = layout.row() | ||
|  |             row.prop(item, "name", text="", emboss=False, icon=custom_icon) | ||
|  |             col = row.column() | ||
|  |             col.label(text=item.tlm_atlas_lightmap_resolution) | ||
|  |             col = row.column() | ||
|  |             col.alignment = 'RIGHT' | ||
|  |             col.label(text=str(amount)) | ||
|  | 
 | ||
|  |         elif self.layout_type in {'GRID'}: | ||
|  |             layout.alignment = 'CENTER' | ||
|  |             layout.label(text="", icon = custom_icon) |