LuxCore GUI Proposal/Idea Collection

Discussion related to the LuxCore functionality, implementations and API.
Post Reply
User avatar
B.Y.O.B.
Developer
Developer
Posts: 4146
Joined: Mon Dec 04, 2017 10:08 pm
Location: Germany
Contact:

LuxCore GUI Proposal/Idea Collection

Post by B.Y.O.B. »

(This is a copy of a post I made in the old luxrender forum. I am reposting it here because some people (e.g. nigec) have started to write their own UIs for LuxCore, and my ideas might be interesting for them)

I want to show you my thoughts on what a future LuxCore GUI could look like.
No mockups for now, I'm still collecting ideas on functionality and features. Any comments are welcome.

Previous research
This is not an attempt to create a Lux Studio. That would be a far more massive amount of work, we would need an OpenGL viewport, all sorts of 3D manipulators, import of various 3D model formats etc., basically a tiny Blender. This is too much work to be reasonable (at least for me) and I also don't like that idea too much workflow-wise.

Instead it should be modern version of the old LuxRender GUI that can be used to load CFG/SCN files, change tonemapping (imagepipeline) settings, change render configuration and edit some parts of the scene.

I'd like to have a strong emphasize on workflow and usability. Usability includes things like being able to abort even heavy calculation at any point (UI should stay responsive), undo history, reset values to default, intuitive interface etc.

Possible Features

Scene Editing
Camera editing should be possible with a fly mode like in Blender:
WASD for camera position editing, moving the mouse for looking around (rotation editing).
It could also be useful to edit the sun rotation, e.g. to make renders during various times of the day.

(optional, needs testing) Low-resolution rendering during camera movement

Lightgroups and light editing
Similar to the old GUI, it should be possible to alter the gain of whole lightgroups.
But it would also be useful to be able to edit each light separately, including all its parameters.

Scene Snapshots
Save the properties of camera and light sources (position, color, gain etc.).
Snapshots can be loaded at any time.
It should be possible to add snapshots to a rendering queue.

Example usage: Make sky darker, make interior lights brighter, then take a snapshot - you have an evening setting. Make sky brighter, turn interior lights off, maybe add a sun, then take a snapshot - you have a day setting. Next you could add both to the queue, start it and LuxCore renders both snapshots.
Another use case would be multiple camera positions in the same scene.

Slots
Rendered images should go to a list of slots. Each slot contains all corresponding passes (AOVs), too.
Slots can be compared with various view modes, e.g. side-by-side

Editing Lock
Button to lock all transformations of the current snapshot/all snapshots to prevent editing by mistake.
After rendering for a certain time, the snapshot should be auto-locked (e.g. after 1 minute).

Renderconfig settings
Settings for renderengine, sampler, filter etc.

Direct editing of CFG/SCN files
It should be possible to hand-edit the CFG/SCN files and restart the render (option for developers and advanced users).

Log
Similar to the one in the old GUI, with log levels. Warnings/errors should be collected in an extra tab so they are not overlooked among the other messages.

Material Editor
A (possibly node based) editor for materials and textures.
It would be a lot of work, and there's the problem of getting changed materials back into the 3D program, so it's probably better to leave this to the 3D program addon/plugin.

Border rendering
Partial re-rendering of a portion of the image (without resetting the rest of the image).
Update of all passes/AOVs, too.

Control from 3D program
Geometry transform/material editing could be done from the 3D program that was used to export the scene, e.g. via telnet. Exporter and GUI would need telnet support.

In case you wonder why I didn't include geometry editing here: We would need some way to highlight the currently active object, and I don't think that information is available. We can't draw an outline around it or something. Accessing objects by name is also not good, many people don't even name their objects and even when they do, it's impossible to match names to hundreds of objects.
So I think we can't easily make geometry editing possible and should leave that field to the 3D programs and exporters.

Small features
  • Image saving: current slot/all slots, with passes/without passes, exr/jpg/png
  • load/resume/save film
  • time/samples/noise halt conditions, with estimated remaining time
User avatar
alpistinho
Developer
Developer
Posts: 198
Joined: Thu Jul 05, 2018 11:38 pm
Location: Rio de Janeiro

Re: LuxCore GUI Proposal/Idea Collection

Post by alpistinho »

