Python: add 'render_write' callback
This is useful for addons which intend to write data next to the rendered image/movie, but not for preview renders.
This commit is contained in:
parent
20a1778148
commit
ee010650f6
|
@ -41,6 +41,7 @@ typedef enum {
|
|||
BLI_CB_EVT_FRAME_CHANGE_POST,
|
||||
BLI_CB_EVT_RENDER_PRE,
|
||||
BLI_CB_EVT_RENDER_POST,
|
||||
BLI_CB_EVT_RENDER_WRITE,
|
||||
BLI_CB_EVT_RENDER_STATS,
|
||||
BLI_CB_EVT_RENDER_INIT,
|
||||
BLI_CB_EVT_RENDER_COMPLETE,
|
||||
|
|
|
@ -44,23 +44,24 @@ void bpy_app_generic_callback(struct Main *main, struct ID *id, void *arg);
|
|||
static PyTypeObject BlenderAppCbType;
|
||||
|
||||
static PyStructSequence_Field app_cb_info_fields[] = {
|
||||
{(char *)"frame_change_pre", (char *)"Callback list - on frame change for playback and rendering (before)"},
|
||||
{(char *)"frame_change_post", (char *)"Callback list - on frame change for playback and rendering (after)"},
|
||||
{(char *)"render_pre", (char *)"Callback list - on render (before)"},
|
||||
{(char *)"render_post", (char *)"Callback list - on render (after)"},
|
||||
{(char *)"render_stats", (char *)"Callback list - on printing render statistics"},
|
||||
{(char *)"render_init", (char *)"Callback list - on initialization of a render job"},
|
||||
{(char *)"render_complete", (char *)"Callback list - on completion of render job"},
|
||||
{(char *)"render_cancel", (char *)"Callback list - on canceling a render job"},
|
||||
{(char *)"load_pre", (char *)"Callback list - on loading a new blend file (before)"},
|
||||
{(char *)"load_post", (char *)"Callback list - on loading a new blend file (after)"},
|
||||
{(char *)"save_pre", (char *)"Callback list - on saving a blend file (before)"},
|
||||
{(char *)"save_post", (char *)"Callback list - on saving a blend file (after)"},
|
||||
{(char *)"scene_update_pre", (char *)"Callback list - on updating the scenes data (before)"},
|
||||
{(char *)"scene_update_post", (char *)"Callback list - on updating the scenes data (after)"},
|
||||
{(char *)"game_pre", (char *)"Callback list - on starting the game engine"},
|
||||
{(char *)"game_post", (char *)"Callback list - on ending the game engine"},
|
||||
{(char *)"version_update", (char *)"Callback list - on ending the versioning code"},
|
||||
{(char *)"frame_change_pre", (char *)"on frame change for playback and rendering (before)"},
|
||||
{(char *)"frame_change_post", (char *)"on frame change for playback and rendering (after)"},
|
||||
{(char *)"render_pre", (char *)"on render (before)"},
|
||||
{(char *)"render_post", (char *)"on render (after)"},
|
||||
{(char *)"render_write", (char *)"on writing a render frame (directly after the frame is written)"},
|
||||
{(char *)"render_stats", (char *)"on printing render statistics"},
|
||||
{(char *)"render_init", (char *)"on initialization of a render job"},
|
||||
{(char *)"render_complete", (char *)"on completion of render job"},
|
||||
{(char *)"render_cancel", (char *)"on canceling a render job"},
|
||||
{(char *)"load_pre", (char *)"on loading a new blend file (before)"},
|
||||
{(char *)"load_post", (char *)"on loading a new blend file (after)"},
|
||||
{(char *)"save_pre", (char *)"on saving a blend file (before)"},
|
||||
{(char *)"save_post", (char *)"on saving a blend file (after)"},
|
||||
{(char *)"scene_update_pre", (char *)"on updating the scenes data (before)"},
|
||||
{(char *)"scene_update_post", (char *)"on updating the scenes data (after)"},
|
||||
{(char *)"game_pre", (char *)"on starting the game engine"},
|
||||
{(char *)"game_post", (char *)"on ending the game engine"},
|
||||
{(char *)"version_update", (char *)"on ending the versioning code"},
|
||||
|
||||
/* sets the permanent tag */
|
||||
# define APP_CB_OTHER_FIELDS 1
|
||||
|
@ -71,7 +72,7 @@ static PyStructSequence_Field app_cb_info_fields[] = {
|
|||
|
||||
static PyStructSequence_Desc app_cb_info_desc = {
|
||||
(char *)"bpy.app.handlers", /* name */
|
||||
(char *)"This module contains callbacks", /* doc */
|
||||
(char *)"This module contains callback lists", /* doc */
|
||||
app_cb_info_fields, /* fields */
|
||||
ARRAY_SIZE(app_cb_info_fields) - 1
|
||||
};
|
||||
|
|
|
@ -2834,6 +2834,9 @@ void RE_BlenderFrame(Render *re, Main *bmain, Scene *scene, SceneRenderLayer *sr
|
|||
}
|
||||
|
||||
BLI_callback_exec(re->main, (ID *)scene, BLI_CB_EVT_RENDER_POST); /* keep after file save */
|
||||
if (write_still) {
|
||||
BLI_callback_exec(re->main, (ID *)scene, BLI_CB_EVT_RENDER_WRITE);
|
||||
}
|
||||
}
|
||||
|
||||
BLI_callback_exec(re->main, (ID *)scene, G.is_break ? BLI_CB_EVT_RENDER_CANCEL : BLI_CB_EVT_RENDER_COMPLETE);
|
||||
|
@ -3031,6 +3034,7 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_overri
|
|||
|
||||
if (G.is_break == false) {
|
||||
BLI_callback_exec(re->main, (ID *)scene, BLI_CB_EVT_RENDER_POST); /* keep after file save */
|
||||
BLI_callback_exec(re->main, (ID *)scene, BLI_CB_EVT_RENDER_WRITE);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -3114,6 +3118,7 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_overri
|
|||
|
||||
if (G.is_break == false) {
|
||||
BLI_callback_exec(re->main, (ID *)scene, BLI_CB_EVT_RENDER_POST); /* keep after file save */
|
||||
BLI_callback_exec(re->main, (ID *)scene, BLI_CB_EVT_RENDER_WRITE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue