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) |