[Bf-blender-cvs] [f5e0dfe59c7] master: DNA: initial DNA defaults support

Campbell Barton noreply at git.blender.org
Mon Sep 9 15:18:01 CEST 2019


Commit: f5e0dfe59c7e748907f955f848264751ed0967f0
Author: Campbell Barton
Date:   Mon Sep 9 22:32:34 2019 +1000
Branches: master
https://developer.blender.org/rBf5e0dfe59c7e748907f955f848264751ed0967f0

DNA: initial DNA defaults support

This provides an API to access structs
with their members set to default values:

- DNA_struct_default_get(name)
- DNA_struct_default_alloc(name)

Currently this is only used for scene & view shading initialization,
eventually it can be used for RNA defaults and initializing
DNA struct members on file reading.

===================================================================

M	source/blender/blenkernel/CMakeLists.txt
M	source/blender/blenkernel/intern/scene.c
M	source/blender/blenkernel/intern/screen.c
A	source/blender/makesdna/DNA_defaults.h
A	source/blender/makesdna/DNA_scene_defaults.h
A	source/blender/makesdna/DNA_view3d_defaults.h
M	source/blender/makesdna/intern/CMakeLists.txt
A	source/blender/makesdna/intern/dna_defaults.c

===================================================================

diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt
index a1c47ba6d06..43baa00c5f5 100644
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@ -50,6 +50,8 @@ set(INC
   ../../../intern/opensubdiv
   ../../../extern/curve_fit_nd
   ../../../intern/smoke/extern
+
+  ${CMAKE_CURRENT_BINARY_DIR}/../makesdna/intern
 )
 
 set(INC_SYS
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 8e728150ddf..dbb39184b1e 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -44,6 +44,7 @@
 #include "DNA_workspace_types.h"
 #include "DNA_gpencil_types.h"
 #include "DNA_world_types.h"
+#include "DNA_defaults.h"
 
 #include "BLI_math.h"
 #include "BLI_blenlib.h"
@@ -558,107 +559,20 @@ void BKE_scene_free(Scene *sce)
   BKE_scene_free_ex(sce, true);
 }
 
+/**
+ * \note Use DNA_scene_defaults.h where possible.
+ */
 void BKE_scene_init(Scene *sce)
 {
-  ParticleEditSettings *pset;
-  int a;
   const char *colorspace_name;
   SceneRenderView *srv;
   CurveMapping *mblur_shutter_curve;
 
   BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(sce, id));
 
