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