Render Queue #88624

Closed
opened 2021-05-27 12:17:18 +02:00 by Colin Marmond · 14 comments
Member

The renderqueue panel is a new panel to organise and plan shots to render.


Why ?

  • Case 1 :
    The sampling can be high, to have a good quality, but at cost of render time. When an artist have differents view to render with differents objects shown; it takes a lot of time to render first view, wait for render to finish, then render another view (eventually hide/show some objects, change frame), etc.

In this case, it is useful to have all the renders doing one by one automatically.

  • Case 2 :
    The artist rendered at low samples different views, with different compositions. Then, the client want a specific composition. The artist have to manually hide/show the objects to change the composition, change the world...

In this case, it is useful to have a list of overridden settings ( view layer, frame, camera, etc ) to easily recover a view/composition.

Who will need it ?

As described previously, it will benefits to every artists. A huge benefit for artists working with cycles or other path tracing render engine.


A proposed solution

Internally

The data of each shot is stored into a new type structure.
That structure is overriding some scene settings and render settings.
The proposed settings are :

  • frame
  • camera (object & settings)
    • exposure
    • focus distance
  • resolution and ratio
  • viewlayer

User Experience

The renderqueue list is located in a new panel inside properties editor. It is a list of shots, that have each a different name.
The user can then select some settings to override, and modify them.
The user can then render all the shots automatically or just some.
All the renders are then automatically saved using the shot name.

Pros

This system makes it easy to add new overridable settings, and offer a large choice of possibilities.

Cons

This override system is not easy to do, because of the complexity of view layers(visibility, etc), and require a lot of work.


Alternative solutions

Shot by camera

Each camera can contain overrides of some scene and render settings (sampling, exposure, resolution, viewlayer, etc).

  • Pros :
    This is a bit simpler on the user side.
  • Cons :
    This is restrictive, because the user can only define one shot per camera.

Shot by viewlayer

Each viewlayer can contain overrides of some scene and render settings (sampling, exposure, resolution, camera, etc).

  • Pros :
    This is easier to implement, because all the viewlayer side is already done in blender.
  • Cons :
    This gives too much viewlayers in the blender file. The user may not want to override the viewlayer.

The strategy for the proposed method

Create a new structure type : RenderQueue.
This structure will first contain two of the elemental elements : the camera and the frame.
Each element has a flag associated, to define if it is used; ex : USE_CUSTOM_FRAME
Each element is shown in its category, in the RenderQueue property panel.
Once this little design is done, we should be able to think about layer overriding.


Mockups

Screenshot_20210527_130757.png

The renderqueue panel is a new panel to organise and plan shots to render. ___ Why ? ## - Case 1 : The sampling can be high, to have a good quality, but at cost of render time. When an artist have differents view to render with differents objects shown; it takes a lot of time to render first view, wait for render to finish, then render another view (eventually hide/show some objects, change frame), etc. In this case, it is useful to have all the renders doing one by one automatically. - Case 2 : The artist rendered at low samples different views, with different compositions. Then, the client want a specific composition. The artist have to manually hide/show the objects to change the composition, change the world... In this case, it is useful to have a list of overridden settings ( view layer, frame, camera, etc ) to easily recover a view/composition. Who will need it ? ## As described previously, it will benefits to every artists. A huge benefit for artists working with cycles or other path tracing render engine. ___ A proposed solution ## Internally ------ The data of each shot is stored into a new type structure. That structure is overriding some scene settings and render settings. The proposed settings are : * frame * camera (object & settings) - exposure - focus distance * resolution and ratio * viewlayer User Experience ------ The renderqueue list is located in a new panel inside properties editor. It is a list of shots, that have each a different name. The user can then select some settings to override, and modify them. The user can then render all the shots automatically or just some. All the renders are then automatically saved using the shot name. Pros ------ This system makes it easy to add new overridable settings, and offer a large choice of possibilities. Cons ------ This override system is not easy to do, because of the complexity of view layers(visibility, etc), and require a lot of work. ___ Alternative solutions ## Shot by camera ------ Each camera can contain overrides of some scene and render settings (sampling, exposure, resolution, viewlayer, etc). - Pros : This is a bit simpler on the user side. - Cons : This is restrictive, because the user can only define one shot per camera. Shot by viewlayer ------ Each viewlayer can contain overrides of some scene and render settings (sampling, exposure, resolution, camera, etc). - Pros : This is easier to implement, because all the viewlayer side is already done in blender. - Cons : This gives too much viewlayers in the blender file. The user may not want to override the viewlayer. ___ The strategy for the proposed method ## Create a new structure type : RenderQueue. This structure will first contain two of the elemental elements : the camera and the frame. Each element has a flag associated, to define if it is used; ex : USE_CUSTOM_FRAME Each element is shown in its category, in the RenderQueue property panel. Once this little design is done, we should be able to think about layer overriding. ___ Mockups ------ ![Screenshot_20210527_130757.png](https://archive.blender.org/developer/F10144821/Screenshot_20210527_130757.png)
Author
Member