-  sce->cursor.rotation_mode = ROT_MODE_XYZ;
-  sce->cursor.rotation_quaternion[0] = 1.0f;
-  sce->cursor.rotation_axis[1] = 1.0f;
-
-  sce->r.mode = 0;
-  sce->r.cfra = 1;
-  sce->r.sfra = 1;
-  sce->r.efra = 250;
-  sce->r.frame_step = 1;
-  sce->r.xsch = 1920;
-  sce->r.ysch = 1080;
-  sce->r.xasp = 1;
-  sce->r.yasp = 1;
-  sce->r.tilex = 256;
-  sce->r.tiley = 256;
-  sce->r.size = 100;
-
-  sce->r.im_format.planes = R_IMF_PLANES_RGBA;
-  sce->r.im_format.imtype = R_IMF_IMTYPE_PNG;
-  sce->r.im_format.depth = R_IMF_CHAN_DEPTH_8;
-  sce->r.im_format.quality = 90;
-  sce->r.im_format.compress = 15;
-
-  sce->r.displaymode = R_OUTPUT_WINDOW;
-  sce->r.framapto = 100;
-  sce->r.images = 100;
-  sce->r.framelen = 1.0;
-  sce->r.blurfac = 0.5;
-  sce->r.frs_sec = 24;
-  sce->r.frs_sec_base = 1;
-
-  /* OCIO_TODO: for forwards compatibility only, so if no tonecurve are used,
-   *            images would look in the same way as in current blender
-   *
-   *            perhaps at some point should be completely deprecated?
-   */
-  sce->r.color_mgt_flag |= R_COLOR_MANAGEMENT;
-
-  sce->r.gauss = 1.5;
-  sce->r.dither_intensity = 1.0f;
-
-  sce->r.bake_mode = 0;
-  sce->r.bake_filter = 16;
-  sce->r.bake_flag = R_BAKE_CLEAR;
-  sce->r.bake_samples = 256;
-  sce->r.bake_biasdist = 0.001;
-
-  sce->r.bake.flag = R_BAKE_CLEAR;
-  sce->r.bake.pass_filter = R_BAKE_PASS_FILTER_ALL;
-  sce->r.bake.width = 512;
-  sce->r.bake.height = 512;
-  sce->r.bake.margin = 16;
-  sce->r.bake.normal_space = R_BAKE_SPACE_TANGENT;
-  sce->r.bake.normal_swizzle[0] = R_BAKE_POSX;
-  sce->r.bake.normal_swizzle[1] = R_BAKE_POSY;
-  sce->r.bake.normal_swizzle[2] = R_BAKE_POSZ;
-  BLI_strncpy(sce->r.bake.filepath, U.renderdir, sizeof(sce->r.bake.filepath));
-
-  sce->r.bake.im_format.planes = R_IMF_PLANES_RGBA;
-  sce->r.bake.im_format.imtype = R_IMF_IMTYPE_PNG;
-  sce->r.bake.im_format.depth = R_IMF_CHAN_DEPTH_8;
-  sce->r.bake.im_format.quality = 90;
-  sce->r.bake.im_format.compress = 15;
-
-  sce->r.scemode = R_DOCOMP | R_DOSEQ | R_EXTENSION;
-  sce->r.stamp = R_STAMP_TIME | R_STAMP_FRAME | R_STAMP_DATE | R_STAMP_CAMERA | R_STAMP_SCENE |
-                 R_STAMP_FILENAME | R_STAMP_RENDERTIME | R_STAMP_MEMORY;
-  sce->r.stamp_font_id = 12;
-  sce->r.fg_stamp[0] = sce->r.fg_stamp[1] = sce->r.fg_stamp[2] = 0.8f;
-  sce->r.fg_stamp[3] = 1.0f;
-  sce->r.bg_stamp[0] = sce->r.bg_stamp[1] = sce->r.bg_stamp[2] = 0.0f;
-  sce->r.bg_stamp[3] = 0.25f;
-
-  sce->r.seq_prev_type = OB_SOLID;
-  sce->r.seq_rend_type = OB_SOLID;
-  sce->r.seq_flag = 0;
+  MEMCPY_STRUCT_AFTER(sce, DNA_struct_default_get(Scene), id);
 
-  sce->r.threads = 1;
-
-  sce->r.simplify_subsurf = 6;
-  sce->r.simplify_particles = 1.0f;
-
-  sce->r.border.xmin = 0.0f;
-  sce->r.border.ymin = 0.0f;
-  sce->r.border.xmax = 1.0f;
-  sce->r.border.ymax = 1.0f;
-
-  sce->r.preview_start_resolution = 64;
-
-  sce->r.line_thickness_mode = R_LINE_THICKNESS_ABSOLUTE;
-  sce->r.unit_line_thickness = 1.0f;
+  BLI_strncpy(sce->r.bake.filepath, U.renderdir, sizeof(sce->r.bake.filepath));
 
   mblur_shutter_curve = &sce->r.mblur_shutter_curve;
   BKE_curvemapping_set_defaults(mblur_shutter_curve, 1, 0.0f, 0.0f, 1.0f, 1.0f);
@@ -668,49 +582,10 @@ void BKE_scene_init(Scene *sce)
                      CURVE_PRESET_MAX,
                      CURVEMAP_SLOPE_POS_NEG);
 
