forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			757 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			757 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								import bpy, importlib, math
							 | 
						||
| 
								 | 
							
								from bpy.props import *
							 | 
						||
| 
								 | 
							
								from bpy.types import Menu, Panel
							 | 
						||
| 
								 | 
							
								from .. utility import icon
							 | 
						||
| 
								 | 
							
								from .. properties.denoiser import oidn, optix
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TLM_PT_Panel(bpy.types.Panel):
							 | 
						||
| 
								 | 
							
								    bl_label = "The Lightmapper"
							 | 
						||
| 
								 | 
							
								    bl_space_type = "PROPERTIES"
							 | 
						||
| 
								 | 
							
								    bl_region_type = "WINDOW"
							 | 
						||
| 
								 | 
							
								    bl_context = "render"
							 | 
						||
| 
								 | 
							
								    bl_options = {'DEFAULT_CLOSED'}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def draw(self, context):
							 | 
						||
| 
								 | 
							
								        layout = self.layout
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        layout.use_property_split = True
							 | 
						||
| 
								 | 
							
								        layout.use_property_decorate = False
							 | 
						||
| 
								 | 
							
								        sceneProperties = scene.TLM_SceneProperties
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TLM_PT_Groups(bpy.types.Panel):
							 | 
						||
| 
								 | 
							
								    bl_label = "Lightmap Groups"
							 | 
						||
| 
								 | 
							
								    bl_space_type = "PROPERTIES"
							 | 
						||
| 
								 | 
							
								    bl_region_type = "WINDOW"
							 | 
						||
| 
								 | 
							
								    bl_context = "render"
							 | 
						||
| 
								 | 
							
								    bl_options = {'DEFAULT_CLOSED'}
							 | 
						||
| 
								 | 
							
								    bl_parent_id = "TLM_PT_Panel"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def draw(self, context):
							 | 
						||
| 
								 | 
							
								        layout = self.layout
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        layout.use_property_split = True
							 | 
						||
| 
								 | 
							
								        layout.use_property_decorate = False
							 | 
						||
| 
								 | 
							
								        sceneProperties = scene.TLM_SceneProperties
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if sceneProperties.tlm_lightmap_engine == "Cycles":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            rows = 2
							 | 
						||
| 
								 | 
							
								            #if len(atlasList) > 1:
							 | 
						||
| 
								 | 
							
								            #    rows = 4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.label(text="Lightmap Group List")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.template_list("TLM_UL_GroupList", "Lightmap Groups", scene, "TLM_GroupList", scene, "TLM_GroupListItem", rows=rows)
							 | 
						||
| 
								 | 
							
								            col = row.column(align=True)
							 | 
						||
| 
								 | 
							
								            col.operator("tlm_atlaslist.new_item", icon='ADD', text="")
							 | 
						||
| 
								 | 
							
								            #col.operator("tlm_atlaslist.delete_item", icon='REMOVE', text="")
							 | 
						||
| 
								 | 
							
								            #col.menu("TLM_MT_AtlasListSpecials", icon='DOWNARROW_HLT', text="")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TLM_PT_Settings(bpy.types.Panel):
							 | 
						||
| 
								 | 
							
								    bl_label = "Settings"
							 | 
						||
| 
								 | 
							
								    bl_space_type = "PROPERTIES"
							 | 
						||
| 
								 | 
							
								    bl_region_type = "WINDOW"
							 | 
						||
| 
								 | 
							
								    bl_context = "render"
							 | 
						||
| 
								 | 
							
								    bl_options = {'DEFAULT_CLOSED'}
							 | 
						||
| 
								 | 
							
								    bl_parent_id = "LNX_PT_BakePanel"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @classmethod 
							 | 
						||
| 
								 | 
							
								    def poll(self, context):
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        return scene.lnx_bakemode == "Lightmap"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def draw(self, context):
							 | 
						||
| 
								 | 
							
								        layout = self.layout
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        layout.use_property_split = True
							 | 
						||
| 
								 | 
							
								        layout.use_property_decorate = False
							 | 
						||
| 
								 | 
							
								        sceneProperties = scene.TLM_SceneProperties
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        #We list LuxCoreRender as available, by default we assume Cycles exists
							 | 
						||
| 
								 | 
							
								        row.prop(sceneProperties, "tlm_lightmap_engine")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if sceneProperties.tlm_lightmap_engine == "Cycles":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            #CYCLES SETTINGS HERE
							 | 
						||
| 
								 | 
							
								            engineProperties = scene.TLM_EngineProperties
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.label(text="General Settings")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.build_lightmaps")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.clean_lightmaps")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.explore_lightmaps")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_apply_on_unwrap")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_headless")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_alert_on_finish")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if sceneProperties.tlm_alert_on_finish:
							 | 
						||
