Blender V4.5
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
12struct Base;
13struct Collection;
14struct Depsgraph;
15struct DupliObject;
16struct GHash;
17struct Main;
18struct ListBase;
19struct Object;
20struct RenderData;
21struct Scene;
22struct SceneRenderView;
23struct ToolSettings;
26struct UnitSettings;
27struct ViewLayer;
28
35
37#define SETLOOPER(_sce_basis, _sce_iter, _base) \
38 _sce_iter = _sce_basis, \
39 _base = _setlooper_base_step( \
40 &_sce_iter, BKE_view_layer_context_active_PLACEHOLDER(_sce_basis), NULL); \
41 _base; \
42 _base = _setlooper_base_step(&_sce_iter, NULL, _base)
43
44#define SETLOOPER_VIEW_LAYER(_sce_basis, _view_layer, _sce_iter, _base) \
45 _sce_iter = _sce_basis, _base = _setlooper_base_step(&_sce_iter, _view_layer, NULL); \
46 _base; \
47 _base = _setlooper_base_step(&_sce_iter, NULL, _base)
48
49#define SETLOOPER_SET_ONLY(_sce_basis, _sce_iter, _base) \
50 _sce_iter = _sce_basis, _base = _setlooper_base_step(&_sce_iter, NULL, NULL); \
51 _base; \
52 _base = _setlooper_base_step(&_sce_iter, NULL, _base)
53
60Base *_setlooper_base_step(Scene **sce_iter, ViewLayer *view_layer, Base *base);
61
62Scene *BKE_scene_add(Main *bmain, const char *name);
63
64void BKE_scene_remove_rigidbody_object(Main *bmain, Scene *scene, Object *ob, bool free_us);
65
69bool BKE_scene_object_find(Scene *scene, Object *ob);
70Object *BKE_scene_object_find_by_name(const Scene *scene, const char *name);
71
72/* Scene base iteration function.
73 * Define struct here, so no need to bother with alloc/free it.
74 */
82
88 Depsgraph *depsgraph, SceneBaseIter *iter, Scene **scene, int val, Base **base, Object **ob);
89
90void BKE_scene_base_flag_to_objects(const Scene *scene, ViewLayer *view_layer);
102
109void BKE_scene_set_background(Main *bmain, Scene *sce);
113Scene *BKE_scene_set_name(Main *bmain, const char *name);
114
119void BKE_toolsettings_free(ToolSettings *toolsettings);
120
123
124bool BKE_scene_can_be_removed(const Main *bmain, const Scene *scene);
125
126bool BKE_scene_has_view_layer(const Scene *scene, const ViewLayer *layer);
127Scene *BKE_scene_find_from_collection(const Main *bmain, const Collection *collection);
128
131
132const char *BKE_scene_find_marker_name(const Scene *scene, int frame);
137const char *BKE_scene_find_last_marker_name(const Scene *scene, int frame);
138
139int BKE_scene_frame_snap_by_seconds(Scene *scene, double interval_in_seconds, int frame);
140
144bool BKE_scene_validate_setscene(Main *bmain, Scene *sce);
145
150float BKE_scene_ctime_get(const Scene *scene);
155float BKE_scene_frame_to_ctime(const Scene *scene, int frame);
156
160float BKE_scene_frame_get(const Scene *scene);
164void BKE_scene_frame_set(Scene *scene, float frame);
165
174void BKE_scene_orientation_slot_set_index(TransformOrientationSlot *orient_slot, int orientation);
176int BKE_scene_orientation_get_index(Scene *scene, int slot_index);
178
179/* ** Scene evaluation ** */
180
181void BKE_scene_update_sound(Depsgraph *depsgraph, Main *bmain);
182void BKE_scene_update_tag_audio_volume(Depsgraph *, Scene *scene);
183
184void BKE_scene_graph_update_tagged(Depsgraph *depsgraph, Main *bmain);
185void BKE_scene_graph_evaluated_ensure(Depsgraph *depsgraph, Main *bmain);
186
191void BKE_scene_graph_update_for_newframe_ex(Depsgraph *depsgraph, bool clear_recalc);
192
199void BKE_scene_view_layer_graph_evaluated_ensure(Main *bmain, Scene *scene, ViewLayer *view_layer);
200
204SceneRenderView *BKE_scene_add_render_view(Scene *sce, const char *name);
206
207/* Render profile. */
208
209int get_render_subsurf_level(const RenderData *r, int lvl, bool for_render);
210int get_render_child_particle_number(const RenderData *r, int child_num, bool for_render);
211
214
215bool BKE_scene_uses_blender_eevee(const Scene *scene);
216bool BKE_scene_uses_blender_workbench(const Scene *scene);
217bool BKE_scene_uses_cycles(const Scene *scene);
218
219bool BKE_scene_uses_shader_previews(const Scene *scene);
220
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 RenderData *rd, size_t width, size_t height, size_t *r_width, size_t *r_height);
286void BKE_scene_ppm_get(const RenderData *rd, double r_ppm[2]);
287
288/* depsgraph */
292void BKE_scene_free_view_layer_depsgraph(Scene *scene, ViewLayer *view_layer);
293
297Depsgraph *BKE_scene_get_depsgraph(const Scene *scene, const ViewLayer *view_layer);
301Depsgraph *BKE_scene_ensure_depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer);
302
304void BKE_scene_undo_depsgraphs_restore(Main *bmain, GHash *depsgraph_extract);
305
313 const TransformOrientation *orientation);
void BKE_render_resolution(const RenderData *r, const bool use_crop, int *r_width, int *r_height)
Definition scene.cc:2927
Scene * BKE_scene_set_name(Main *bmain, const char *name)
Definition scene.cc:2065
int BKE_scene_transform_orientation_get_index(const Scene *scene, const TransformOrientation *orientation)
Definition scene.cc:3541
void BKE_scene_graph_evaluated_ensure(Depsgraph *depsgraph, Main *bmain)
Definition scene.cc:2623
void BKE_scene_disable_color_management(Scene *scene)
Definition scene.cc:2876
bool BKE_scene_uses_cycles(const Scene *scene)
Definition scene.cc:2832
void BKE_scene_copy_data_eevee(Scene *sce_dst, const Scene *sce_src)
Definition scene.cc:1819
float BKE_scene_ctime_get(const Scene *scene)
Definition scene.cc:2367
int get_render_subsurf_level(const RenderData *r, int lvl, bool for_render)
Definition scene.cc:2750
void BKE_scene_undo_depsgraphs_restore(Main *bmain, GHash *depsgraph_extract)
Definition scene.cc:3479
Object * BKE_scene_object_find_by_name(const Scene *scene, const char *name)
Definition scene.cc:2030
int BKE_scene_num_threads(const Scene *scene)
Definition scene.cc:2922
int get_render_child_particle_number(const RenderData *r, int child_num, bool for_render)
Definition scene.cc:2763
eSceneCopyMethod
Definition BKE_scene.hh:29
@ SCE_COPY_EMPTY
Definition BKE_scene.hh:31
@ SCE_COPY_NEW
Definition BKE_scene.hh:30
@ SCE_COPY_FULL
Definition BKE_scene.hh:33
@ SCE_COPY_LINK_COLLECTION
Definition BKE_scene.hh:32
void BKE_scene_allocate_depsgraph_hash(Scene *scene)
Definition scene.cc:3309
void BKE_scene_free_view_layer_depsgraph(Scene *scene, ViewLayer *view_layer)
Definition scene.cc:3331
void BKE_toolsettings_free(ToolSettings *toolsettings)
Definition scene.cc:1736
void BKE_scene_graph_update_for_newframe_ex(Depsgraph *depsgraph, bool clear_recalc)
Definition scene.cc:2628
void BKE_scene_free_depsgraph_hash(Scene *scene)
Definition scene.cc:3322
int BKE_scene_multiview_num_views_get(const RenderData *rd)
Definition scene.cc:2952
bool BKE_scene_multiview_is_render_view_active(const RenderData *rd, const SceneRenderView *srv)
Definition scene.cc:3000
int BKE_scene_frame_snap_by_seconds(Scene *scene, double interval_in_seconds, int frame)
Definition scene.cc:2323
Object * BKE_scene_camera_switch_find(Scene *scene)
Definition scene.cc:2226
TransformOrientationSlot * BKE_scene_orientation_slot_get(Scene *scene, int slot_index)
Definition scene.cc:2397
void BKE_scene_transform_orientation_remove(Scene *scene, TransformOrientation *orientation)
Definition scene.cc:3516
bool BKE_scene_check_rigidbody_active(const Scene *scene)
Definition scene.cc:2894
int BKE_render_preview_pixel_size(const RenderData *r)
Definition scene.cc:2942
void BKE_scene_view_layer_graph_evaluated_ensure(Main *bmain, Scene *scene, ViewLayer *view_layer)
Definition scene.cc:2702
const char * BKE_scene_multiview_view_id_suffix_get(const RenderData *rd, int view_id)
Definition scene.cc:3166
bool BKE_scene_has_view_layer(const Scene *scene, const ViewLayer *layer)
Definition scene.cc:2208
TransformOrientationSlot * BKE_scene_orientation_slot_get_from_flag(Scene *scene, int flag)
Definition scene.cc:2405
int BKE_render_num_threads(const RenderData *r)
Definition scene.cc:2900
void BKE_scene_frame_set(Scene *scene, float frame)
Definition scene.cc:2386
void BKE_scene_multiview_view_prefix_get(Scene *scene, const char *filepath, char *r_prefix, const char **r_ext)
Definition scene.cc:3176
void BKE_scene_remove_rigidbody_object(Main *bmain, Scene *scene, Object *ob, bool free_us)
Definition scene.cc:2333
int BKE_scene_base_iter_next(Depsgraph *depsgraph, SceneBaseIter *iter, Scene **scene, int val, Base **base, Object **ob)
Definition scene.cc:2078
const char * BKE_scene_multiview_view_suffix_get(const RenderData *rd, const char *viewname)
Definition scene.cc:3149
bool BKE_scene_camera_switch_update(Scene *scene)
Definition scene.cc:2267
TransformOrientation * BKE_scene_transform_orientation_find(const Scene *scene, int index)
Definition scene.cc:3536
Depsgraph * BKE_scene_ensure_depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer)
Definition scene.cc:3427
bool BKE_scene_uses_cycles_experimental_features(Scene *scene)
Definition scene.cc:2848
bool BKE_scene_multiview_is_stereo3d(const RenderData *rd)
Definition scene.cc:2983
bool BKE_scene_multiview_is_render_view_first(const RenderData *rd, const char *viewname)
Definition scene.cc:3026
GHash * BKE_scene_undo_depsgraphs_extract(Main *bmain)
Definition scene.cc:3450
ToolSettings * BKE_toolsettings_copy(ToolSettings *toolsettings, int flag)
Definition scene.cc:1656
int BKE_scene_orientation_slot_get_index(const TransformOrientationSlot *orient_slot)
Definition scene.cc:2429
float BKE_scene_frame_get(const Scene *scene)
Definition scene.cc:2381
void BKE_scene_groups_relink(Scene *sce)
Definition scene.cc:1988
bool BKE_scene_can_be_removed(const Main *bmain, const Scene *scene)
Definition scene.cc:1995
void BKE_scene_multiview_videos_dimensions_get(const RenderData *rd, size_t width, size_t height, size_t *r_width, size_t *r_height)
Definition scene.cc:3207
bool BKE_scene_multiview_is_render_view_last(const RenderData *rd, const char *viewname)
Definition scene.cc:3045
bool BKE_scene_use_spherical_stereo(Scene *scene)
Definition scene.cc:2815
Scene * BKE_scene_duplicate(Main *bmain, Scene *sce, eSceneCopyMethod type)
Definition scene.cc:1825
void BKE_scene_ensure_depsgraph_hash(Scene *scene)
Definition scene.cc:3315
void BKE_scene_update_sound(Depsgraph *depsgraph, Main *bmain)
Definition scene.cc:2508
void BKE_scene_multiview_view_filepath_get(const RenderData *rd, const char *filepath, const char *view, char *r_filepath)
Definition scene.cc:3128
void BKE_scene_update_tag_audio_volume(Depsgraph *, Scene *scene)
Definition scene.cc:2533
bool BKE_scene_uses_shader_previews(const Scene *scene)
Definition scene.cc:2837
SceneRenderView * BKE_scene_multiview_render_view_findindex(const RenderData *rd, int view_id)
Definition scene.cc:3064
int BKE_scene_orientation_get_index_from_flag(Scene *scene, int flag)
Definition scene.cc:2442
bool BKE_scene_validate_setscene(Main *bmain, Scene *sce)
Definition scene.cc:2345
int BKE_scene_multiview_num_videos_get(const RenderData *rd)
Definition scene.cc:3227
Scene * BKE_scene_add(Main *bmain, const char *name)
Definition scene.cc:2010
int BKE_scene_orientation_get_index(Scene *scene, int slot_index)
Definition scene.cc:2436
bool BKE_scene_object_find(Scene *scene, Object *ob)
Definition scene.cc:2019
void BKE_scene_orientation_slot_set_index(TransformOrientationSlot *orient_slot, int orientation)
Definition scene.cc:2422
const char * BKE_scene_find_last_marker_name(const Scene *scene, int frame)
Definition scene.cc:2305
void BKE_scene_graph_update_tagged(Depsgraph *depsgraph, Main *bmain)
Definition scene.cc:2618
bool BKE_scene_use_shading_nodes_custom(Scene *scene)
Definition scene.cc:2809
void BKE_scene_multiview_filepath_get(const SceneRenderView *srv, const char *filepath, char *r_filepath)
Definition scene.cc:3120
int BKE_scene_multiview_view_id_get(const RenderData *rd, const char *viewname)
Definition scene.cc:3094
void BKE_scene_graph_update_for_newframe(Depsgraph *depsgraph)
Definition scene.cc:2697
Depsgraph * BKE_scene_get_depsgraph(const Scene *scene, const ViewLayer *view_layer)
Definition scene.cc:3414
void BKE_scene_set_background(Main *bmain, Scene *sce)
Definition scene.cc:2043
void BKE_scene_base_flag_to_objects(const Scene *scene, ViewLayer *view_layer)
Definition scene.cc:2862
bool BKE_scene_remove_render_view(Scene *scene, SceneRenderView *srv)
Definition scene.cc:2728
SceneRenderView * BKE_scene_add_render_view(Scene *sce, const char *name)
Definition scene.cc:2709
Base * _setlooper_base_step(Scene **sce_iter, ViewLayer *view_layer, Base *base)
Definition scene.cc:2776
float BKE_scene_frame_to_ctime(const Scene *scene, int frame)
Definition scene.cc:2372
Scene * BKE_scene_find_from_collection(const Main *bmain, const Collection *collection)
Definition scene.cc:2213
void BKE_scene_object_base_flag_sync_from_base(Base *base)
Definition scene.cc:2870
bool BKE_scene_uses_blender_workbench(const Scene *scene)
Definition scene.cc:2827
const char * BKE_scene_multiview_render_view_name_get(const RenderData *rd, int view_id)
Definition scene.cc:3083
bool BKE_scene_uses_blender_eevee(const Scene *scene)
Definition scene.cc:2821
const char * BKE_scene_find_marker_name(const Scene *scene, int frame)
Definition scene.cc:2278
void BKE_scene_ppm_get(const RenderData *rd, double r_ppm[2])
Definition scene.cc:3245
static AppView * view
BPy_StructRNA * depsgraph
float omat[4][4]
Definition BKE_scene.hh:78
DupliObject * dupob
Definition BKE_scene.hh:77
ListBase * duplilist
Definition BKE_scene.hh:76
Object * dupli_refob
Definition BKE_scene.hh:79
char name[64]
uint8_t flag
Definition wm_window.cc:139