-  sce->toolsettings = MEM_callocN(sizeof(struct ToolSettings), "Tool Settings Struct");
-
-  sce->toolsettings->object_flag |= SCE_OBJECT_MODE_LOCK;
-  sce->toolsettings->doublimit = 0.001;
-  sce->toolsettings->vgroup_weight = 1.0f;
-  sce->toolsettings->uvcalc_margin = 0.001f;
-  sce->toolsettings->uvcalc_flag = UVCALC_TRANSFORM_CORRECT;
-  sce->toolsettings->unwrapper = 1;
-  sce->toolsettings->select_thresh = 0.01f;
+  sce->toolsettings = DNA_struct_default_alloc(ToolSettings);
 
-  sce->toolsettings->selectmode = SCE_SELECT_VERTEX;
-  sce->toolsettings->uv_selectmode = UV_SELECT_VERTEX;
   sce->toolsettings->autokey_mode = U.autokey_mode;
 
-  sce->toolsettings->transform_pivot_point = V3D_AROUND_CENTER_MEDIAN;
-  sce->toolsettings->snap_mode = SCE_SNAP_MODE_INCREMENT;
-  sce->toolsettings->snap_node_mode = SCE_SNAP_MODE_GRID;
-  sce->toolsettings->snap_uv_mode = SCE_SNAP_MODE_INCREMENT;
-  sce->toolsettings->snap_transform_mode_flag = SCE_SNAP_TRANSFORM_MODE_TRANSLATE;
-
-  sce->toolsettings->curve_paint_settings.curve_type = CU_BEZIER;
-  sce->toolsettings->curve_paint_settings.flag |= CURVE_PAINT_FLAG_CORNERS_DETECT;
-  sce->toolsettings->curve_paint_settings.error_threshold = 8;
-  sce->toolsettings->curve_paint_settings.radius_max = 1.0f;
-  sce->toolsettings->curve_paint_settings.corner_angle = DEG2RADF(70.0f);
-
-  sce->toolsettings->statvis.overhang_axis = OB_NEGZ;
-  sce->toolsettings->statvis.overhang_min = 0;
-  sce->toolsettings->statvis.overhang_max = DEG2RADF(45.0f);
-  sce->toolsettings->statvis.thickness_max = 0.1f;
-  sce->toolsettings->statvis.thickness_samples = 1;
-  sce->toolsettings->statvis.distort_min = DEG2RADF(5.0f);
-  sce->toolsettings->statvis.distort_max = DEG2RADF(45.0f);
-
-  sce->toolsettings->statvis.sharp_min = DEG2RADF(90.0f);
-  sce->toolsettings->statvis.sharp_max = DEG2RADF(180.0f);
-
-  sce->toolsettings->proportional_size = 1.0f;
-
-  sce->toolsettings->imapaint.paint.flags |= PAINT_SHOW_BRUSH;
-  sce->toolsettings->imapaint.normal_angle = 80;
-  sce->toolsettings->imapaint.seam_bleed = 2;
-
   /* grease pencil multiframe falloff curve */
   sce->toolsettings->gp_sculpt.cur_falloff = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
   CurveMapping *gp_falloff_curve = sce->toolsettings->gp_sculpt.cur_falloff;
@@ -726,50 +601,23 @@ void BKE_scene_init(Scene *sce)
                      CURVE_PRESET_BELL,
                      CURVEMAP_SLOPE_POSITIVE);
 
-  sce->toolsettings->gp_sculpt.guide.spacing = 20.0f;
-
-  sce->physics_settings.gravity[0] = 0.0f;
-  sce->physics_settings.gravity[1] = 0.0f;
-  sce->physics_settings.gravity[2] = -9.81f;
-  sce->physics_settings.flag = PHYS_GLOBAL_GRAVITY;
-
   sce->unit.system = USER_UNIT_METRIC;
   sce->unit.scale_length = 1.0f;
   sce->unit.length_unit = bUnit_GetBaseUnitOfType(USER_UNIT_METRIC, B_UNIT_LENGTH);
   sce->unit.mass_unit = bUnit_GetBaseUnitOfType(USER_UNIT_METRIC, B_UNIT_MASS);
   sce->unit.time_unit = bUnit_GetBaseUnitOfType(USER_UNIT_METRIC, B_UNIT_TIME);
 