| 
								 | 
							
								                row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                row.prop(sceneProperties, "tlm_alert_sound")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_verbose")
							 | 
						||
| 
								 | 
							
								            #row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            #row.prop(sceneProperties, "tlm_compile_statistics")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_override_bg_color")
							 | 
						||
| 
								 | 
							
								            if sceneProperties.tlm_override_bg_color:
							 | 
						||
| 
								 | 
							
								                row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                row.prop(sceneProperties, "tlm_override_color")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_reset_uv")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_apply_modifiers")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_keep_baked_files")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_repartition_on_clean")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_save_preprocess_lightmaps")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            try:
							 | 
						||
| 
								 | 
							
								                if bpy.context.scene["TLM_Buildstat"] is not None:
							 | 
						||
| 
								 | 
							
								                    row.label(text="Last build completed in: " + str(bpy.context.scene["TLM_Buildstat"][0]))
							 | 
						||
| 
								 | 
							
								            except:
							 | 
						||
| 
								 | 
							
								                pass
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.label(text="Cycles Settings")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(engineProperties, "tlm_mode")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(engineProperties, "tlm_quality")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(engineProperties, "tlm_resolution_scale")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(engineProperties, "tlm_bake_mode")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(engineProperties, "tlm_target")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(engineProperties, "tlm_lighting_mode")
							 | 
						||
| 
								 | 
							
								            # if scene.TLM_EngineProperties.tlm_lighting_mode == "combinedao" or scene.TLM_EngineProperties.tlm_lighting_mode == "indirectao":
							 | 
						||
| 
								 | 
							
								            #     row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            #     row.prop(engineProperties, "tlm_premultiply_ao")
							 | 
						||
| 
								 | 
							
								            if scene.TLM_EngineProperties.tlm_bake_mode == "Background":
							 | 
						||
| 
								 | 
							
								                row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                row.label(text="Warning! Background mode is currently unstable", icon_value=2)
							 | 
						||
| 
								 | 
							
								                row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                row.prop(sceneProperties, "tlm_network_render")
							 | 
						||
| 
								 | 
							
								                if sceneProperties.tlm_network_render:
							 | 
						||
| 
								 | 
							
								                    row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    row.prop(sceneProperties, "tlm_network_paths")
							 | 
						||
| 
								 | 
							
								                    #row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    #row.prop(sceneProperties, "tlm_network_dir")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(engineProperties, "tlm_caching_mode")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(engineProperties, "tlm_directional_mode")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(engineProperties, "tlm_lightmap_savedir")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(engineProperties, "tlm_dilation_margin")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(engineProperties, "tlm_exposure_multiplier")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(engineProperties, "tlm_setting_supersample")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_metallic_clamp")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_texture_interpolation")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_texture_extrapolation")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        # elif sceneProperties.tlm_lightmap_engine == "LuxCoreRender":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        #     engineProperties = scene.TLM_Engine2Properties
							 | 
						||
| 
								 | 
							
								        #     row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								        #     row.prop(engineProperties, "tlm_luxcore_dir")
							 | 
						||
| 
								 | 
							
								        #     row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								        #     row.operator("tlm.build_lightmaps")
							 | 
						||
| 
								 | 
							
								        #     #LUXCORE SETTINGS HERE
							 | 
						||
| 
								 | 
							
								        #     #luxcore_available = False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        #     #Look for Luxcorerender in the renderengine classes
							 | 
						||
| 
								 | 
							
								        #     # for engine in bpy.types.RenderEngine.__subclasses__():
							 | 
						||
| 
								 | 
							
								        #     #     if engine.bl_idname == "LUXCORE":
							 | 
						||
| 
								 | 
							
								        #     #         luxcore_available = True
							 | 
						||
| 
								 | 
							
								        #     #         break
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        #     # row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								        #     # if not luxcore_available:
							 | 
						||
| 
								 | 
							
								        #     #     row.label(text="Please install BlendLuxCore.")
							 | 
						||
| 
								 | 
							
								        #     # else:
							 | 
						||
| 
								 | 
							
								        #     #     row.label(text="LuxCoreRender not yet available.")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        elif sceneProperties.tlm_lightmap_engine == "OctaneRender":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            engineProperties = scene.TLM_Engine3Properties
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            #LUXCORE SETTINGS HERE
							 | 
						||
| 
								 | 
							
								            octane_available = True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.build_lightmaps")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.clean_lightmaps")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.explore_lightmaps")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_verbose")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(engineProperties, "tlm_lightmap_savedir")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TLM_PT_Denoise(bpy.types.Panel):
							 | 
						||
| 
								 | 
							
								    bl_label = "Denoise"
							 | 
						||
| 
								 | 
							
								    bl_space_type = "PROPERTIES"
							 | 
						||
| 
								 | 
							
								    bl_region_type = "WINDOW"
							 | 
						||