Added subscriber: @Kdaf

Added subscriber: @Kdaf
kathybowing commented 2021-05-27 13:18:02 +02:00 (Migrated from localhost:3001)

Added subscriber: @kathybowing

Added subscriber: @kathybowing

Added subscriber: @brecht

Added subscriber: @brecht

This is what view layers were designed for. That system should be improved, and get more powerful support for overrides, rather than adding another mechanism.

The name is also confusing, since in some other 3d apps the "render queue" is a job scheduling system.

Overall, I think this design is not the right direction.

This is what view layers were designed for. That system should be improved, and get more powerful support for overrides, rather than adding another mechanism. The name is also confusing, since in some other 3d apps the "render queue" is a job scheduling system. Overall, I think this design is not the right direction.
Author
Member

In #88624#1167046, @brecht wrote:
Overall, I think this design is not the right direction.

Alright, no problem, have you got any idea of how a Render/Shot Queue could work ?
I mean, you said viewlayers are made for this. But we cant even change camera by view layer. Is it in this direction that it could go ?
Making a kind of Shot by viewlayer as I mentionned ?

> In #88624#1167046, @brecht wrote: > Overall, I think this design is not the right direction. Alright, no problem, have you got any idea of how a Render/Shot Queue could work ? I mean, you said viewlayers are made for this. But we cant even change camera by view layer. Is it in this direction that it could go ? Making a kind of Shot by viewlayer as I mentionned ?

Ideally view layers would support a more generic override mechanism, where any scene property can be overridden. But that is rather complicated to implement well.

Adding a few more options to the Overrides panel would be a good step. Currently that only has material and samples, adding a camera override there would make sense.

Ideally view layers would support a more generic override mechanism, where any scene property can be overridden. But that is rather complicated to implement well. Adding a few more options to the Overrides panel would be a good step. Currently that only has material and samples, adding a camera override there would make sense.
Author
Member

Do you think I could make that ( adding camera override ) ? Or is it part of a larger change ?

Do you think I could make that ( adding camera override ) ? Or is it part of a larger change ?
kathybowing commented 2021-05-27 14:25:29 +02:00 (Migrated from localhost:3001)

Removed subscriber: @kathybowing

Removed subscriber: @kathybowing

You could implement that yes.

You could implement that yes.
Author
Member

Changed status from 'Needs Triage' to: 'Archived'

Changed status from 'Needs Triage' to: 'Archived'

Added subscriber: @juang3d

Added subscriber: @juang3d

Regarding this @brecht I think there are two perspectives here:

  • The Per Camera one: that's a good one, because we often need to render several cameras in a scene, imagine a pack shot, or having to render several static cameras of different places in a set, or having a bunch of detail renders of a character, right now there are rudimentary ways to do that, but a camera queue would allow us to avoid all this.

  • The View Layer perspective: that one would make useless the view layers as a scene separation element, so I kind of agree that this sould not be used in this way.

With that said there is a point regarding the Per Camera idea:

While ViewLayers are defined to be able to generate overrides in the scene, there are scenes with several ViewLayers that have to be rendered from different cameras with different resolutions, picture this structure for example:

  • ViewLayer: Character
  • ViewLayer: Set
  • ViewLayer: Background Set
  • ViewLayer: VERY High resolution 2D background

All that will be used inside the compositor to assemble the final beauty image.

Now if we need to render a collection of static pictures of that situation we have the two approaches here:

  • Per Camera: we have the camera lists, each camera will render it's own sets of view layers, the only main override a camera would need would be the resolution, because you often need to render different sizes, vertical/horizontal, with different proportions, etc...
    However a samples override per camera could come handy, but if it's too out of scope can be totally discarded

  • Per ViewLayer: in this situation the queue would be useless, because the previews compositing view layer setup would render useless, it could generate a ton of view layers but we won't be able to use our composite configuration or we will be forced to configure one specific compositing tree per camera, which is a problem too and not efficient at all.

So IMHO the Per Camera approach is the best one, I agree with keeping it as simple as possible, so it can be just a camera queue with a resolution setting per camera, nothing less nothing more.

But the Per ViewLayer approach would make View Layers useless if they have to be used with the compositor or with a scene with several view layers.

Regarding the overrides, this could be a different proposal with a different design that later could be combined with ViewLayers and/or with the Camera Queue :)

Regarding this @brecht I think there are two perspectives here: - The Per Camera one: that's a good one, because we often need to render several cameras in a scene, imagine a pack shot, or having to render several static cameras of different places in a set, or having a bunch of detail renders of a character, right now there are rudimentary ways to do that, but a camera queue would allow us to avoid all this. - The View Layer perspective: that one would make useless the view layers as a scene separation element, so I kind of agree that this sould not be used in this way. With that said there is a point regarding the Per Camera idea: While ViewLayers are defined to be able to generate overrides in the scene, there are scenes with several ViewLayers that have to be rendered from different cameras with different resolutions, picture this structure for example: - ViewLayer: Character - ViewLayer: Set - ViewLayer: Background Set - ViewLayer: VERY High resolution 2D background All that will be used inside the compositor to assemble the final beauty image. Now if we need to render a collection of static pictures of that situation we have the two approaches here: - Per Camera: we have the camera lists, each camera will render it's own sets of view layers, the only main override a camera would need would be the resolution, because you often need to render different sizes, vertical/horizontal, with different proportions, etc... However a samples override per camera could come handy, but if it's too out of scope can be totally discarded - Per ViewLayer: in this situation the queue would be useless, because the previews compositing view layer setup would render useless, it could generate a ton of view layers but we won't be able to use our composite configuration or we will be forced to configure one specific compositing tree per camera, which is a problem too and not efficient at all. So IMHO the Per Camera approach is the best one, I agree with keeping it as simple as possible, so it can be just a camera queue with a resolution setting per camera, nothing less nothing more. But the Per ViewLayer approach would make View Layers useless if they have to be used with the compositor or with a scene with several view layers. Regarding the overrides, this could be a different proposal with a different design that later could be combined with ViewLayers and/or with the Camera Queue :)

Added subscriber: @Dae_mmm

Added subscriber: @Dae_mmm

layer manager might be the way to handle what he described, but render queue has a different meaning:
with a render queue you can decide to render:
from frame 1 to frame 100
from frame 300 to frame 500
Have a still of frame 1 in 4k
Have a still of frame 300 in 4k
Have from frame 100 to 700 of file "LoremIpsum.blend"
Have a still of frame 150 of file "LoremIpsum.blend"

After setting all up you can click on "start queue" and have everything later

layer manager might be the way to handle what he described, but render queue has a different meaning: with a render queue you can decide to render: from frame 1 to frame 100 from frame 300 to frame 500 Have a still of frame 1 in 4k Have a still of frame 300 in 4k Have from frame 100 to 700 of file "LoremIpsum.blend" Have a still of frame 150 of file "LoremIpsum.blend" After setting all up you can click on "start queue" and have everything later
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#88624
No description provided.