If someone that would like to tackle this but is more comfortable with doing it using a web interface, I would be willing to write a webserver to work as the backend for this.
Support LuxCoreRender project with salts and bounties
epilectrolytics
Donor
Donor
Posts: 790
Joined: Thu Oct 04, 2018 6:06 am

Re: LuxCore GUI Proposal/Idea Collection

Post by epilectrolytics »

LuxCore UI is not bad as it is already (also Fox has demonstrated several improvements).

Two things are really annoying (not UI related):
- Resize problem. Once a file is opened, its resolution should be applied and rendered.
- Autostart problem. Autostart should be disabled by default so that various settings can be changed and checked before starting the render manually.
This is important especially when a cache is to be build, a process that cannot be interrupted and should not be started automatically.
Also more options to reuse/load/save caches need to be made available, which should be easier in LuxCore than in LuxBlend.
(This leads to the question of how to do animations.)

I think currently LuxBlend 2.8 transition and principled shader should be prioritised because that's what folks are asking for repeatedly on Blenderartist but improving and refining Luxcore is very welcome and could be probably done simultaneously at a slow pace in the background.

I wish I had learned coding when I was young so I could help with things but while growing older capabilities for learning new stuff are decreasing sadly :(
User avatar
nigec
Posts: 141
Joined: Mon Mar 11, 2019 8:50 am

Re: LuxCore GUI Proposal/Idea Collection

Post by nigec »

I think you need importers, every one who asks me "what are you doing?" asks me what if they don't use Blender

I agree with epilectrolytics the current ui has issues
User avatar
lacilaci
Donor
Donor
Posts: 1969
Joined: Fri May 04, 2018 5:16 am

Re: LuxCore GUI Proposal/Idea Collection

Post by lacilaci »

I think competition is very good on this front so no need to reinvent too much, so here are my 2c:
Previous research
This is not an attempt to create a Lux Studio. That would be a far more massive amount of work, we would need an OpenGL viewport, all sorts of 3D manipulators, import of various 3D model formats etc., basically a tiny Blender. This is too much work to be reasonable (at least for me) and I also don't like that idea too much workflow-wise.
Agreed, it would also be completely pointless cause users will always need DCC for editing and such "studio" would only be useful for certain features related to rendering
Instead it should be modern version of the old LuxRender GUI that can be used to load CFG/SCN files, change tonemapping (imagepipeline) settings, change render configuration and edit some parts of the scene.
It should be something like corona image editor or some form of standalone executable framebuffer that could load scene and render and save images without blender, max, whatever integration. But that's it.
I think editing scenes is unnecessary in any way, we only need to edit output (lightmixing, tonemapping, denoising...)
I'd like to have a strong emphasize on workflow and usability. Usability includes things like being able to abort even heavy calculation at any point (UI should stay responsive), undo history, reset values to default, intuitive interface etc.
fstorm, corona or vray's framebuffers provide good enough controls.. Tools for comparison of 2 outputs, presets..
Main point should be always for luxcore to have it's own way to producing final output, right now you either deal with linear exrs or blender's "color science". This would make luxcore have it's own consistent "look" across any integration
Scene Editing
Camera editing should be possible with a fly mode like in Blender:
WASD for camera position editing, moving the mouse for looking around (rotation editing).
It could also be useful to edit the sun rotation, e.g. to make renders during various times of the day.

(optional, needs testing) Low-resolution rendering during camera movement
No, this is pointless. Navigating in any complex scene while also rendering is pain.

This should be solved by running realtime link to luxcore Framebuffer(even with delay, no downsampling or low res rendering)
So instead of rendering in viewport directly a standalone window with realtime rendering will be running(together with all the goodies, like tonemapping, and whatever)

here's how it looks between max and fstorm: https://www.youtube.com/watch?v=wD8wjgtzj04

easy to navigate and you can literally work while rendering. For things that can't update realtime there should be a refresh button in luxcore framebuffer and that's it.
Lightgroups and light editing
Similar to the old GUI, it should be possible to alter the gain of whole lightgroups.
But it would also be useful to be able to edit each light separately, including all its parameters.
you need light intensity, color(either direct, or temperature) and that's it and you can do it by editing only output, no need to rerender anything. Other parameters are not needed and might literally need to rerun rendering too..?
Scene Snapshots
Save the properties of camera and light sources (position, color, gain etc.).
Snapshots can be loaded at any time.
It should be possible to add snapshots to a rendering queue.

Example usage: Make sky darker, make interior lights brighter, then take a snapshot - you have an evening setting. Make sky brighter, turn interior lights off, maybe add a sun, then take a snapshot - you have a day setting. Next you could add both to the queue, start it and LuxCore renders both snapshots.
Another use case would be multiple camera positions in the same scene.
simple xml/cfg presets for lightmixing and tonemapping (and again this would only need to work on output no scene editing!)
Changing active camera could be a nice touch but I think it kinda adds a layer of complexity... i'd leave it to user to export scene per camera!
Slots
Rendered images should go to a list of slots. Each slot contains all corresponding passes (AOVs), too.
Slots can be compared with various view modes, e.g. side-by-side
take a look at vray's VFB.. it saves a "history" that has a preset max capacity (let's say a folder that is set to be max 100MB)
-only saving output in "luxcore format" with all aov's... no scene saving in history cause no scene editing outside DCC!
Editing Lock
Button to lock all transformations of the current snapshot/all snapshots to prevent editing by mistake.
After rendering for a certain time, the snapshot should be auto-locked (e.g. after 1 minute).
presets that work on outputs, no scene editing
Renderconfig settings
Settings for renderengine, sampler, filter etc.
NO, unless you can find a way to also reimport those back to DCC this is a no no. Even then I'd avoid changing settings outside blender. All settings need to be present in main editing app, otherwise it's chaos and you lose track of what is setup where easily.
Direct editing of CFG/SCN files
It should be possible to hand-edit the CFG/SCN files and restart the render (option for developers and advanced users).
as long as you can always choose binary vs text scene file you can still go crazy with advanced things, no? I would not add this to framebuffer directly tho!
Log
Similar to the one in the old GUI, with log levels. Warnings/errors should be collected in an extra tab so they are not overlooked among the other messages.
logs and statistics, as a possible overlay right on render by a button press, no need for extra tab maybe.
Material Editor
A (possibly node based) editor for materials and textures.
It would be a lot of work, and there's the problem of getting changed materials back into the 3D program, so it's probably better to leave this to the 3D program addon/plugin.
no editing and no reimporting scene to main editing app..
Border rendering
Partial re-rendering of a portion of the image (without resetting the rest of the image).
Update of all passes/AOVs, too.
well, yes as long as scene is present and framebuffer is rendering not just used for output editing/tonemapping it should provide basic functionalities like border rendering, or the user driven sampling weights
Control from 3D program
Geometry transform/material editing could be done from the 3D program that was used to export the scene, e.g. via telnet. Exporter and GUI would need telnet support.