| 
								 | 
							
								    bl_context = "render"
							 | 
						||
| 
								 | 
							
								    bl_options = {'DEFAULT_CLOSED'}
							 | 
						||
| 
								 | 
							
								    bl_parent_id = "LNX_PT_BakePanel"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @classmethod 
							 | 
						||
| 
								 | 
							
								    def poll(self, context):
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        return scene.lnx_bakemode == "Lightmap"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def draw_header(self, context):
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        sceneProperties = scene.TLM_SceneProperties
							 | 
						||
| 
								 | 
							
								        self.layout.prop(sceneProperties, "tlm_denoise_use", text="")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def draw(self, context):
							 | 
						||
| 
								 | 
							
								        layout = self.layout
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        layout.use_property_split = True
							 | 
						||
| 
								 | 
							
								        layout.use_property_decorate = False
							 | 
						||
| 
								 | 
							
								        sceneProperties = scene.TLM_SceneProperties
							 | 
						||
| 
								 | 
							
								        layout.active = sceneProperties.tlm_denoise_use
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        #row.prop(sceneProperties, "tlm_denoiser", expand=True)
							 | 
						||
| 
								 | 
							
								        #row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								        row.prop(sceneProperties, "tlm_denoise_engine", expand=True)
							 | 
						||
| 
								 | 
							
								        row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if sceneProperties.tlm_denoise_engine == "Integrated":
							 | 
						||
| 
								 | 
							
								            row.label(text="No options for Integrated.")
							 | 
						||
| 
								 | 
							
								        elif sceneProperties.tlm_denoise_engine == "OIDN":
							 | 
						||
| 
								 | 
							
								            denoiseProperties = scene.TLM_OIDNEngineProperties
							 | 
						||
| 
								 | 
							
								            row.prop(denoiseProperties, "tlm_oidn_path")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(denoiseProperties, "tlm_oidn_verbose")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(denoiseProperties, "tlm_oidn_threads")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(denoiseProperties, "tlm_oidn_maxmem")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(denoiseProperties, "tlm_oidn_affinity")
							 | 
						||
| 
								 | 
							
								            # row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            # row.prop(denoiseProperties, "tlm_denoise_ao")
							 | 
						||
| 
								 | 
							
								        elif sceneProperties.tlm_denoise_engine == "Optix":
							 | 
						||
| 
								 | 
							
								            denoiseProperties = scene.TLM_OptixEngineProperties
							 | 
						||
| 
								 | 
							
								            row.prop(denoiseProperties, "tlm_optix_path")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(denoiseProperties, "tlm_optix_verbose")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(denoiseProperties, "tlm_optix_maxmem")
							 | 
						||
| 
								 | 
							
								            #row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            #row.prop(denoiseProperties, "tlm_denoise_ao")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TLM_PT_Filtering(bpy.types.Panel):
							 | 
						||
| 
								 | 
							
								    bl_label = "Filtering"
							 | 
						||
| 
								 | 
							
								    bl_space_type = "PROPERTIES"
							 | 
						||
| 
								 | 
							
								    bl_region_type = "WINDOW"
							 | 
						||
| 
								 | 
							
								    bl_context = "render"
							 | 
						||
| 
								 | 
							
								    bl_options = {'DEFAULT_CLOSED'}
							 | 
						||
| 
								 | 
							
								    bl_parent_id = "LNX_PT_BakePanel"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @classmethod 
							 | 
						||
| 
								 | 
							
								    def poll(self, context):
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        return scene.lnx_bakemode == "Lightmap"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def draw_header(self, context):
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        sceneProperties = scene.TLM_SceneProperties
							 | 
						||
| 
								 | 
							
								        self.layout.prop(sceneProperties, "tlm_filtering_use", text="")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def draw(self, context):
							 | 
						||
| 
								 | 
							
								        layout = self.layout
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        layout.use_property_split = True
							 | 
						||
| 
								 | 
							
								        layout.use_property_decorate = False
							 | 
						||
| 
								 | 
							
								        sceneProperties = scene.TLM_SceneProperties
							 | 
						||
| 
								 | 
							
								        layout.active = sceneProperties.tlm_filtering_use
							 | 
						||
| 
								 | 
							
								        #row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								        #row.label(text="TODO MAKE CHECK")
							 | 
						||
| 
								 | 
							
								        #row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								        #row.prop(sceneProperties, "tlm_filtering_engine", expand=True)
							 | 
						||
| 
								 | 
							
								        row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if sceneProperties.tlm_filtering_engine == "OpenCV":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            cv2 = importlib.util.find_spec("cv2")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if cv2 is None:
							 | 
						||
| 
								 | 
							
								                row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                row.label(text="OpenCV is not installed. Install it through preferences.")
							 | 
						||
| 
								 | 
							
								            else:
							 | 
						||
