Blender  V2.93
DNA_modifier_defaults.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  */
16 
21 #pragma once
22 
23 /* Struct members on own line. */
24 /* clang-format off */
25 
26 #define _DNA_DEFAULT_ArmatureModifierData \
27  { \
28  .deformflag = ARM_DEF_VGROUP, \
29  .multi = 0.0f, \
30  .object = NULL, \
31  .defgrp_name = "", \
32  }
33 
34 /* Default to 2 duplicates distributed along the x-axis by an offset of 1 object width. */
35 #define _DNA_DEFAULT_ArrayModifierData \
36  { \
37  .start_cap = NULL, \
38  .end_cap = NULL, \
39  .curve_ob = NULL, \
40  .offset_ob = NULL, \
41  .offset = {1.0f, 0.0f, 0.0f}, \
42  .scale = {1.0f, 0.0f, 0.0f}, \
43  .length = 0.0f, \
44  .merge_dist = 0.01f, \
45  .fit_type = MOD_ARR_FIXEDCOUNT, \
46  .offset_type = MOD_ARR_OFF_RELATIVE, \
47  .flags = 0, \
48  .count = 2, \
49  .uv_offset = {0.0f, 0.0f}, \
50  }
51 
52 #define _DNA_DEFAULT_BevelModifierData \
53  { \
54  .value = 0.1f, \
55  .res = 1, \
56  .flags = 0, \
57  .val_flags = MOD_BEVEL_AMT_OFFSET, \
58  .profile_type = MOD_BEVEL_PROFILE_SUPERELLIPSE, \
59  .lim_flags = MOD_BEVEL_ANGLE, \
60  .e_flags = 0, \
61  .mat = -1, \
62  .edge_flags = 0, \
63  .face_str_mode = MOD_BEVEL_FACE_STRENGTH_NONE, \
64  .miter_inner = MOD_BEVEL_MITER_SHARP, \
65  .miter_outer = MOD_BEVEL_MITER_SHARP, \
66  .affect_type = MOD_BEVEL_AFFECT_EDGES, \
67  .profile = 0.5f, \
68  .bevel_angle = DEG2RADF(30.0f), \
69  .spread = 0.1f, \
70  .defgrp_name = "", \
71  }
72 
73 #define _DNA_DEFAULT_BooleanModifierData \
74  { \
75  .object = NULL, \
76  .collection = NULL, \
77  .double_threshold = 1e-6f, \
78  .operation = eBooleanModifierOp_Difference, \
79  .solver = eBooleanModifierSolver_Exact, \
80  .flag = eBooleanModifierFlag_Object, \
81  .bm_flag = 0, \
82  }
83 
84 #define _DNA_DEFAULT_BuildModifierData \
85  { \
86  .start = 1.0f, \
87  .length = 100.0f, \
88  .flag = 0, \
89  .randomize = 0, \
90  .seed = 0, \
91  }
92 
93 #define _DNA_DEFAULT_CastModifierData \
94  { \
95  .object = NULL, \
96  .fac = 0.5f, \
97  .radius = 0.0f, \
98  .size = 0.0f, \
99  .defgrp_name = "", \
100  .flag = MOD_CAST_X | MOD_CAST_Y | MOD_CAST_Z | MOD_CAST_SIZE_FROM_RADIUS, \
101  .type = MOD_CAST_TYPE_SPHERE, \
102  }
103 
104 #define _DNA_DEFAULT_ClothSimSettings \
105  { \
106  .cache = NULL, \
107  .mingoal = 0.0f, \
108  .Cvi = 1.0f, \
109  .gravity = {0.0f, 0.0f, -9.81f}, \
110  .dt = 0.0f, \
111  .mass = 0.3f, \
112  .shear = 5.0f, \
113  .bending = 0.5f, \
114  .max_bend = 0.5f, \
115  .max_shear = 5.0f, \
116  .max_sewing = 0.0f, \
117  .avg_spring_len = 0.0f, \
118  .timescale = 1.0f, \
119  .time_scale = 1.0f, \
120  .maxgoal = 1.0f, \
121  .eff_force_scale = 1000.0f, \
122  .eff_wind_scale = 250.0f, \
123  .sim_time_old = 0.0f, \
124  .defgoal = 0.0f, \
125  .goalspring = 1.0f, \
126  .goalfrict = 0.0f, \
127  .velocity_smooth = 0.0f, \
128  .density_target = 0.0f, \
129  .density_strength = 0.0f, \
130  .collider_friction = 0.0f, \
131  .shrink_min = 0.0f, \
132  .shrink_max = 0.0f, \
133  .uniform_pressure_force = 0.0f, \
134  .target_volume = 0.0f, \
135  .pressure_factor = 1.0f, \
136  .fluid_density = 0.0f, \
137  .vgroup_pressure = 0, \
138  .bending_damping = 0.5f, \
139  .voxel_cell_size = 0.1f, \
140  .stepsPerFrame = 5, \
141  .flags = CLOTH_SIMSETTINGS_FLAG_INTERNAL_SPRINGS_NORMAL, \
142  .maxspringlen = 10, \
143  .solver_type = 0, \
144  .vgroup_bend = 0, \
145  .vgroup_mass = 0, \
146  .vgroup_struct = 0, \
147  .vgroup_shrink = 0, \
148  .shapekey_rest = 0, \
149  .presets = 2, \
150  .reset = 0, \
151  .effector_weights = NULL, \
152  .bending_model = CLOTH_BENDING_ANGULAR, \
153  .vgroup_shear = 0, \
154  .tension = 15.0f , \
155  .compression = 15.0f, \
156  .max_tension = 15.0f, \
157  .max_compression = 15.0f, \
158  .tension_damp = 5.0f, \
159  .compression_damp = 5.0f, \
160  .shear_damp = 5.0f, \
161  .internal_spring_max_length = 0.0f, \
162  .internal_spring_max_diversion = M_PI / 4.0f, \
163  .vgroup_intern = 0, \
164  .internal_tension = 15.0f, \
165  .internal_compression = 15.0f, \
166  .max_internal_tension = 15.0f, \
167  .max_internal_compression = 15.0f, \
168  }
169 
170 #define _DNA_DEFAULT_ClothCollSettings \
171  { \
172  .collision_list = NULL, \
173  .epsilon = 0.015f, \
174  .self_friction = 5.0f, \
175  .friction = 5.0f, \
176  .damping = 0.0f, \
177  .selfepsilon = 0.015f, \
178  .flags = CLOTH_COLLSETTINGS_FLAG_ENABLED, \
179  .loop_count = 2, \
180  .group = NULL, \
181  .vgroup_selfcol = 0, \
182  .vgroup_objcol = 0, \
183  .clamp = 0.0f, \
184  .self_clamp = 0.0f, \
185  }
186 
187 #define _DNA_DEFAULT_ClothModifierData \
188  { \
189  .clothObject = NULL, \
190  .sim_parms = NULL, \
191  .coll_parms = NULL, \
192  .point_cache = NULL, \
193  .ptcaches = {NULL, NULL}, \
194  .hairdata = NULL, \
195  .hair_grid_min = {0.0f, 0.0f, 0.0f}, \
196  .hair_grid_max = {0.0f, 0.0f, 0.0f}, \
197  .hair_grid_res = {0, 0, 0}, \
198  .hair_grid_cellsize = 0.0f, \
199  .solver_result = NULL, \
200  }
201 
202 #define _DNA_DEFAULT_CollisionModifierData \
203  { \
204  .x = NULL, \
205  .xnew = NULL, \
206  .xold = NULL, \
207  .current_xnew = NULL, \
208  .current_x = NULL, \
209  .current_v = NULL, \
210  .tri = NULL, \
211  .mvert_num = 0, \
212  .tri_num = 0, \
213  .time_x = -1000.0f, \
214  .time_xnew = -1000.0f, \
215  .is_static = false, \
216  .bvhtree = NULL, \
217  }
218 
219 #define _DNA_DEFAULT_CorrectiveSmoothModifierData \
220  { \
221  .bind_coords = NULL, \
222  .bind_coords_num = 0, \
223  .lambda = 0.5f, \
224  .scale = 1.0f, \
225  .repeat = 5, \
226  .flag = 0, \
227  .smooth_type = MOD_CORRECTIVESMOOTH_SMOOTH_SIMPLE, \
228  .defgrp_name = "", \
229  }
230 
231 #define _DNA_DEFAULT_CurveModifierData \
232  { \
233  .object = NULL, \
234  .name = "", \
235  .defaxis = MOD_CURVE_POSX, \
236  .flag = 0, \
237  }
238 
239 /* Defines are scattered across too many files, they need to be moved to DNA. */
240 #if 0
241 #define _DNA_DEFAULT_DataTransferModifierData \
242  { \
243  .ob_source = NULL, \
244  .data_types = 0, \
245  .vmap_mode = MREMAP_MODE_VERT_NEAREST, \
246  .emap_mode = MREMAP_MODE_EDGE_NEAREST, \
247  .lmap_mode = MREMAP_MODE_LOOP_NEAREST_POLYNOR, \
248  .pmap_mode = MREMAP_MODE_POLY_NEAREST, \
249  .map_max_distance = 1.0f, \
250  .map_ray_radius = 0.0f, \
251  .islands_precision = 0.0f, \
252  .layers_select_src = {DT_LAYERS_ALL_SRC, DT_LAYERS_ALL_SRC, DT_LAYERS_ALL_SRC, DT_LAYERS_ALL_SRC}, \
253  .layers_select_dst = {DT_LAYERS_NAME_DST, DT_LAYERS_NAME_DST, DT_LAYERS_NAME_DST, DT_LAYERS_NAME_DST}, \
254  .mix_mod = CDT_MIX_TRANSFER, \
255  .mix_factor = 1.0f, \
256  .defgrp_name = "", \
257  .flags = MOD_DATATRANSFER_OBSRC_TRANSFORM, \
258  }
259 #endif
260 
261 #define _DNA_DEFAULT_DecimateModifierData \
262  { \
263  .percent = 1.0f, \
264  .iter = 0, \
265  .delimit = 0, \
266  .symmetry_axis = 0, \
267  .angle = DEG2RADF(5.0f), \
268  .defgrp_name = "", \
269  .defgrp_factor = 1.0f, \
270  .flag = 0, \
271  .mode = 0, \
272  .face_count = 0, \
273  }
274 
275 #define _DNA_DEFAULT_DisplaceModifierData \
276  { \
277  .texture = NULL, \
278  .map_object = NULL, \
279  .map_bone = "", \
280  .uvlayer_name = "", \
281  .uvlayer_tmp = 0, \
282  .texmapping = 0, \
283  .strength = 1.0f, \
284  .direction = MOD_DISP_DIR_NOR, \
285  .defgrp_name = "", \
286  .midlevel = 0.5f, \
287  .space = MOD_DISP_SPACE_LOCAL, \
288  .flag = 0, \
289  }
290 
291 #define _DNA_DEFAULT_DynamicPaintModifierData \
292  { \
293  .canvas = NULL, \
294  .brush = NULL, \
295  .type = MOD_DYNAMICPAINT_TYPE_CANVAS, \
296  }
297 
298 /* Default to 30-degree split angle, sharpness from both angle & flag. */
299 #define _DNA_DEFAULT_EdgeSplitModifierData \
300  { \
301  .split_angle = DEG2RADF(30.0f), \
302  .flags = MOD_EDGESPLIT_FROMANGLE | MOD_EDGESPLIT_FROMFLAG, \
303  }
304 
305 #define _DNA_DEFAULT_ExplodeModifierData \
306  { \
307  .facepa = NULL, \
308  .flag = eExplodeFlag_Unborn | eExplodeFlag_Alive | eExplodeFlag_Dead, \
309  .vgroup = 0, \
310  .protect = 0.0f, \
311  .uvname = "", \
312  }
313 
314 /* Fluid modifier settings skipped for now. */
315 
316 #define _DNA_DEFAULT_HookModifierData \
317  { \
318  .subtarget = "", \
319  .flag = 0, \
320  .falloff_type = eHook_Falloff_Smooth, \
321  .parentinv = _DNA_DEFAULT_UNIT_M4, \
322  .cent = {0.0f, 0.0f, 0.0f}, \
323  .falloff = 0.0f, \
324  .curfalloff = NULL, \
325  .indexar = NULL, \
326  .totindex = 0, \
327  .force = 1.0f, \
328  .name = "", \
329  }
330 
331 #define _DNA_DEFAULT_LaplacianDeformModifierData \
332  { \
333  .anchor_grp_name = "", \
334  .total_verts = 0, \
335  .repeat = 1, \
336  .vertexco = NULL, \
337  .cache_system = NULL, \
338  .flag = 0, \
339  }
340 
341 #define _DNA_DEFAULT_LaplacianSmoothModifierData \
342  { \
343  .lambda = 0.01f, \
344  .lambda_border = 0.01f, \
345  .defgrp_name = "", \
346  .flag = MOD_LAPLACIANSMOOTH_X | MOD_LAPLACIANSMOOTH_Y | MOD_LAPLACIANSMOOTH_Z | \
347  MOD_LAPLACIANSMOOTH_PRESERVE_VOLUME | MOD_LAPLACIANSMOOTH_NORMALIZED, \
348  .repeat = 1, \
349  }
350 
351 #define _DNA_DEFAULT_LatticeModifierData \
352  { \
353  .object = NULL, \
354  .name = "", \
355  .strength = 1.0f, \
356  .flag = 0, \
357  }
358 
359 #define _DNA_DEFAULT_MaskModifierData \
360  { \
361  .ob_arm = NULL, \
362  .vgroup = "", \
363  .mode = 0, \
364  .flag = 0, \
365  .threshold = 0.0f, \
366  }
367 
368 /* Y and Z forward and up axes, Blender default. */
369 #define _DNA_DEFAULT_MeshCacheModifierData \
370  { \
371  .flag = 0, \
372  .type = MOD_MESHCACHE_TYPE_MDD, \
373  .time_mode = 0, \
374  .play_mode = 0, \
375  .forward_axis = 1, \
376  .up_axis = 2, \
377  .flip_axis = 0, \
378  .interp = MOD_MESHCACHE_INTERP_LINEAR, \
379  .factor = 1.0f, \
380  .deform_mode = 0.0f, \
381  .frame_start = 0.0f, \
382  .frame_scale = 1.0f, \
383  .eval_frame = 0.0f, \
384  .eval_time = 0.0f, \
385  .eval_factor = 0.0f, \
386  .filepath = "", \
387  }
388 
389 #define _DNA_DEFAULT_MeshDeformModifierData \
390  { \
391  .object = 0, \
392  .defgrp_name = "", \
393  .gridsize = 5, \
394  .flag = 0, \
395  .bindinfluences = NULL, \
396  .bindoffsets = NULL, \
397  .bindcagecos = NULL, \
398  .totvert = 0, \
399  .totcagevert = 0, \
400  .dyngrid = NULL, \
401  .dyninfluences = NULL, \
402  .dynverts = NULL, \
403  .dyngridsize = 0, \
404  .totinfluence = 0, \
405  .dyncellmin = {0.0f, 0.0f, 0.0f}, \
406  .dyncellwidth = 0.0f, \
407  .bindmat = _DNA_DEFAULT_UNIT_M4, \
408  .bindweights = NULL, \
409  .bindcos = NULL, \
410  .bindfunc = NULL, \
411  }
412 
413 #define _DNA_DEFAULT_MeshSeqCacheModifierData \
414  { \
415  .cache_file = NULL, \
416  .object_path = "", \
417  .read_flag = MOD_MESHSEQ_READ_VERT | MOD_MESHSEQ_READ_POLY | MOD_MESHSEQ_READ_UV | \
418  MOD_MESHSEQ_READ_COLOR | MOD_MESHSEQ_INTERPOLATE_VERTICES, \
419  .velocity_scale = 1.0f, \
420  .reader = NULL, \
421  .reader_object_path = "", \
422  .vertex_velocities = NULL, \
423  .num_vertices = 0, \
424  .velocity_delta = 0.0f, \
425  .last_lookup_time = 0.0f, \
426  }
427 
428 #define _DNA_DEFAULT_MirrorModifierData \
429  { \
430  .flag = MOD_MIR_AXIS_X | MOD_MIR_VGROUP, \
431  .tolerance = 0.001f, \
432  .bisect_threshold = 0.001f, \
433  .uv_offset = {0.0f, 0.0f}, \
434  .uv_offset_copy = {0.0f, 0.0f}, \
435  .mirror_ob = NULL, \
436  }
437 
438 #define _DNA_DEFAULT_MultiresModifierData \
439  { \
440  .lvl = 0, \
441  .sculptlvl = 0, \
442  .renderlvl = 0, \
443  .totlvl = 0, \
444  .flags = eMultiresModifierFlag_UseCrease | eMultiresModifierFlag_ControlEdges, \
445  .uv_smooth = SUBSURF_UV_SMOOTH_PRESERVE_BOUNDARIES, \
446  .quality = 4, \
447  .boundary_smooth = SUBSURF_BOUNDARY_SMOOTH_ALL, \
448  }
449 
450 #define _DNA_DEFAULT_NormalEditModifierData \
451  { \
452  .defgrp_name = "", \
453  .target = NULL, \
454  .mode = MOD_NORMALEDIT_MODE_RADIAL, \
455  .flag = 0, \
456  .mix_mode = MOD_NORMALEDIT_MIX_COPY, \
457  .mix_factor = 1.0f, \
458  .mix_limit = M_PI, \
459  .offset = {0.0f, 0.0f, 0.0f}, \
460  }
461 
462 /* Some fields are initialized in #initData. */
463 #define _DNA_DEFAULT_OceanModifierData \
464  { \
465  .ocean = NULL, \
466  .oceancache = NULL, \
467  .resolution = 7, \
468  .viewport_resolution = 7, \
469  .spatial_size = 50, \
470  .wind_velocity = 30.0f, \
471  .damp = 0.5f, \
472  .smallest_wave = 0.01f, \
473  .depth = 200.0f, \
474  .wave_alignment = 0.0f, \
475  .wave_direction = 0.0f, \
476  .wave_scale = 1.0f, \
477  .chop_amount = 1.0f, \
478  .foam_coverage = 0.0f, \
479  .time = 1.0f, \
480  .spectrum = MOD_OCEAN_SPECTRUM_PHILLIPS, \
481  .fetch_jonswap = 120.0f, \
482  .sharpen_peak_jonswap = 0.0f, \
483  .bakestart = 1, \
484  .bakeend = 250, \
485  .cachepath = "", \
486  .foamlayername = "", \
487  .spraylayername = "", \
488  .cached = 0, \
489  .geometry_mode = 0, \
490  .flag = 0, \
491  .repeat_x = 1, \
492  .repeat_y = 1, \
493  .seed = 0, \
494  .size = 1.0f, \
495  .foam_fade = 0.98f, \
496  }
497 
498 #define _DNA_DEFAULT_ParticleInstanceModifierData \
499  { \
500  .psys = 1, \
501  .flag = eParticleInstanceFlag_Parents | eParticleInstanceFlag_Unborn | \
502  eParticleInstanceFlag_Alive | eParticleInstanceFlag_Dead, \
503  .axis = 2, \
504  .space = eParticleInstanceSpace_World, \
505  .position = 1.0f, \
506  .random_position = 0.0f, \
507  .rotation = 0.0f, \
508  .random_rotation = 0.0f, \
509  .particle_offset = 0.0f, \
510  .particle_amount = 1.0f, \
511  .index_layer_name = "", \
512  .value_layer_name = "", \
513  }
514 
515 #define _DNA_DEFAULT_ParticleSystemModifierData \
516  { \
517  .psys = NULL, \
518  .mesh_final = NULL, \
519  .mesh_original = NULL, \
520  .totdmvert = 0, \
521  .totdmedge = 0, \
522  .totdmface = 0, \
523  .flag = 0, \
524  }
525 
526 #define _DNA_DEFAULT_RemeshModifierData \
527  { \
528  .threshold = 1.0f, \
529  .scale = 0.9f, \
530  .hermite_num = 1.0f, \
531  .depth = 4, \
532  .flag = MOD_REMESH_FLOOD_FILL, \
533  .mode = MOD_REMESH_VOXEL, \
534  .voxel_size = 0.1f, \
535  .adaptivity = 0.0f, \
536  }
537 
538 #define _DNA_DEFAULT_ScrewModifierData \
539  { \
540  .ob_axis = NULL, \
541  .steps = 16, \
542  .render_steps = 16, \
543  .iter = 1, \
544  .screw_ofs = 0.0f, \
545  .angle = 2.0f * M_PI, \
546  .merge_dist = 0.01f, \
547  .flag = MOD_SCREW_SMOOTH_SHADING, \
548  .axis = 2, \
549  }
550 
551 /* Shape key modifier has no items. */
552 
553 #define _DNA_DEFAULT_ShrinkwrapModifierData \
554  { \
555  .target = NULL, \
556  .auxTarget = NULL, \
557  .vgroup_name = "", \
558  .keepDist = 0.0f, \
559  .shrinkType = MOD_SHRINKWRAP_NEAREST_SURFACE, \
560  .shrinkOpts = MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR, \
561  .shrinkMode = 0, \
562  .projLimit = 0.0f, \
563  .projAxis = 0, \
564  .subsurfLevels = 0, \
565  }
566 
567 #define _DNA_DEFAULT_SimpleDeformModifierData \
568  { \
569  .origin = NULL, \
570  .vgroup_name = "", \
571  .factor = DEG2RADF(45.0f), \
572  .limit = {0.0f, 1.0f}, \
573  .mode = MOD_SIMPLEDEFORM_MODE_TWIST, \
574  .axis = 0, \
575  .deform_axis = 0, \
576  .flag = 0, \
577  }
578 
579 #define _DNA_DEFAULT_NodesModifierData \
580  { 0 }
581 
582 #define _DNA_DEFAULT_SkinModifierData \
583  { \
584  .branch_smoothing = 0.0f, \
585  .flag = 0, \
586  .symmetry_axes = MOD_SKIN_SYMM_X, \
587  }
588 
589 #define _DNA_DEFAULT_SmoothModifierData \
590  { \
591  .fac = 0.5f, \
592  .repeat = 1, \
593  .defgrp_name = "", \
594  .flag = MOD_SMOOTH_X | MOD_SMOOTH_Y | MOD_SMOOTH_Z, \
595  }
596 
597 /* Softbody modifier skipped for now. */
598 
599 #define _DNA_DEFAULT_SolidifyModifierData \
600  { \
601  .defgrp_name = "", \
602  .shell_defgrp_name = "", \
603  .rim_defgrp_name = "", \
604  .offset = 0.01f, \
605  .offset_fac = -1.0f, \
606  .offset_fac_vg = 0.0f, \
607  .offset_clamp = 0.0f, \
608  .mode = MOD_SOLIDIFY_MODE_EXTRUDE, \
609  .nonmanifold_offset_mode = MOD_SOLIDIFY_NONMANIFOLD_OFFSET_MODE_CONSTRAINTS, \
610  .nonmanifold_boundary_mode = MOD_SOLIDIFY_NONMANIFOLD_BOUNDARY_MODE_NONE, \
611  .crease_inner = 0.0f, \
612  .crease_outer = 0.0f, \
613  .crease_rim = 0.0f, \
614  .flag = MOD_SOLIDIFY_RIM, \
615  .mat_ofs = 0, \
616  .mat_ofs_rim = 0, \
617  .merge_tolerance = 0.0001f, \
618  .bevel_convex = 0.0f, \
619  }
620 
621 #define _DNA_DEFAULT_SubsurfModifierData \
622  { \
623  .subdivType = 0, \
624  .levels = 1, \
625  .renderLevels = 2, \
626  .flags = eSubsurfModifierFlag_UseCrease | eSubsurfModifierFlag_ControlEdges, \
627  .uv_smooth = SUBSURF_UV_SMOOTH_PRESERVE_BOUNDARIES, \
628  .quality = 3, \
629  .boundary_smooth = SUBSURF_BOUNDARY_SMOOTH_ALL, \
630  .emCache = NULL, \
631  .mCache = NULL, \
632  }
633 
634 #define _DNA_DEFAULT_SurfaceModifierData \
635  { \
636  .x = NULL, \
637  .v = NULL, \
638  .mesh = NULL, \
639  .bvhtree = NULL, \
640  .cfra = 0, \
641  .numverts = 0, \
642  }
643 
644 #define _DNA_DEFAULT_SurfaceDeformModifierData \
645  { \
646  .depsgraph = NULL, \
647  .target = NULL, \
648  .verts = NULL, \
649  .falloff = 4.0f, \
650  .numverts = 0, \
651  .numpoly = 0, \
652  .flags = 0, \
653  .mat = _DNA_DEFAULT_UNIT_M4, \
654  .strength = 1.0f, \
655  .defgrp_name = "", \
656  }
657 
658 #define _DNA_DEFAULT_TriangulateModifierData \
659  { \
660  .flag = 0, \
661  .quad_method = MOD_TRIANGULATE_QUAD_SHORTEDGE, \
662  .ngon_method = MOD_TRIANGULATE_NGON_BEAUTY, \
663  .min_vertices = 4, \
664  }
665 
666 #define _DNA_DEFAULT_UVProjectModifierData \
667  { \
668  .projectors = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, \
669  .num_projectors = 1, \
670  .aspectx = 1.0f, \
671  .aspecty = 1.0f, \
672  .scalex = 1.0f, \
673  .scaley = 1.0f, \
674  .uvlayer_name = "", \
675  .uvlayer_tmp = 0, \
676  }
677 
678 #define _DNA_DEFAULT_UVWarpModifierData \
679  { \
680  .axis_u = 0, \
681  .axis_v = 1, \
682  .flag = 0, \
683  .center = {0.5f, 0.5f}, \
684  .offset = {0.0f, 0.0f}, \
685  .scale = {1.0f, 1.0f}, \
686  .rotation = 0.0f, \
687  .object_src = NULL, \
688  .bone_src = "", \
689  .object_dst = NULL, \
690  .bone_dst = "", \
691  .vgroup_name = "", \
692  .uvlayer_name = "", \
693  }
694 
695 #define _DNA_DEFAULT_WarpModifierData \
696  { \
697  .texture = NULL, \
698  .map_object = NULL, \
699  .map_bone = "", \
700  .uvlayer_name = "", \
701  .uvlayer_tmp = 0, \
702  .texmapping = 0, \
703  .object_from = NULL, \
704  .object_to = NULL, \
705  .bone_from = "", \
706  .bone_to = "", \
707  .curfalloff = NULL, \
708  .defgrp_name = "", \
709  .strength = 1.0f, \
710  .falloff_radius = 1.0f, \
711  .flag = 0, \
712  .falloff_type = eWarp_Falloff_Smooth, \
713  }
714 
715 #define _DNA_DEFAULT_WaveModifierData \
716  { \
717  .texture = NULL, \
718  .map_object = NULL, \
719  .map_bone = "", \
720  .uvlayer_name = "", \
721  .uvlayer_tmp = 0, \
722  .texmapping = MOD_DISP_MAP_LOCAL, \
723  .objectcenter = NULL, \
724  .defgrp_name = "", \
725  .flag = MOD_WAVE_X | MOD_WAVE_Y | MOD_WAVE_CYCL | MOD_WAVE_NORM_X | MOD_WAVE_NORM_Y | MOD_WAVE_NORM_Z, \
726  .startx = 0.0f, \
727  .starty = 0.0f, \
728  .height = 0.5f, \
729  .width = 1.5f, \
730  .narrow = 1.5f, \
731  .speed = 0.25f, \
732  .damp = 10.0f, \
733  .falloff = 0.0f, \
734  .timeoffs = 0.0f, \
735  .lifetime = 0.0f, \
736  }
737 
738 #define _DNA_DEFAULT_WeightedNormalModifierData \
739  { \
740  .defgrp_name = "", \
741  .mode = MOD_WEIGHTEDNORMAL_MODE_FACE, \
742  .flag = 0, \
743  .weight = 50, \
744  .thresh = 0.01f, \
745  }
746 
747 #define _DNA_DEFAULT_WeightVGEditModifierData \
748  { \
749  .defgrp_name = "", \
750  .edit_flags = 0, \
751  .falloff_type = MOD_WVG_MAPPING_NONE, \
752  .default_weight = 0.0f, \
753  .cmap_curve = NULL, \
754  .add_threshold = 0.01f, \
755  .rem_threshold = 0.01f, \
756  .mask_constant = 1.0f, \
757  .mask_defgrp_name = "", \
758  .mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT, \
759  .mask_texture = NULL, \
760  .mask_tex_map_obj = NULL, \
761  .mask_tex_map_bone = "", \
762  .mask_tex_mapping = MOD_DISP_MAP_LOCAL, \
763  .mask_tex_uvlayer_name = "", \
764  }
765 
766 #define _DNA_DEFAULT_WeightVGMixModifierData \
767  { \
768  .defgrp_name_a = "", \
769  .defgrp_name_b = "", \
770  .default_weight_a = 0.0f, \
771  .default_weight_b = 0.0f, \
772  .mix_mode = MOD_WVG_MIX_SET, \
773  .mix_set = MOD_WVG_SET_AND, \
774  .mask_constant = 1.0f, \
775  .mask_defgrp_name = "", \
776  .mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT, \
777  .mask_texture = NULL, \
778  .mask_tex_map_obj = NULL, \
779  .mask_tex_map_bone = "", \
780  .mask_tex_mapping = MOD_DISP_MAP_LOCAL, \
781  .mask_tex_uvlayer_name = "", \
782  .flag = 0, \
783  }
784 
785 #define _DNA_DEFAULT_WeightVGProximityModifierData \
786  { \
787  .defgrp_name = "", \
788  .proximity_mode = MOD_WVG_PROXIMITY_OBJECT, \
789  .proximity_flags = MOD_WVG_PROXIMITY_GEOM_VERTS, \
790  .proximity_ob_target = NULL, \
791  .mask_constant = 1.0f, \
792  .mask_defgrp_name = "", \
793  .mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT, \
794  .mask_texture = NULL, \
795  .mask_tex_map_obj = NULL, \
796  .mask_tex_map_bone = "", \
797  .mask_tex_mapping = MOD_DISP_MAP_LOCAL, \
798  .mask_tex_uvlayer_name = "", \
799  .min_dist = 0.0f, \
800  .max_dist = 1.0f, \
801  .falloff_type = MOD_WVG_MAPPING_NONE, \
802  }
803 
804 #define _DNA_DEFAULT_WeldModifierData \
805  { \
806  .merge_dist = 0.001f, \
807  .mode = MOD_WELD_MODE_ALL, \
808  .defgrp_name = "", \
809  }
810 
811 #define _DNA_DEFAULT_WireframeModifierData \
812  { \
813  .defgrp_name = "", \
814  .offset = 0.02f, \
815  .offset_fac = 0.0f, \
816  .offset_fac_vg = 0.0f, \
817  .crease_weight = 1.0f, \
818  .flag = MOD_WIREFRAME_REPLACE | MOD_WIREFRAME_OFS_EVEN, \
819  .mat_ofs = 0, \
820  }
821 
822 /* clang-format off */