In case you wonder why I didn't include geometry editing here: We would need some way to highlight the currently active object, and I don't think that information is available. We can't draw an outline around it or something. Accessing objects by name is also not good, many people don't even name their objects and even when they do, it's impossible to match names to hundreds of objects.
So I think we can't easily make geometry editing possible and should leave that field to the 3D programs and exporters.
realtime link for interactive rendering instead viewport rendering (like the fstorm example)
Small features
  • Image saving: current slot/all slots, with passes/without passes, exr/jpg/png
  • load/resume/save film
  • time/samples/noise halt conditions, with estimated remaining time
basicaly 2 ways of working with the standalone framebuffer/image editor should be possible.

Work only on output: load luxcore image output and do the tonemapping, lightmixing, denoising, save tonemapped output

work on scene and output: added functionality to render standalone(without editing app) and maybe resume rendering + editing output for final render saving.. (this also allows for user to share scene just in luxcore format either in binary or text form) with some statistics could work as a user built benchmark
User avatar
Sharlybg
Donor
Donor
Posts: 3101
Joined: Mon Dec 04, 2017 10:11 pm
Location: Ivory Coast

Re: LuxCore GUI Proposal/Idea Collection

Post by Sharlybg »

Also shoul be possible to apply custome ".cube" LUT like corona and Fstorm. But anyway i fear the amount of job behind all that.
Support LuxCoreRender project with salts and bounties

Portfolio : https://www.behance.net/DRAVIA
Post Reply