| 
								 | 
							
								                row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                row.prop(scene.TLM_SceneProperties, "tlm_filtering_mode")
							 | 
						||
| 
								 | 
							
								                row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                if scene.TLM_SceneProperties.tlm_filtering_mode == "Gaussian":
							 | 
						||
| 
								 | 
							
								                    row.prop(scene.TLM_SceneProperties, "tlm_filtering_gaussian_strength")
							 | 
						||
| 
								 | 
							
								                    row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    row.prop(scene.TLM_SceneProperties, "tlm_filtering_iterations")
							 | 
						||
| 
								 | 
							
								                elif scene.TLM_SceneProperties.tlm_filtering_mode == "Box":
							 | 
						||
| 
								 | 
							
								                    row.prop(scene.TLM_SceneProperties, "tlm_filtering_box_strength")
							 | 
						||
| 
								 | 
							
								                    row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    row.prop(scene.TLM_SceneProperties, "tlm_filtering_iterations")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                elif scene.TLM_SceneProperties.tlm_filtering_mode == "Bilateral":
							 | 
						||
| 
								 | 
							
								                    row.prop(scene.TLM_SceneProperties, "tlm_filtering_bilateral_diameter")
							 | 
						||
| 
								 | 
							
								                    row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    row.prop(scene.TLM_SceneProperties, "tlm_filtering_bilateral_color_deviation")
							 | 
						||
| 
								 | 
							
								                    row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    row.prop(scene.TLM_SceneProperties, "tlm_filtering_bilateral_coordinate_deviation")
							 | 
						||
| 
								 | 
							
								                    row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    row.prop(scene.TLM_SceneProperties, "tlm_filtering_iterations")
							 | 
						||
| 
								 | 
							
								                else:
							 | 
						||
| 
								 | 
							
								                    row.prop(scene.TLM_SceneProperties, "tlm_filtering_median_kernel", expand=True)
							 | 
						||
| 
								 | 
							
								                    row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    row.prop(scene.TLM_SceneProperties, "tlm_filtering_iterations")
							 | 
						||
| 
								 | 
							
								        else:
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(scene.TLM_SceneProperties, "tlm_numpy_filtering_mode")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TLM_PT_Encoding(bpy.types.Panel):
							 | 
						||
| 
								 | 
							
								    bl_label = "Encoding"
							 | 
						||
| 
								 | 
							
								    bl_space_type = "PROPERTIES"
							 | 
						||
| 
								 | 
							
								    bl_region_type = "WINDOW"
							 | 
						||
| 
								 | 
							
								    bl_context = "render"
							 | 
						||
| 
								 | 
							
								    bl_options = {'DEFAULT_CLOSED'}
							 | 
						||
| 
								 | 
							
								    bl_parent_id = "LNX_PT_BakePanel"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @classmethod 
							 | 
						||
| 
								 | 
							
								    def poll(self, context):
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        return scene.lnx_bakemode == "Lightmap"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def draw_header(self, context):
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        sceneProperties = scene.TLM_SceneProperties
							 | 
						||
| 
								 | 
							
								        self.layout.prop(sceneProperties, "tlm_encoding_use", text="")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def draw(self, context):
							 | 
						||
| 
								 | 
							
								        layout = self.layout
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        layout.use_property_split = True
							 | 
						||
| 
								 | 
							
								        layout.use_property_decorate = False
							 | 
						||
| 
								 | 
							
								        sceneProperties = scene.TLM_SceneProperties
							 | 
						||
| 
								 | 
							
								        layout.active = sceneProperties.tlm_encoding_use
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        sceneProperties = scene.TLM_SceneProperties
							 | 
						||
| 
								 | 
							
								        row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if scene.TLM_EngineProperties.tlm_bake_mode == "Background":
							 | 
						||
| 
								 | 
							
								            row.label(text="Encoding options disabled in background mode")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        else:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_encoding_device", expand=True)
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if sceneProperties.tlm_encoding_device == "CPU":
							 | 
						||
| 
								 | 
							
								                row.prop(sceneProperties, "tlm_encoding_mode_a", expand=True)
							 | 
						||
| 
								 | 
							
								            else:
							 | 
						||
