reading flm files

Discussion related to the LuxCore functionality, implementations and API.
User avatar
Dade
Developer
Developer
Posts: 5672
Joined: Mon Dec 04, 2017 8:36 pm
Location: Italy

Re: reading flm files

Post by Dade »

bartek_zgo wrote: Wed Mar 10, 2021 10:31 am Thanks Dade, I think using Text/XML archive is not a good idea. They will be huge. Am I right?
All LuxCore archives are compressed so they may be about of the same size of the binary archive however it is likely to be slow due to the large amount of data to zip.
Support LuxCoreRender project with salts and bounties
bartek_zgo
Posts: 116
Joined: Mon Oct 26, 2020 11:42 am

Re: reading flm files

Post by bartek_zgo »

I'm trying to save one exr file for each displacement group.

Code: Select all

film.imagepipelines.0.0.type = "NOP"
film.imagepipelines.0.1.type = "TONEMAP_LUXLINEAR"
film.imagepipelines.0.1.sensitivity = "100"
film.imagepipelines.0.1.exposure = 3.2
film.imagepipelines.0.1.fstop = 22
film.imagepipelines.0.2.type = "TONEMAP_LINEAR"
film.imagepipelines.0.2.scale = "0.39"
film.outputs.0.type = "RGB_IMAGEPIPELINE"
film.outputs.0.filename = "/home/node/matadorNode/tmp/0_FI_68803_271618_0000.png"
film.outputs.0.index = 0
film.outputs.1.type = "MATERIAL_ID"
film.outputs.1.filename = "/home/node/matadorNode/tmp/0_FI_68803_271618_0000_idmaterial.png"
film.outputs.2.type = "OBJECT_ID"
film.outputs.2.filename = "/home/node/matadorNode/tmp/0_FI_68803_271618_0000_idobject.png"
film.outputs.3.type = "ALBEDO"
film.outputs.3.filename = "/home/node/matadorNode/tmp/0_FI_68803_271618_0000_albedo.exr"
film.outputs.4.type = "AVG_SHADING_NORMAL"
film.outputs.4.filename = "/home/node/matadorNode/tmp/0_FI_68803_271618_0000_avgShadingNormal.exr"
film.imagepipelines.1.0.type = "NOP"
film.imagepipelines.1.1.type = "TONEMAP_LUXLINEAR"
film.imagepipelines.1.1.sensitivity = "100"
film.imagepipelines.1.1.exposure = 3.2
film.imagepipelines.1.1.fstop = 22
film.imagepipelines.1.2.type = "TONEMAP_LINEAR"
film.imagepipelines.1.2.scale = "0.39"
film.imagepipelines.1.radiancescales.1.enabled = 1
film.imagepipelines.1.radiancescales.2.enabled = 0
film.imagepipelines.1.radiancescales.3.enabled = 0
film.outputs.5.type = "RGB_IMAGEPIPELINE"
film.outputs.5.filename = "/home/node/matadorNode/tmp/0_FI_68803_271618_0000_multilight_74956_12.exr"
film.outputs.5.index = 1
film.imagepipelines.2.0.type = "NOP"
film.imagepipelines.2.1.type = "TONEMAP_LUXLINEAR"
film.imagepipelines.2.1.sensitivity = "100"
film.imagepipelines.2.1.exposure = 3.2
film.imagepipelines.2.1.fstop = 22
film.imagepipelines.2.2.type = "TONEMAP_LINEAR"
film.imagepipelines.2.2.scale = "0.39"
film.imagepipelines.2.radiancescales.1.enabled = 0
film.imagepipelines.2.radiancescales.2.enabled = 1
film.imagepipelines.2.radiancescales.3.enabled = 0
film.outputs.6.type = "RGB_IMAGEPIPELINE"
film.outputs.6.filename = "/home/node/matadorNode/tmp/0_FI_68803_271618_0000_multilight_74956_13.exr"
film.outputs.6.index = 2
film.imagepipelines.3.0.type = "NOP"
film.imagepipelines.3.1.type = "TONEMAP_LUXLINEAR"
film.imagepipelines.3.1.sensitivity = "100"
film.imagepipelines.3.1.exposure = 3.2
film.imagepipelines.3.1.fstop = 22
film.imagepipelines.3.2.type = "TONEMAP_LINEAR"
film.imagepipelines.3.2.scale = "0.39"
film.imagepipelines.3.radiancescales.1.enabled = 0
film.imagepipelines.3.radiancescales.2.enabled = 0
film.imagepipelines.3.radiancescales.3.enabled = 1
film.outputs.7.type = "RGB_IMAGEPIPELINE"
film.outputs.7.filename = "/home/node/matadorNode/tmp/0_FI_68803_271618_0000_multilight_74956_16.exr"
film.outputs.7.index = 3

And this works perfectly. I get one image for each channel that is processed by a pipeline.

