forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			92 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			92 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | import bpy, os, platform, subprocess | ||
|  | 
 | ||
|  | class TLM_Optix_Denoise: | ||
|  | 
 | ||
|  |     image_array = [] | ||
|  | 
 | ||
|  |     image_output_destination = "" | ||
|  | 
 | ||
|  |     denoised_array = [] | ||
|  | 
 | ||
|  |     def __init__(self, optixProperties, img_array, dirpath): | ||
|  | 
 | ||
|  |         self.optixProperties = optixProperties | ||
|  | 
 | ||
|  |         self.image_array = img_array | ||
|  | 
 | ||
|  |         self.image_output_destination = dirpath | ||
|  | 
 | ||
|  |         self.check_binary() | ||
|  | 
 | ||
|  |     def check_binary(self): | ||
|  | 
 | ||
|  |         optixPath = self.optixProperties.tlm_optix_path | ||
|  | 
 | ||
|  |         if optixPath != "": | ||
|  | 
 | ||
|  |             file = optixPath | ||
|  |             filename, file_extension = os.path.splitext(file) | ||
|  | 
 | ||
|  |             if(file_extension == ".exe"): | ||
|  | 
 | ||
|  |                 #if file exists optixDenoise or denoise | ||
|  | 
 | ||
|  |                 pass | ||
|  | 
 | ||
|  |             else: | ||
|  | 
 | ||
|  |                 #if file exists optixDenoise or denoise | ||
|  | 
 | ||
|  |                 self.optixProperties.tlm_optix_path = os.path.join(self.optixProperties.tlm_optix_path,"Denoiser.exe") | ||
|  | 
 | ||
|  |         else: | ||
|  |             if bpy.context.scene.TLM_SceneProperties.tlm_verbose: | ||
|  |                 print("Please provide Optix path") | ||
|  | 
 | ||
|  |     def denoise(self): | ||
|  | 
 | ||
|  |         if bpy.context.scene.TLM_SceneProperties.tlm_verbose: | ||
|  |             print("Optix: Denoising") | ||
|  |         for image in self.image_array: | ||
|  | 
 | ||
|  |             if image not in self.denoised_array: | ||
|  | 
 | ||
|  |                 image_path = os.path.join(self.image_output_destination, image) | ||
|  | 
 | ||
|  |                 denoise_output_destination = image_path[:-10] + "_denoised.hdr" | ||
|  | 
 | ||
|  |                 if platform.system() == 'Windows': | ||
|  |                     optixPath = bpy.path.abspath(self.optixProperties.tlm_optix_path) | ||
|  |                     pipePath = [optixPath, '-i', image_path, '-o', denoise_output_destination] | ||
|  |                 elif platform.system() == 'Darwin': | ||
|  |                     if bpy.context.scene.TLM_SceneProperties.tlm_verbose: | ||
|  |                         print("Mac for Optix is still unsupported")     | ||
|  |                 else: | ||
|  |                     if bpy.context.scene.TLM_SceneProperties.tlm_verbose: | ||
|  |                         print("Linux for Optix is still unsupported") | ||
|  | 
 | ||
|  |                 if self.optixProperties.tlm_optix_verbose: | ||
|  |                     denoisePipe = subprocess.Popen(pipePath, shell=True) | ||
|  |                 else: | ||
|  |                     denoisePipe = subprocess.Popen(pipePath, stdout=subprocess.PIPE, stderr=None, shell=True) | ||
|  | 
 | ||
|  |                 denoisePipe.communicate()[0] | ||
|  |                  | ||
|  |                 image = bpy.data.images.load(image_path, check_existing=False) | ||
|  |                 bpy.data.images[image.name].filepath_raw = bpy.data.images[image.name].filepath_raw[:-4] + "_denoised.hdr" | ||
|  |                 bpy.data.images[image.name].reload() | ||
|  | 
 | ||
|  |     def clean(self): | ||
|  | 
 | ||
|  |         self.denoised_array.clear() | ||
|  |         self.image_array.clear() | ||
|  | 
 | ||
|  |         for file in self.image_output_destination: | ||
|  |                 if file.endswith("_baked.hdr"): | ||
|  |                     baked_image_array.append(file) | ||
|  | 
 | ||
|  |         #self.image_output_destination | ||
|  | 
 | ||
|  |         #Clean temporary files here.. | ||
|  |         #...pfm | ||
|  |         #...denoised.hdr |