| 
								 | 
							
								                row.prop(sceneProperties, "tlm_encoding_mode_b", expand=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if sceneProperties.tlm_encoding_device == "CPU":
							 | 
						||
| 
								 | 
							
								                if sceneProperties.tlm_encoding_mode_a == "RGBM":
							 | 
						||
| 
								 | 
							
								                    row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    row.prop(sceneProperties, "tlm_encoding_range")
							 | 
						||
| 
								 | 
							
								                    row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    row.prop(sceneProperties, "tlm_decoder_setup")
							 | 
						||
| 
								 | 
							
								                if sceneProperties.tlm_encoding_mode_a == "RGBD":
							 | 
						||
| 
								 | 
							
								                    pass
							 | 
						||
| 
								 | 
							
								                if sceneProperties.tlm_encoding_mode_a == "HDR":
							 | 
						||
| 
								 | 
							
								                    row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    row.prop(sceneProperties, "tlm_format")
							 | 
						||
| 
								 | 
							
								            else:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if sceneProperties.tlm_encoding_mode_b == "RGBM":
							 | 
						||
| 
								 | 
							
								                    row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    row.prop(sceneProperties, "tlm_encoding_range")
							 | 
						||
| 
								 | 
							
								                    row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    row.prop(sceneProperties, "tlm_decoder_setup")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if sceneProperties.tlm_encoding_mode_b == "LogLuv" and sceneProperties.tlm_encoding_device == "GPU":
							 | 
						||
| 
								 | 
							
								                    row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    row.prop(sceneProperties, "tlm_decoder_setup")
							 | 
						||
| 
								 | 
							
								                    if sceneProperties.tlm_decoder_setup:
							 | 
						||
| 
								 | 
							
								                        row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                        row.prop(sceneProperties, "tlm_split_premultiplied")
							 | 
						||
| 
								 | 
							
								                if sceneProperties.tlm_encoding_mode_b == "HDR":
							 | 
						||
| 
								 | 
							
								                    row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                    row.prop(sceneProperties, "tlm_format")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TLM_PT_Utility(bpy.types.Panel):
							 | 
						||
| 
								 | 
							
								    bl_label = "Utilities"
							 | 
						||
| 
								 | 
							
								    bl_space_type = "PROPERTIES"
							 | 
						||
| 
								 | 
							
								    bl_region_type = "WINDOW"
							 | 
						||
| 
								 | 
							
								    bl_context = "render"
							 | 
						||
| 
								 | 
							
								    bl_options = {'DEFAULT_CLOSED'}
							 | 
						||
| 
								 | 
							
								    bl_parent_id = "LNX_PT_BakePanel"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @classmethod 
							 | 
						||
| 
								 | 
							
								    def poll(self, context):
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        return scene.lnx_bakemode == "Lightmap"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def draw(self, context):
							 | 
						||
| 
								 | 
							
								        layout = self.layout
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        layout.use_property_split = True
							 | 
						||
| 
								 | 
							
								        layout.use_property_decorate = False
							 | 
						||
| 
								 | 
							
								        sceneProperties = scene.TLM_SceneProperties
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								        row.label(text="Enable Lightmaps for set")
							 | 
						||
| 
								 | 
							
								        row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								        row.prop(sceneProperties, "tlm_utility_context")
							 | 
						||
| 
								 | 
							
								        row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if sceneProperties.tlm_utility_context == "SetBatching":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.enable_set")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_utility_set")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            #row.label(text="ABCD")
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_mesh_lightmap_unwrap_mode")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if sceneProperties.tlm_mesh_lightmap_unwrap_mode == "AtlasGroupA":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if scene.TLM_AtlasListItem >= 0 and len(scene.TLM_AtlasList) > 0:
							 | 
						||
| 
								 | 
							
								                    row = layout.row()
							 | 
						||
| 
								 | 
							
								                    item = scene.TLM_AtlasList[scene.TLM_AtlasListItem]
							 | 
						||
| 
								 | 
							
								                    row.prop_search(sceneProperties, "tlm_atlas_pointer", scene, "TLM_AtlasList", text='Atlas Group')
							 | 
						||
| 
								 | 
							
								                else:
							 | 
						||
| 
								 | 
							
								                    row = layout.label(text="Add Atlas Groups from the scene lightmapping settings.")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            else:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                row = layout.row()
							 | 
						||
| 
								 | 
							
								                row.prop(sceneProperties, "tlm_postpack_object")
							 | 
						||
| 
								 | 
							
								                row = layout.row()
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								                if sceneProperties.tlm_postpack_object and sceneProperties.tlm_mesh_lightmap_unwrap_mode != "AtlasGroupA":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    if scene.TLM_PostAtlasListItem >= 0 and len(scene.TLM_PostAtlasList) > 0:
							 | 
						||
| 
								 | 
							
								                        row = layout.row()
							 | 
						||
| 
								 | 
							
								                        item = scene.TLM_PostAtlasList[scene.TLM_PostAtlasListItem]
							 | 
						||
| 
								 | 
							
								                        row.prop_search(sceneProperties, "tlm_postatlas_pointer", scene, "TLM_PostAtlasList", text='Atlas Group')
							 | 
						||
| 
								 | 
							
								                        row = layout.row()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    else:
							 | 
						||
| 
								 | 
							
								                        row = layout.label(text="Add Atlas Groups from the scene lightmapping settings.")
							 | 
						||