But than I start render on 2 machines. I get 2 flm files.
I do merge firstFilm.AddFilm(sedondFilm).
firstFilm.SaveOutput(filePath, OUTPUT_RADIANCE_GROUP, Properties_with_id)...

But this way has 2 problems:
- it looks that I can not use pipelines. That is huge problem. There is no OIDN denoiser.
- I don't know which channel is which one. During the render I set an unique file name for each output so I can find it easily. In the film I found only group number.

Am I doing something wrong?
User avatar
Dade
Developer
Developer
Posts: 5672
Joined: Mon Dec 04, 2017 8:36 pm
Location: Italy

Re: reading flm files

Post by Dade »

As I wrote in my previous post:
Dade wrote: Tue Mar 09, 2021 2:25 pm
bartek_zgo wrote: Tue Mar 09, 2021 2:10 pm But we want to give e feature to send flm file to adjust lights. How can I do this?
You can save an .exr for each light group and than combine them on client software: the result is just the sum of each .exr scaled according the user light group scale. This probably more efficient than transmitting the .flm (.exr file format is a lot more compact). However you loose the image pipeline post processing (you have to do it on client) so may be not applicable.
Support LuxCoreRender project with salts and bounties
bartek_zgo
Posts: 116
Joined: Mon Oct 26, 2020 11:42 am

Re: reading flm files

Post by bartek_zgo »

So the only possibility to get oidn working, is to use one computer to do the job. In that case I can use image pipelines.
Let say that we will start now with only one machine. I have pipelines like defined in previous post. So I get separate image for each light group.
In pipeline I have OIDN, TONEMAP_LUXLINEAR and TONEMAP_LINEAR. Than I make a sum. Is it correct?
Or I have to output the image without any pipeline, make a sum, and than apply on my own TONEMAP_LUXLINEAR, TONEMAP_LINEAR. As this operations are linear I can execute them in any order I want, right?
User avatar
Dade
Developer
Developer
Posts: 5672
Joined: Mon Dec 04, 2017 8:36 pm
Location: Italy

Re: reading flm files

Post by Dade »

bartek_zgo wrote: Fri Mar 12, 2021 2:46 pm Or I have to output the image without any pipeline, make a sum, and than apply on my own TONEMAP_LUXLINEAR, TONEMAP_LINEAR. As this operations are linear I can execute them in any order I want, right?
Yes, you need to combine the RADIANCE_GROUP AOVs than you can apply any tone mapping, gamma correction, etc.
Support LuxCoreRender project with salts and bounties
bartek_zgo
Posts: 116
Joined: Mon Oct 26, 2020 11:42 am

Re: reading flm files

Post by bartek_zgo »

What about denoiser? Can I apply it to RADIANCE_GROUP AOVs before combining them, or I have to do it after?
And what is more important. How I can apply denoiser?
User avatar
Dade
Developer
Developer
Posts: 5672
Joined: Mon Dec 04, 2017 8:36 pm
Location: Italy

Re: reading flm files

Post by Dade »

bartek_zgo wrote: Mon Mar 15, 2021 7:30 am What about denoiser? Can I apply it to RADIANCE_GROUP AOVs before combining them, or I have to do it after?
And what is more important. How I can apply denoiser?
You should apply the denoiser only after having merging the groups. You need to modify LuxCore to allow the loading of arbitrary data in a stand alone film.

It may be possible to obtain the same result using the background image plugin and rendering an empty scene but it is a very convolute trick.
Support LuxCoreRender project with salts and bounties
bartek_zgo
Posts: 116
Joined: Mon Oct 26, 2020 11:42 am

Re: reading flm files

Post by bartek_zgo »

So as I understand at this moment there is no way to do this.
1. I can not use flm files, as they are not OS independent.
2. I can not take RADIANCE_GROUP images from pipelines after all Tonemap modifications, because merge has to be done BEFORE tonemaping. I don't understand why as I use only Linear operations in pipeline, but I trust you. If you could explain why that wold be perfect.
3. I can try to implement all the pipeline by myself, but in that case I will not have OIDN.
User avatar
Dade
Developer
Developer
Posts: 5672
Joined: Mon Dec 04, 2017 8:36 pm
Location: Italy

Re: reading flm files

Post by Dade »

bartek_zgo wrote: Mon Mar 15, 2021 11:07 am So as I understand at this moment there is no way to do this.
It isn't possible with any LuxCore API modification or convoluted trick.
Support LuxCoreRender project with salts and bounties
bartek_zgo
Posts: 116
Joined: Mon Oct 26, 2020 11:42 am

Re: reading flm files

Post by bartek_zgo »

Could you be so kind and explain why I can not merge images produced by image pipelines?
I've done some simple test. I grab 3 images written by image pipelines 1-3 (from previous post). Merge them manually. And than compare to the image produced by luxcore when all radiance groups are enabled. They look to be identical. So where is the problem? It will not work when I will start to multiply them?
merge.png
Post Reply