-  pset = &sce->toolsettings->particle;
-  pset->flag = PE_KEEP_LENGTHS | PE_LOCK_FIRST | PE_DEFLECT_EMITTER | PE_AUTO_VELOCITY;
-  pset->emitterdist = 0.25f;
-  pset->totrekey = 5;
-  pset->totaddkey = 5;
-  pset->brushtype = PE_BRUSH_COMB;
-  pset->draw_step = 2;
-  pset->fade_frames = 2;
-  pset->selectmode = SCE_SELECT_PATH;
-
-  for (a = 0; a < ARRAY_SIZE(pset->brush); a++) {
-    pset->brush[a].strength = 0.5f;
-    pset->brush[a].size = 50;
-    pset->brush[a].step = 10;
-    pset->brush[a].count = 10;
-  }
-  pset->brush[PE_BRUSH_CUT].strength = 1.0f;
-
-  sce->r.ffcodecdata.audio_mixrate = 48000;
-  sce->r.ffcodecdata.audio_volume = 1.0f;
-  sce->r.ffcodecdata.audio_bitrate = 192;
-  sce->r.ffcodecdata.audio_channels = 2;
+  {
+    ParticleEditSettings *pset;
+    pset = &sce->toolsettings->particle;
+    for (int i = 1; i < ARRAY_SIZE(pset->brush); i++) {
+      pset->brush[i] = pset->brush[0];
+    }
+    pset->brush[PE_BRUSH_CUT].strength = 1.0f;
+  }
 
   BLI_strncpy(sce->r.engine, RE_engine_id_BLENDER_EEVEE, sizeof(sce->r.engine));
 
-  sce->audio.distance_model = 2.0f;
-  sce->audio.doppler_factor = 1.0f;
-  sce->audio.speed_of_sound = 343.3f;
-  sce->audio.volume = 1.0f;
-  sce->audio.flag = AUDIO_SYNC;
-
   BLI_strncpy(sce->r.pic, U.renderdir, sizeof(sce->r.pic));
 
   /* Note; in header_info.c the scene copy happens...,
@@ -806,14 +654,6 @@ void BKE_scene_init(Scene *sce)
   BKE_color_managed_view_settings_init_render(
       &sce->r.bake.im_format.view_settings, &sce->r.bake.im_format.display_settings, "Filmic");
 
-  /* Safe Areas */
-  copy_v2_fl2(sce->safe_areas.title, 10.0f / 100.0f, 5.0f / 100.0f);
-  copy_v2_fl2(sce->safe_areas.action, 3.5f / 100.0f, 3.5f / 100.0f);
-  copy_v2_fl2(sce->safe_areas.title_center, 17.5f / 100.0f, 5.0f / 100.0f);
-  copy_v2_fl2(sce->safe_areas.action_center, 15.0f / 100.0f, 5.0f / 100.0f);
-
-  sce->preview = NULL;
-
   /* GP Sculpt brushes */
   {
     GP_Sculpt_Settings *gset = &sce->toolsettings->gp_sculpt;
@@ -880,16 +720,6 @@ void BKE_scene_init(Scene *sce)
     copy_v3_v3(gp_brush->curcolor_sub, curcolor_sub);
   }
 
-  /* GP Stroke Placement */
-  sce->toolsettings->gpencil_v3d_align = GP_PROJECT_VIEWSPACE;
-  sce->toolsettings->gpencil_v2d_align = GP_PROJECT_VIEWSPACE;
-  sce->toolsettings->gpencil_seq_align = GP_PROJECT_VIEWSPACE;
-  sce->toolsettings->gpencil_ima_align = GP_PROJECT_VIEWSPACE;
-
-  /* Annotations */
-  sce->toolsettings->annotate_v3d_align = GP_PROJECT_VIEWSPACE | GP_PROJECT_CURSOR;
-  sce->toolsettings->annotate_thickness = 3;
-
   for (int i = 0; i < ARRAY_SIZE(sce->orientation_slots); i++) {
     sce->orientation_slots[i].index_custom 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list