| 
								 | 
							
								                        row = layout.row()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                row.prop(sceneProperties, "tlm_mesh_unwrap_margin")
							 | 
						||
| 
								 | 
							
								                row = layout.row()
							 | 
						||
| 
								 | 
							
								                row.prop(sceneProperties, "tlm_resolution_weight")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if sceneProperties.tlm_resolution_weight == "Single":
							 | 
						||
| 
								 | 
							
								                    row = layout.row()
							 | 
						||
| 
								 | 
							
								                    row.prop(sceneProperties, "tlm_mesh_lightmap_resolution")
							 | 
						||
| 
								 | 
							
								                else:
							 | 
						||
| 
								 | 
							
								                    row = layout.row()
							 | 
						||
| 
								 | 
							
								                    row.prop(sceneProperties, "tlm_resolution_min")
							 | 
						||
| 
								 | 
							
								                    row = layout.row()
							 | 
						||
| 
								 | 
							
								                    row.prop(sceneProperties, "tlm_resolution_max")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.disable_selection")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.select_lightmapped_objects")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.remove_uv_selection")
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        elif sceneProperties.tlm_utility_context == "EnvironmentProbes":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row.label(text="Environment Probes")
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.build_environmentprobe")
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.clean_environmentprobe")
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_environment_probe_engine")
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_cmft_path")
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_environment_probe_resolution")
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_create_spherical")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if sceneProperties.tlm_create_spherical:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                row = layout.row()
							 | 
						||
| 
								 | 
							
								                row.prop(sceneProperties, "tlm_invert_direction")
							 | 
						||
| 
								 | 
							
								                row = layout.row()
							 | 
						||
| 
								 | 
							
								                row.prop(sceneProperties, "tlm_write_sh")
							 | 
						||
| 
								 | 
							
								                row = layout.row()
							 | 
						||
| 
								 | 
							
								                row.prop(sceneProperties, "tlm_write_radiance")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        elif sceneProperties.tlm_utility_context == "LoadLightmaps":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.label(text="Load lightmaps")
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_load_folder")
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.load_lightmaps")
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_load_atlas")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        elif sceneProperties.tlm_utility_context == "MaterialAdjustment":
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_utility_set")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.disable_specularity")
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.disable_metallic")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_remove_met_spec_link")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.remove_empty_images")
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        elif sceneProperties.tlm_utility_context == "NetworkRender":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row.label(text="Network Rendering")
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.start_server")
							 | 
						||
| 
								 | 
							
								            layout.label(text="Atlas Groups")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        elif sceneProperties.tlm_utility_context == "TexelDensity":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row.label(text="Texel Density Utilies")
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        elif sceneProperties.tlm_utility_context == "GLTFUtil":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row.label(text="GLTF material utilities")
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.add_gltf_node")
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.operator("tlm.shift_multiply_links")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TLM_PT_Selection(bpy.types.Panel):
							 | 
						||
| 
								 | 
							
								    bl_label = "Selection"
							 | 
						||
| 
								 | 
							
								    bl_space_type = "PROPERTIES"
							 | 
						||
| 
								 | 
							
								    bl_region_type = "WINDOW"
							 | 
						||
| 
								 | 
							
								    bl_context = "render"
							 | 
						||
| 
								 | 
							
								    bl_options = {'DEFAULT_CLOSED'}
							 | 
						||
| 
								 | 
							
								    bl_parent_id = "LNX_PT_BakePanel"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @classmethod 
							 | 
						||
| 
								 | 
							
								    def poll(self, context):
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        return scene.lnx_bakemode == "Lightmap"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def draw(self, context):
							 | 
						||
| 
								 | 
							
								        layout = self.layout
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        layout.use_property_split = True
							 | 
						||
| 
								 | 
							
								        layout.use_property_decorate = False
							 | 
						||
| 
								 | 
							
								        sceneProperties = scene.TLM_SceneProperties
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								        row.operator("tlm.enable_selection")
							 | 
						||
| 
								 | 
							
								        row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								        row.operator("tlm.disable_selection")
							 | 
						||
| 
								 | 
							
								        row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								        row.prop(sceneProperties, "tlm_override_object_settings")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if sceneProperties.tlm_override_object_settings:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.prop(sceneProperties, "tlm_mesh_lightmap_unwrap_mode")
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if sceneProperties.tlm_mesh_lightmap_unwrap_mode == "AtlasGroupA":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if scene.TLM_AtlasListItem >= 0 and len(scene.TLM_AtlasList) > 0:
							 | 
						||
| 
								 | 
							
								                    row = layout.row()
							 | 
						||
| 
								 | 
							
								                    item = scene.TLM_AtlasList[scene.TLM_AtlasListItem]
							 | 
						||
| 
								 | 
							
								                    row.prop_search(sceneProperties, "tlm_atlas_pointer", scene, "TLM_AtlasList", text='Atlas Group')
							 | 
						||
| 
								 | 
							
								                else:
							 | 
						||
| 
								 | 
							
								                    row = layout.label(text="Add Atlas Groups from the scene lightmapping settings.")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            else:
							 | 
						||
| 
								 | 
							
								                row = layout.row()
							 | 
						||
| 
								 | 
							
								                row.prop(sceneProperties, "tlm_postpack_object")
							 | 
						||
| 
								 | 
							
								                row = layout.row()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if sceneProperties.tlm_postpack_object and sceneProperties.tlm_mesh_lightmap_unwrap_mode != "AtlasGroupA":
							 | 
						||
| 
								 | 
							
								                if scene.TLM_PostAtlasListItem >= 0 and len(scene.TLM_PostAtlasList) > 0:
							 | 
						||
| 
								 | 
							
								                    row = layout.row()
							 | 
						||
| 
								 | 
							
								                    item = scene.TLM_PostAtlasList[scene.TLM_PostAtlasListItem]
							 | 
						||
| 
								 | 
							
								                    row.prop_search(sceneProperties, "tlm_postatlas_pointer", scene, "TLM_PostAtlasList", text='Atlas Group')
							 | 
						||
| 
								 | 
							
								                    row = layout.row()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                else:
							 | 
						||
| 
								 | 
							
								                    row = layout.label(text="Add Atlas Groups from the scene lightmapping settings.")
							 | 
						||
| 
								 | 
							
								                    row = layout.row()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if sceneProperties.tlm_mesh_lightmap_unwrap_mode != "AtlasGroupA":
							 | 
						||
| 
								 | 
							
								                row.prop(sceneProperties, "tlm_mesh_lightmap_resolution")
							 | 
						||
| 
								 | 
							
								                row = layout.row()
							 | 
						||
| 
								 | 
							
								                row.prop(sceneProperties, "tlm_mesh_unwrap_margin")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								        row.operator("tlm.remove_uv_selection")
							 | 
						||
| 
								 | 
							
								        row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								        row.operator("tlm.select_lightmapped_objects")
							 | 
						||
| 
								 | 
							
								        # row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								        # for addon in bpy.context.preferences.addons.keys():
							 | 
						||
| 
								 | 
							
								        #     if addon.startswith("Texel_Density"):
							 | 
						||
| 
								 | 
							
								        #         row.operator("tlm.toggle_texel_density")
							 | 
						||
| 
								 | 
							
								        #         row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TLM_PT_Additional(bpy.types.Panel):
							 | 
						||
| 
								 | 
							
								    bl_label = "Additional"
							 | 
						||
| 
								 | 
							
								    bl_space_type = "PROPERTIES"
							 | 
						||
| 
								 | 
							
								    bl_region_type = "WINDOW"
							 | 
						||
| 
								 | 
							
								    bl_context = "render"
							 | 
						||
| 
								 | 
							
								    bl_options = {'DEFAULT_CLOSED'}
							 | 
						||
| 
								 | 
							
								    bl_parent_id = "LNX_PT_BakePanel"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @classmethod 
							 | 
						||
| 
								 | 
							
								    def poll(self, context):
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        return scene.lnx_bakemode == "Lightmap"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def draw(self, context):
							 | 
						||
| 
								 | 
							
								        layout = self.layout
							 | 
						||
| 
								 | 
							
								        scene = context.scene
							 | 
						||
| 
								 | 
							
								        sceneProperties = scene.TLM_SceneProperties
							 | 
						||
| 
								 | 
							
								        atlasListItem = scene.TLM_AtlasListItem
							 | 
						||
| 
								 | 
							
								        atlasList = scene.TLM_AtlasList
							 | 
						||
| 
								 | 
							
								        postatlasListItem = scene.TLM_PostAtlasListItem
							 | 
						||
| 
								 | 
							
								        postatlasList = scene.TLM_PostAtlasList
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        row = layout.row()
							 | 
						||
| 
								 | 
							
								        row.prop(sceneProperties, "tlm_atlas_mode", expand=True)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if sceneProperties.tlm_atlas_mode == "Prepack":
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            rows = 2
							 | 
						||
| 
								 | 
							
								            if len(atlasList) > 1:
							 | 
						||
| 
								 | 
							
								                rows = 4
							 | 
						||
| 
								 | 
							
								            row = layout.row()
							 | 
						||
| 
								 | 
							
								            row.template_list("TLM_UL_AtlasList", "Atlas List", scene, "TLM_AtlasList", scene, "TLM_AtlasListItem", rows=rows)
							 | 
						||
| 
								 | 
							
								            col = row.column(align=True)
							 | 
						||
| 
								 | 
							
								            col.operator("tlm_atlaslist.new_item", icon='ADD', text="")
							 | 
						||
| 
								 | 
							
								            col.operator("tlm_atlaslist.delete_item", icon='REMOVE', text="")
							 | 
						||
| 
								 | 
							
								            col.menu("TLM_MT_AtlasListSpecials", icon='DOWNARROW_HLT', text="")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if atlasListItem >= 0 and len(atlasList) > 0:
							 | 
						||
| 
								 | 
							
								                item = atlasList[atlasListItem]
							 | 
						||
| 
								 | 
							
								                layout.prop(item, "tlm_atlas_lightmap_unwrap_mode")
							 | 
						||
| 
								 | 
							
								                layout.prop(item, "tlm_atlas_lightmap_resolution")
							 | 
						||
| 
								 | 
							
								                layout.prop(item, "tlm_atlas_unwrap_margin")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                layout.label(text="Objects: " + str(amount))
							 | 
						||
| 
								 | 
							
								                layout.prop(item, "tlm_atlas_merge_samemat")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                layout.prop(item, "tlm_use_uv_packer")
							 | 
						||
| 
								 | 
							
								                layout.prop(item, "tlm_uv_packer_padding")
							 | 
						||
| 
								 | 
							
								                layout.prop(item, "tlm_uv_packer_packing_engine")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        else:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            layout.label(text="Postpacking is unstable.")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            cv2 = importlib.util.find_spec("cv2")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if cv2 is None:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                row = layout.row(align=True)
							 | 
						||
| 
								 | 
							
								                row.label(text="OpenCV is not installed. Install it through preferences.")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            else:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                rows = 2
							 | 
						||
| 
								 | 
							
								                if len(atlasList) > 1:
							 | 
						||
| 
								 | 
							
								                    rows = 4
							 | 
						||
| 
								 | 
							
								                row = layout.row()
							 | 
						||
| 
								 | 
							
								                row.template_list("TLM_UL_PostAtlasList", "PostList", scene, "TLM_PostAtlasList", scene, "TLM_PostAtlasListItem", rows=rows)
							 | 
						||
| 
								 | 
							
								                col = row.column(align=True)
							 | 
						||
| 
								 | 
							
								                col.operator("tlm_postatlaslist.new_item", icon='ADD', text="")
							 | 
						||
| 
								 | 
							
								                col.operator("tlm_postatlaslist.delete_item", icon='REMOVE', text="")
							 | 
						||
| 
								 | 
							
								                col.menu("TLM_MT_PostAtlasListSpecials", icon='DOWNARROW_HLT', text="")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if postatlasListItem >= 0 and len(postatlasList) > 0:
							 | 
						||
| 
								 | 
							
								                    item = postatlasList[postatlasListItem]
							 | 
						||
| 
								 | 
							
								                    layout.prop(item, "tlm_atlas_lightmap_resolution")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    #Below list object counter
							 | 
						||
| 
								 | 
							
								                    amount = 0
							 | 
						||
| 
								 | 
							
								                    utilized = 0
							 | 
						||
| 
								 | 
							
								                    atlasUsedArea = 0
							 | 
						||
| 
								 | 
							
								                    atlasSize = item.tlm_atlas_lightmap_resolution
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    for obj in bpy.context.scene.objects:
							 | 
						||
| 
								 | 
							
								                        if obj.TLM_ObjectProperties.tlm_mesh_lightmap_use:
							 | 
						||
| 
								 | 
							
								                            if obj.TLM_ObjectProperties.tlm_postpack_object:
							 | 
						||
| 
								 | 
							
								                                if obj.TLM_ObjectProperties.tlm_postatlas_pointer == item.name:
							 | 
						||
| 
								 | 
							
								                                    amount = amount + 1
							 | 
						||
| 
								 | 
							
								                                    
							 | 
						||
| 
								 | 
							
								                                    atlasUsedArea += int(obj.TLM_ObjectProperties.tlm_mesh_lightmap_resolution) ** 2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    row = layout.row()
							 | 
						||
| 
								 | 
							
								                    row.prop(item, "tlm_atlas_repack_on_cleanup")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    #TODO SET A CHECK FOR THIS! ADD A CV2 CHECK TO UTILITY!
							 | 
						||
| 
								 | 
							
								                    cv2 = True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    if cv2:
							 | 
						||
| 
								 | 
							
								                        row = layout.row()
							 | 
						||
| 
								 | 
							
								                        row.prop(item, "tlm_atlas_dilation")
							 | 
						||
| 
								 | 
							
								                    layout.label(text="Objects: " + str(amount))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    utilized = atlasUsedArea / (int(atlasSize) ** 2)
							 | 
						||
| 
								 | 
							
								                    layout.label(text="Utilized: " + str(utilized * 100) + "%")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    if (utilized * 100) > 100:
							 | 
						||
| 
								 | 
							
								                        layout.label(text="Warning! Overflow not yet supported")
							 |