Blender V4.3
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
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
129#ifdef DURIAN_CAMERA_SWITCH
130Object *BKE_scene_camera_switch_find(Scene *scene); /* DURIAN_CAMERA_SWITCH */
131#endif
133
134const char *BKE_scene_find_marker_name(const Scene *scene, int frame);
139const char *BKE_scene_find_last_marker_name(const Scene *scene, int frame);
140
141int BKE_scene_frame_snap_by_seconds(Scene *scene, double interval_in_seconds, int frame);
142
146bool BKE_scene_validate_setscene(Main *bmain, Scene *sce);
147
152float BKE_scene_ctime_get(const Scene *scene);
157float BKE_scene_frame_to_ctime(const Scene *scene, int frame);
158
162float BKE_scene_frame_get(const Scene *scene);
166void BKE_scene_frame_set(Scene *scene, float frame);
167
176void BKE_scene_orientation_slot_set_index(TransformOrientationSlot *orient_slot, int orientation);
178int BKE_scene_orientation_get_index(Scene *scene, int slot_index);
180
181/* ** Scene evaluation ** */
182
183void BKE_scene_update_sound(Depsgraph *depsgraph, Main *bmain);
184void BKE_scene_update_tag_audio_volume(Depsgraph *, Scene *scene);
185
186void BKE_scene_graph_update_tagged(Depsgraph *depsgraph, Main *bmain);
187void BKE_scene_graph_evaluated_ensure(Depsgraph *depsgraph, Main *bmain);
188
193void BKE_scene_graph_update_for_newframe_ex(Depsgraph *depsgraph, bool clear_recalc);
194
201void BKE_scene_view_layer_graph_evaluated_ensure(Main *bmain, Scene *scene, ViewLayer *view_layer);
202
206SceneRenderView *BKE_scene_add_render_view(Scene *sce, const char *name);
208
209/* Render profile. */
210
211int get_render_subsurf_level(const RenderData *r, int lvl, bool for_render);
212int get_render_child_particle_number(const RenderData *r, int child_num, bool for_render);
213
216
217bool BKE_scene_uses_blender_eevee(const Scene *scene);
218bool BKE_scene_uses_blender_workbench(const Scene *scene);
219bool BKE_scene_uses_cycles(const Scene *scene);
220
221bool BKE_scene_uses_shader_previews(const Scene *scene);
222
230
231void BKE_scene_copy_data_eevee(Scene *sce_dst, const Scene *sce_src);
232
234bool BKE_scene_check_rigidbody_active(const Scene *scene);
235
236int BKE_scene_num_threads(const Scene *scene);
238
239void BKE_render_resolution(const RenderData *r, const bool use_crop, int *r_width, int *r_height);
241
242/**********************************/
243
248double BKE_scene_unit_scale(const UnitSettings *unit, int unit_type, double value);
249
250/* Multi-view. */
251
260bool BKE_scene_multiview_is_render_view_first(const RenderData *rd, const char *viewname);
264bool BKE_scene_multiview_is_render_view_last(const RenderData *rd, const char *viewname);
267const char *BKE_scene_multiview_render_view_name_get(const RenderData *rd, int view_id);
268int BKE_scene_multiview_view_id_get(const RenderData *rd, const char *viewname);
270 const char *filepath,
271 char *r_filepath);
279 const char *filepath,
280 const char *view,
281 char *r_filepath);
282const char *BKE_scene_multiview_view_suffix_get(const RenderData *rd, const char *viewname);
283const char *BKE_scene_multiview_view_id_suffix_get(const RenderData *rd, int view_id);
285 const char *filepath,
286 char *r_prefix,
287 const char **r_ext);
289 const RenderData *rd, size_t width, size_t height, size_t *r_width, size_t *r_height);
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);
void BKE_render_resolution(const RenderData *r, const bool use_crop, int *r_width, int *r_height)
Definition scene.cc:2877
Scene * BKE_scene_set_name(Main *bmain, const char *name)
Definition scene.cc:2009
int BKE_scene_transform_orientation_get_index(const Scene *scene, const TransformOrientation *orientation)
Definition scene.cc:3491
void BKE_scene_graph_evaluated_ensure(Depsgraph *depsgraph, Main *bmain)
Definition scene.cc:2573
void BKE_scene_disable_color_management(Scene *scene)
Definition scene.cc:2826
bool BKE_scene_uses_cycles(const Scene *scene)
Definition scene.cc:2782
void BKE_scene_copy_data_eevee(Scene *sce_dst, const Scene *sce_src)
Definition scene.cc:1772
float BKE_scene_ctime_get(const Scene *scene)
Definition scene.cc:2317
int get_render_subsurf_level(const RenderData *r, int lvl, bool for_render)
Definition scene.cc:2700
void BKE_scene_undo_depsgraphs_restore(Main *bmain, GHash *depsgraph_extract)
Definition scene.cc:3429
Object * BKE_scene_object_find_by_name(const Scene *scene, const char *name)
Definition scene.cc:1974
int BKE_scene_num_threads(const Scene *scene)
Definition scene.cc:2872
int get_render_child_particle_number(const RenderData *r, int child_num, bool for_render)
Definition scene.cc:2713
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:3259
void BKE_scene_free_view_layer_depsgraph(Scene *scene, ViewLayer *view_layer)
Definition scene.cc:3281
void BKE_toolsettings_free(ToolSettings *toolsettings)
Definition scene.cc:1700
void BKE_scene_graph_update_for_newframe_ex(Depsgraph *depsgraph, bool clear_recalc)
Definition scene.cc:2578
void BKE_scene_free_depsgraph_hash(Scene *scene)
Definition scene.cc:3272
int BKE_scene_multiview_num_views_get(const RenderData *rd)
Definition scene.cc:2928
bool BKE_scene_multiview_is_render_view_active(const RenderData *rd, const SceneRenderView *srv)
Definition scene.cc:2976
int BKE_scene_frame_snap_by_seconds(Scene *scene, double interval_in_seconds, int frame)
Definition scene.cc:2273
TransformOrientationSlot * BKE_scene_orientation_slot_get(Scene *scene, int slot_index)
Definition scene.cc:2347
void BKE_scene_transform_orientation_remove(Scene *scene, TransformOrientation *orientation)
Definition scene.cc:3466
bool BKE_scene_check_rigidbody_active(const Scene *scene)
Definition scene.cc:2844
int BKE_render_preview_pixel_size(const RenderData *r)
Definition scene.cc:2892
void BKE_scene_view_layer_graph_evaluated_ensure(Main *bmain, Scene *scene, ViewLayer *view_layer)
Definition scene.cc:2652
const char * BKE_scene_multiview_view_id_suffix_get(const RenderData *rd, int view_id)
Definition scene.cc:3142
bool BKE_scene_has_view_layer(const Scene *scene, const ViewLayer *layer)
Definition scene.cc:2152
TransformOrientationSlot * BKE_scene_orientation_slot_get_from_flag(Scene *scene, int flag)
Definition scene.cc:2355
int BKE_render_num_threads(const RenderData *r)
Definition scene.cc:2850
void BKE_scene_frame_set(Scene *scene, float frame)
Definition scene.cc:2336
void BKE_scene_multiview_view_prefix_get(Scene *scene, const char *filepath, char *r_prefix, const char **r_ext)
Definition scene.cc:3152
void BKE_scene_remove_rigidbody_object(Main *bmain, Scene *scene, Object *ob, bool free_us)
Definition scene.cc:2283
int BKE_scene_base_iter_next(Depsgraph *depsgraph, SceneBaseIter *iter, Scene **scene, int val, Base **base, Object **ob)
Definition scene.cc:2022
const char * BKE_scene_multiview_view_suffix_get(const RenderData *rd, const char *viewname)
Definition scene.cc:3125
bool BKE_scene_camera_switch_update(Scene *scene)
Definition scene.cc:2213
TransformOrientation * BKE_scene_transform_orientation_find(const Scene *scene, int index)
Definition scene.cc:3486
Depsgraph * BKE_scene_ensure_depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer)
Definition scene.cc:3377
bool BKE_scene_uses_cycles_experimental_features(Scene *scene)
Definition scene.cc:2798
bool BKE_scene_multiview_is_stereo3d(const RenderData *rd)
Definition scene.cc:2959
bool BKE_scene_multiview_is_render_view_first(const RenderData *rd, const char *viewname)
Definition scene.cc:3002
GHash * BKE_scene_undo_depsgraphs_extract(Main *bmain)
Definition scene.cc:3400
ToolSettings * BKE_toolsettings_copy(ToolSettings *toolsettings, int flag)
Definition scene.cc:1628
int BKE_scene_orientation_slot_get_index(const TransformOrientationSlot *orient_slot)
Definition scene.cc:2379
float BKE_scene_frame_get(const Scene *scene)
Definition scene.cc:2331
void BKE_scene_groups_relink(Scene *sce)
Definition scene.cc:1932
bool BKE_scene_can_be_removed(const Main *bmain, const Scene *scene)
Definition scene.cc:1939
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:3183
bool BKE_scene_multiview_is_render_view_last(const RenderData *rd, const char *viewname)
Definition scene.cc:3021
bool BKE_scene_use_spherical_stereo(Scene *scene)
Definition scene.cc:2765
Scene * BKE_scene_duplicate(Main *bmain, Scene *sce, eSceneCopyMethod type)
Definition scene.cc:1778
void BKE_scene_ensure_depsgraph_hash(Scene *scene)
Definition scene.cc:3265
void BKE_scene_update_sound(Depsgraph *depsgraph, Main *bmain)
Definition scene.cc:2458
void BKE_scene_multiview_view_filepath_get(const RenderData *rd, const char *filepath, const char *view, char *r_filepath)
Definition scene.cc:3104
void BKE_scene_update_tag_audio_volume(Depsgraph *, Scene *scene)
Definition scene.cc:2483
bool BKE_scene_uses_shader_previews(const Scene *scene)
Definition scene.cc:2787
SceneRenderView * BKE_scene_multiview_render_view_findindex(const RenderData *rd, int view_id)
Definition scene.cc:3040
int BKE_scene_orientation_get_index_from_flag(Scene *scene, int flag)
Definition scene.cc:2392
bool BKE_scene_validate_setscene(Main *bmain, Scene *sce)
Definition scene.cc:2295
int BKE_scene_multiview_num_videos_get(const RenderData *rd)
Definition scene.cc:3203
Scene * BKE_scene_add(Main *bmain, const char *name)
Definition scene.cc:1954
int BKE_scene_orientation_get_index(Scene *scene, int slot_index)
Definition scene.cc:2386
bool BKE_scene_object_find(Scene *scene, Object *ob)
Definition scene.cc:1963
void BKE_scene_orientation_slot_set_index(TransformOrientationSlot *orient_slot, int orientation)
Definition scene.cc:2372
const char * BKE_scene_find_last_marker_name(const Scene *scene, int frame)
Definition scene.cc:2255
void BKE_scene_graph_update_tagged(Depsgraph *depsgraph, Main *bmain)
Definition scene.cc:2568
bool BKE_scene_use_shading_nodes_custom(Scene *scene)
Definition scene.cc:2759
double BKE_scene_unit_scale(const UnitSettings *unit, int unit_type, double value)
Definition scene.cc:2900
void BKE_scene_multiview_filepath_get(const SceneRenderView *srv, const char *filepath, char *r_filepath)
Definition scene.cc:3096
int BKE_scene_multiview_view_id_get(const RenderData *rd, const char *viewname)
Definition scene.cc:3070
void BKE_scene_graph_update_for_newframe(Depsgraph *depsgraph)
Definition scene.cc:2647
Depsgraph * BKE_scene_get_depsgraph(const Scene *scene, const ViewLayer *view_layer)
Definition scene.cc:3364
void BKE_scene_set_background(Main *bmain, Scene *sce)
Definition scene.cc:1987
void BKE_scene_base_flag_to_objects(const Scene *scene, ViewLayer *view_layer)
Definition scene.cc:2812
bool BKE_scene_remove_render_view(Scene *scene, SceneRenderView *srv)
Definition scene.cc:2678
SceneRenderView * BKE_scene_add_render_view(Scene *sce, const char *name)
Definition scene.cc:2659
Base * _setlooper_base_step(Scene **sce_iter, ViewLayer *view_layer, Base *base)
Definition scene.cc:2726
float BKE_scene_frame_to_ctime(const Scene *scene, int frame)
Definition scene.cc:2322
Scene * BKE_scene_find_from_collection(const Main *bmain, const Collection *collection)
Definition scene.cc:2157
void BKE_scene_object_base_flag_sync_from_base(Base *base)
Definition scene.cc:2820
bool BKE_scene_uses_blender_workbench(const Scene *scene)
Definition scene.cc:2777
const char * BKE_scene_multiview_render_view_name_get(const RenderData *rd, int view_id)
Definition scene.cc:3059
bool BKE_scene_uses_blender_eevee(const Scene *scene)
Definition scene.cc:2771
const char * BKE_scene_find_marker_name(const Scene *scene, int frame)
Definition scene.cc:2228
const Depsgraph * 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
uint8_t flag
Definition wm_window.cc:138