Blender V5.0
BKE_scene.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4#pragma once
5
9
10#include "BLI_sys_types.h"
11
12#include "BKE_duplilist.hh"
13
14#include "DNA_userdef_enums.h"
15
16struct Base;
17struct Collection;
18struct Depsgraph;
19struct ImageFormatData;
20struct GHash;
21struct Main;
22struct Object;
23struct RenderData;
24struct Scene;
25struct SceneRenderView;
26struct ToolSettings;
29struct UnitSettings;
30struct ViewLayer;
31
38
40#define SETLOOPER(_sce_basis, _sce_iter, _base) \
41 _sce_iter = _sce_basis, \
42 _base = _setlooper_base_step( \
43 &_sce_iter, BKE_view_layer_context_active_PLACEHOLDER(_sce_basis), NULL); \
44 _base; \
45 _base = _setlooper_base_step(&_sce_iter, NULL, _base)
46
47#define SETLOOPER_VIEW_LAYER(_sce_basis, _view_layer, _sce_iter, _base) \
48 _sce_iter = _sce_basis, _base = _setlooper_base_step(&_sce_iter, _view_layer, NULL); \
49 _base; \
50 _base = _setlooper_base_step(&_sce_iter, NULL, _base)
51
52#define SETLOOPER_SET_ONLY(_sce_basis, _sce_iter, _base) \
53 _sce_iter = _sce_basis, _base = _setlooper_base_step(&_sce_iter, NULL, NULL); \
54 _base; \
55 _base = _setlooper_base_step(&_sce_iter, NULL, _base)
56
63Base *_setlooper_base_step(Scene **sce_iter, ViewLayer *view_layer, Base *base);
64
65Scene *BKE_scene_add(Main *bmain, const char *name);
66
67void BKE_scene_remove_rigidbody_object(Main *bmain, Scene *scene, Object *ob, bool free_us);
68
72bool BKE_scene_object_find(Scene *scene, Object *ob);
73Object *BKE_scene_object_find_by_name(const Scene *scene, const char *name);
74
75/* Scene base iteration function.
76 * Define struct here, so no need to bother with alloc/free it.
77 */
86
92 Depsgraph *depsgraph, SceneBaseIter *iter, Scene **scene, int val, Base **base, Object **ob);
93
94void BKE_scene_base_flag_to_objects(const Scene *scene, ViewLayer *view_layer);
106
113void BKE_scene_set_background(Main *bmain, Scene *sce);
117Scene *BKE_scene_set_name(Main *bmain, const char *name);
118
123void BKE_toolsettings_free(ToolSettings *toolsettings);
124
126 Scene *sce,
127 eSceneCopyMethod type,
128 eDupli_ID_Flags duplicate_flags,
129 /*eLibIDDuplicateFlags*/ uint duplicate_options);
131
132bool BKE_scene_can_be_removed(const Main *bmain, const Scene *scene);
133
134bool BKE_scene_has_view_layer(const Scene *scene, const ViewLayer *layer);
135Scene *BKE_scene_find_from_collection(const Main *bmain, const Collection *collection);
136
139
140const char *BKE_scene_find_marker_name(const Scene *scene, int frame);
145const char *BKE_scene_find_last_marker_name(const Scene *scene, int frame);
146
147float BKE_scene_frame_snap_by_seconds(const Scene *scene, double interval_in_seconds, float frame);
148
152bool BKE_scene_validate_setscene(Main *bmain, Scene *sce);
153
158float BKE_scene_ctime_get(const Scene *scene);
163float BKE_scene_frame_to_ctime(const Scene *scene, int frame);
164
168float BKE_scene_frame_get(const Scene *scene);
172void BKE_scene_frame_set(Scene *scene, float frame);
173
182void BKE_scene_orientation_slot_set_index(TransformOrientationSlot *orient_slot, int orientation);
184int BKE_scene_orientation_get_index(Scene *scene, int slot_index);
186
187/* ** Scene evaluation ** */
188
189void BKE_scene_update_sound(Depsgraph *depsgraph, Main *bmain);
190void BKE_scene_update_tag_audio_volume(Depsgraph *, Scene *scene);
191
192void BKE_scene_graph_update_tagged(Depsgraph *depsgraph, Main *bmain);
193void BKE_scene_graph_evaluated_ensure(Depsgraph *depsgraph, Main *bmain);
194
199void BKE_scene_graph_update_for_newframe_ex(Depsgraph *depsgraph, bool clear_recalc);
200
207void BKE_scene_view_layer_graph_evaluated_ensure(Main *bmain, Scene *scene, ViewLayer *view_layer);
208
214
215/* Render profile. */
216
217int get_render_subsurf_level(const RenderData *r, int lvl, bool for_render);
218int get_render_child_particle_number(const RenderData *r, int child_num, bool for_render);
219
222
223bool BKE_scene_uses_blender_eevee(const Scene *scene);
224bool BKE_scene_uses_blender_workbench(const Scene *scene);
225bool BKE_scene_uses_cycles(const Scene *scene);
226
227bool BKE_scene_uses_shader_previews(const Scene *scene);
228
229void BKE_scene_copy_data_eevee(Scene *sce_dst, const Scene *sce_src);
230
232bool BKE_scene_check_rigidbody_active(const Scene *scene);
233
234int BKE_scene_num_threads(const Scene *scene);
236
237void BKE_render_resolution(const RenderData *r, const bool use_crop, int *r_width, int *r_height);
239
240/**********************************/
241
242/* Multi-view. */
243
252bool BKE_scene_multiview_is_render_view_first(const RenderData *rd, const char *viewname);
256bool BKE_scene_multiview_is_render_view_last(const RenderData *rd, const char *viewname);
259const char *BKE_scene_multiview_render_view_name_get(const RenderData *rd, int view_id);
260int BKE_scene_multiview_view_id_get(const RenderData *rd, const char *viewname);
262 const char *filepath,
263 char *r_filepath);
271 const char *filepath,
272 const char *view,
273 char *r_filepath);
274const char *BKE_scene_multiview_view_suffix_get(const RenderData *rd, const char *viewname);
275const char *BKE_scene_multiview_view_id_suffix_get(const RenderData *rd, int view_id);
277 const char *filepath,
278 char *r_prefix,
279 const char **r_ext);
281 const ImageFormatData *imf,
282 size_t width,
283 size_t height,
284 size_t *r_width,
285 size_t *r_height);
290void BKE_scene_ppm_get(const RenderData *rd, double r_ppm[2]);
291
292/* depsgraph */
296void BKE_scene_free_view_layer_depsgraph(Scene *scene, ViewLayer *view_layer);
297
301Depsgraph *BKE_scene_get_depsgraph(const Scene *scene, const ViewLayer *view_layer);
305Depsgraph *BKE_scene_ensure_depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer);
306
308void BKE_scene_undo_depsgraphs_restore(Main *bmain, GHash *depsgraph_extract);
309
317 const TransformOrientation *orientation);
blender::VectorList< DupliObject > DupliList
void BKE_render_resolution(const RenderData *r, const bool use_crop, int *r_width, int *r_height)
Definition scene.cc:2915
Scene * BKE_scene_set_name(Main *bmain, const char *name)
Definition scene.cc:2056
int BKE_scene_transform_orientation_get_index(const Scene *scene, const TransformOrientation *orientation)
Definition scene.cc:3530
void BKE_scene_graph_evaluated_ensure(Depsgraph *depsgraph, Main *bmain)
Definition scene.cc:2626
void BKE_scene_multiview_videos_dimensions_get(const RenderData *rd, const ImageFormatData *imf, size_t width, size_t height, size_t *r_width, size_t *r_height)
Definition scene.cc:3195
float BKE_scene_frame_snap_by_seconds(const Scene *scene, double interval_in_seconds, float frame)
Definition scene.cc:2321
void BKE_scene_disable_color_management(Scene *scene)
Definition scene.cc:2864
bool BKE_scene_uses_cycles(const Scene *scene)
Definition scene.cc:2834
void BKE_scene_copy_data_eevee(Scene *sce_dst, const Scene *sce_src)
Definition scene.cc:1777
float BKE_scene_ctime_get(const Scene *scene)
Definition scene.cc:2370
int get_render_subsurf_level(const RenderData *r, int lvl, bool for_render)
Definition scene.cc:2753
void BKE_scene_undo_depsgraphs_restore(Main *bmain, GHash *depsgraph_extract)
Definition scene.cc:3468
Object * BKE_scene_object_find_by_name(const Scene *scene, const char *name)
Definition scene.cc:2021
int BKE_scene_num_threads(const Scene *scene)
Definition scene.cc:2910
int get_render_child_particle_number(const RenderData *r, int child_num, bool for_render)
Definition scene.cc:2766
eSceneCopyMethod
Definition BKE_scene.hh:32
@ SCE_COPY_EMPTY
Definition BKE_scene.hh:34
@ SCE_COPY_NEW
Definition BKE_scene.hh:33
@ SCE_COPY_FULL
Definition BKE_scene.hh:36
@ SCE_COPY_LINK_COLLECTION
Definition BKE_scene.hh:35
void BKE_scene_allocate_depsgraph_hash(Scene *scene)
Definition scene.cc:3298
void BKE_scene_free_view_layer_depsgraph(Scene *scene, ViewLayer *view_layer)
Definition scene.cc:3320
void BKE_toolsettings_free(ToolSettings *toolsettings)
Definition scene.cc:1694
void BKE_scene_graph_update_for_newframe_ex(Depsgraph *depsgraph, bool clear_recalc)
Definition scene.cc:2631
void BKE_scene_free_depsgraph_hash(Scene *scene)
Definition scene.cc:3311
int BKE_scene_multiview_num_views_get(const RenderData *rd)
Definition scene.cc:2940
bool BKE_scene_multiview_is_render_view_active(const RenderData *rd, const SceneRenderView *srv)
Definition scene.cc:2988
Object * BKE_scene_camera_switch_find(Scene *scene)
Definition scene.cc:2224
TransformOrientationSlot * BKE_scene_orientation_slot_get(Scene *scene, int slot_index)
Definition scene.cc:2400
void BKE_scene_transform_orientation_remove(Scene *scene, TransformOrientation *orientation)
Definition scene.cc:3505
bool BKE_scene_check_rigidbody_active(const Scene *scene)
Definition scene.cc:2882
int BKE_render_preview_pixel_size(const RenderData *r)
Definition scene.cc:2930
void BKE_scene_view_layer_graph_evaluated_ensure(Main *bmain, Scene *scene, ViewLayer *view_layer)
Definition scene.cc:2705
const char * BKE_scene_multiview_view_id_suffix_get(const RenderData *rd, int view_id)
Definition scene.cc:3154
bool BKE_scene_has_view_layer(const Scene *scene, const ViewLayer *layer)
Definition scene.cc:2206
TransformOrientationSlot * BKE_scene_orientation_slot_get_from_flag(Scene *scene, int flag)
Definition scene.cc:2408
int BKE_render_num_threads(const RenderData *r)
Definition scene.cc:2888
void BKE_scene_frame_set(Scene *scene, float frame)
Definition scene.cc:2389
void BKE_scene_multiview_view_prefix_get(Scene *scene, const char *filepath, char *r_prefix, const char **r_ext)
Definition scene.cc:3164
void BKE_scene_remove_rigidbody_object(Main *bmain, Scene *scene, Object *ob, bool free_us)
Definition scene.cc:2336
int BKE_scene_base_iter_next(Depsgraph *depsgraph, SceneBaseIter *iter, Scene **scene, int val, Base **base, Object **ob)
Definition scene.cc:2069
const char * BKE_scene_multiview_view_suffix_get(const RenderData *rd, const char *viewname)
Definition scene.cc:3137
bool BKE_scene_camera_switch_update(Scene *scene)
Definition scene.cc:2265
TransformOrientation * BKE_scene_transform_orientation_find(const Scene *scene, int index)
Definition scene.cc:3525
Depsgraph * BKE_scene_ensure_depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer)
Definition scene.cc:3416
bool BKE_scene_multiview_is_stereo3d(const RenderData *rd)
Definition scene.cc:2971
bool BKE_scene_multiview_is_render_view_first(const RenderData *rd, const char *viewname)
Definition scene.cc:3014
GHash * BKE_scene_undo_depsgraphs_extract(Main *bmain)
Definition scene.cc:3439
ToolSettings * BKE_toolsettings_copy(ToolSettings *toolsettings, int flag)
Definition scene.cc:1611
int BKE_scene_orientation_slot_get_index(const TransformOrientationSlot *orient_slot)
Definition scene.cc:2432
float BKE_scene_frame_get(const Scene *scene)
Definition scene.cc:2384
void BKE_scene_groups_relink(Scene *sce)
Definition scene.cc:1979
bool BKE_scene_can_be_removed(const Main *bmain, const Scene *scene)
Definition scene.cc:1986
int BKE_scene_multiview_num_videos_get(const RenderData *rd, const ImageFormatData *imf)
Definition scene.cc:3216
bool BKE_scene_multiview_is_render_view_last(const RenderData *rd, const char *viewname)
Definition scene.cc:3033
bool BKE_scene_use_spherical_stereo(Scene *scene)
Definition scene.cc:2818
void BKE_scene_ensure_depsgraph_hash(Scene *scene)
Definition scene.cc:3304
void BKE_scene_update_sound(Depsgraph *depsgraph, Main *bmain)
Definition scene.cc:2511
void BKE_scene_multiview_view_filepath_get(const RenderData *rd, const char *filepath, const char *view, char *r_filepath)
Definition scene.cc:3116
void BKE_scene_update_tag_audio_volume(Depsgraph *, Scene *scene)
Definition scene.cc:2536
bool BKE_scene_uses_shader_previews(const Scene *scene)
Definition scene.cc:2839
SceneRenderView * BKE_scene_multiview_render_view_findindex(const RenderData *rd, int view_id)
Definition scene.cc:3052
int BKE_scene_orientation_get_index_from_flag(Scene *scene, int flag)
Definition scene.cc:2445
bool BKE_scene_validate_setscene(Main *bmain, Scene *sce)
Definition scene.cc:2348
Scene * BKE_scene_add(Main *bmain, const char *name)
Definition scene.cc:2001
int BKE_scene_orientation_get_index(Scene *scene, int slot_index)
Definition scene.cc:2439
bool BKE_scene_object_find(Scene *scene, Object *ob)
Definition scene.cc:2010
void BKE_scene_orientation_slot_set_index(TransformOrientationSlot *orient_slot, int orientation)
Definition scene.cc:2425
Scene * BKE_scene_duplicate(Main *bmain, Scene *sce, eSceneCopyMethod type, eDupli_ID_Flags duplicate_flags, uint duplicate_options)
Definition scene.cc:1783
const char * BKE_scene_find_last_marker_name(const Scene *scene, int frame)
Definition scene.cc:2303
void BKE_scene_graph_update_tagged(Depsgraph *depsgraph, Main *bmain)
Definition scene.cc:2621
bool BKE_scene_use_shading_nodes_custom(Scene *scene)
Definition scene.cc:2812
void BKE_scene_multiview_filepath_get(const SceneRenderView *srv, const char *filepath, char *r_filepath)
Definition scene.cc:3108
int BKE_scene_multiview_view_id_get(const RenderData *rd, const char *viewname)
Definition scene.cc:3082
void BKE_scene_graph_update_for_newframe(Depsgraph *depsgraph)
Definition scene.cc:2700
Depsgraph * BKE_scene_get_depsgraph(const Scene *scene, const ViewLayer *view_layer)
Definition scene.cc:3403
void BKE_scene_set_background(Main *bmain, Scene *sce)
Definition scene.cc:2034
void BKE_scene_base_flag_to_objects(const Scene *scene, ViewLayer *view_layer)
Definition scene.cc:2850
bool BKE_scene_remove_render_view(Scene *scene, SceneRenderView *srv)
Definition scene.cc:2731
SceneRenderView * BKE_scene_add_render_view(Scene *sce, const char *name)
Definition scene.cc:2712
Base * _setlooper_base_step(Scene **sce_iter, ViewLayer *view_layer, Base *base)
Definition scene.cc:2779
float BKE_scene_frame_to_ctime(const Scene *scene, int frame)
Definition scene.cc:2375
Scene * BKE_scene_find_from_collection(const Main *bmain, const Collection *collection)
Definition scene.cc:2211
void BKE_scene_object_base_flag_sync_from_base(Base *base)
Definition scene.cc:2858
bool BKE_scene_uses_blender_workbench(const Scene *scene)
Definition scene.cc:2829
const char * BKE_scene_multiview_render_view_name_get(const RenderData *rd, int view_id)
Definition scene.cc:3071
bool BKE_scene_uses_blender_eevee(const Scene *scene)
Definition scene.cc:2824
const char * BKE_scene_find_marker_name(const Scene *scene, int frame)
Definition scene.cc:2276
void BKE_scene_ppm_get(const RenderData *rd, double r_ppm[2])
Definition scene.cc:3234
unsigned int uint
eDupli_ID_Flags
static AppView * view
BPy_StructRNA * depsgraph
const char * name
float omat[4][4]
Definition BKE_scene.hh:82
DupliList duplilist
Definition BKE_scene.hh:79
DupliObject * dupob
Definition BKE_scene.hh:80
Object * dupli_refob
Definition BKE_scene.hh:83
uint8_t flag
Definition wm_window.cc:145