Blender V4.3
DNA_modifier_defaults.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#pragma once
10
11/* clang-format off */
12
13#define _DNA_DEFAULT_ArmatureModifierData \
14 { \
15 .deformflag = ARM_DEF_VGROUP, \
16 .multi = 0.0f, \
17 .object = NULL, \
18 .defgrp_name = "", \
19 }
20
21/* Default to 2 duplicates distributed along the x-axis by an offset of 1 object width. */
22#define _DNA_DEFAULT_ArrayModifierData \
23 { \
24 .start_cap = NULL, \
25 .end_cap = NULL, \
26 .curve_ob = NULL, \
27 .offset_ob = NULL, \
28 .offset = {1.0f, 0.0f, 0.0f}, \
29 .scale = {1.0f, 0.0f, 0.0f}, \
30 .length = 0.0f, \
31 .merge_dist = 0.01f, \
32 .fit_type = MOD_ARR_FIXEDCOUNT, \
33 .offset_type = MOD_ARR_OFF_RELATIVE, \
34 .flags = 0, \
35 .count = 2, \
36 .uv_offset = {0.0f, 0.0f}, \
37 }
38
39#define _DNA_DEFAULT_BevelModifierData \
40 { \
41 .value = 0.1f, \
42 .res = 1, \
43 .flags = 0, \
44 .val_flags = MOD_BEVEL_AMT_OFFSET, \
45 .profile_type = MOD_BEVEL_PROFILE_SUPERELLIPSE, \
46 .lim_flags = MOD_BEVEL_ANGLE, \
47 .e_flags = 0, \
48 .mat = -1, \
49 .edge_flags = 0, \
50 .face_str_mode = MOD_BEVEL_FACE_STRENGTH_NONE, \
51 .miter_inner = MOD_BEVEL_MITER_SHARP, \
52 .miter_outer = MOD_BEVEL_MITER_SHARP, \
53 .affect_type = MOD_BEVEL_AFFECT_EDGES, \
54 .profile = 0.5f, \
55 .edge_weight_name = "bevel_weight_edge", \
56 .vertex_weight_name = "bevel_weight_vert", \
57 .bevel_angle = DEG2RADF(30.0f), \
58 .spread = 0.1f, \
59 .defgrp_name = "", \
60 }
61
62#define _DNA_DEFAULT_BooleanModifierData \
63 { \
64 .object = NULL, \
65 .collection = NULL, \
66 .double_threshold = 1e-6f, \
67 .operation = eBooleanModifierOp_Difference, \
68 .solver = eBooleanModifierSolver_Mesh_Arr, \
69 .flag = eBooleanModifierFlag_Object, \
70 .bm_flag = 0, \
71 }
72
73#define _DNA_DEFAULT_BuildModifierData \
74 { \
75 .start = 1.0f, \
76 .length = 100.0f, \
77 .flag = 0, \
78 .randomize = 0, \
79 .seed = 0, \
80 }
81
82#define _DNA_DEFAULT_CastModifierData \
83 { \
84 .object = NULL, \
85 .fac = 0.5f, \
86 .radius = 0.0f, \
87 .size = 0.0f, \
88 .defgrp_name = "", \
89 .flag = MOD_CAST_X | MOD_CAST_Y | MOD_CAST_Z | MOD_CAST_SIZE_FROM_RADIUS, \
90 .type = MOD_CAST_TYPE_SPHERE, \
91 }
92
93#define _DNA_DEFAULT_ClothSimSettings \
94 { \
95 .cache = NULL, \
96 .mingoal = 0.0f, \
97 .Cvi = 1.0f, \
98 .gravity = {0.0f, 0.0f, -9.81f}, \
99 .dt = 0.0f, \
100 .mass = 0.3f, \
101 .shear = 5.0f, \
102 .bending = 0.5f, \
103 .max_bend = 0.5f, \
104 .max_shear = 5.0f, \
105 .max_sewing = 0.0f, \
106 .avg_spring_len = 0.0f, \
107 .timescale = 1.0f, \
108 .time_scale = 1.0f, \
109 .maxgoal = 1.0f, \
110 .eff_force_scale = 1000.0f, \
111 .eff_wind_scale = 250.0f, \
112 .sim_time_old = 0.0f, \
113 .defgoal = 0.0f, \
114 .goalspring = 1.0f, \
115 .goalfrict = 0.0f, \
116 .velocity_smooth = 0.0f, \
117 .density_target = 0.0f, \
118 .density_strength = 0.0f, \
119 .collider_friction = 0.0f, \
120 .shrink_min = 0.0f, \
121 .shrink_max = 0.0f, \
122 .uniform_pressure_force = 0.0f, \
123 .target_volume = 0.0f, \
124 .pressure_factor = 1.0f, \
125 .fluid_density = 0.0f, \
126 .vgroup_pressure = 0, \
127 .bending_damping = 0.5f, \
128 .voxel_cell_size = 0.1f, \
129 .stepsPerFrame = 5, \
130 .flags = CLOTH_SIMSETTINGS_FLAG_INTERNAL_SPRINGS_NORMAL, \
131 .maxspringlen = 10, \
132 .solver_type = 0, \
133 .vgroup_bend = 0, \
134 .vgroup_mass = 0, \
135 .vgroup_struct = 0, \
136 .vgroup_shrink = 0, \
137 .shapekey_rest = 0, \
138 .presets = 2, \
139 .reset = 0, \
140 .effector_weights = NULL, \
141 .bending_model = CLOTH_BENDING_ANGULAR, \
142 .vgroup_shear = 0, \
143 .tension = 15.0f , \
144 .compression = 15.0f, \
145 .max_tension = 15.0f, \
146 .max_compression = 15.0f, \
147 .tension_damp = 5.0f, \
148 .compression_damp = 5.0f, \
149 .shear_damp = 5.0f, \
150 .internal_spring_max_length = 0.0f, \
151 .internal_spring_max_diversion = M_PI_4, \
152 .vgroup_intern = 0, \
153 .internal_tension = 15.0f, \
154 .internal_compression = 15.0f, \
155 .max_internal_tension = 15.0f, \
156 .max_internal_compression = 15.0f, \
157 }
158
159#define _DNA_DEFAULT_ClothCollSettings \
160 { \
161 .collision_list = NULL, \
162 .epsilon = 0.015f, \
163 .self_friction = 5.0f, \
164 .friction = 5.0f, \
165 .damping = 0.0f, \
166 .selfepsilon = 0.015f, \
167 .flags = CLOTH_COLLSETTINGS_FLAG_ENABLED, \
168 .loop_count = 2, \
169 .group = NULL, \
170 .vgroup_selfcol = 0, \
171 .vgroup_objcol = 0, \
172 .clamp = 0.0f, \
173 .self_clamp = 0.0f, \
174 }
175
176#define _DNA_DEFAULT_ClothModifierData \
177 { \
178 .clothObject = NULL, \
179 .sim_parms = NULL, \
180 .coll_parms = NULL, \
181 .point_cache = NULL, \
182 .ptcaches = {NULL, NULL}, \
183 .hairdata = NULL, \
184 .hair_grid_min = {0.0f, 0.0f, 0.0f}, \
185 .hair_grid_max = {0.0f, 0.0f, 0.0f}, \
186 .hair_grid_res = {0, 0, 0}, \
187 .hair_grid_cellsize = 0.0f, \
188 .solver_result = NULL, \
189 }
190
191#define _DNA_DEFAULT_CollisionModifierData \
192 { \
193 .x = NULL, \
194 .xnew = NULL, \
195 .xold = NULL, \
196 .current_xnew = NULL, \
197 .current_x = NULL, \
198 .current_v = NULL, \
199 .vert_tris = NULL, \
200 .mvert_num = 0, \
201 .tri_num = 0, \
202 .time_x = -1000.0f, \
203 .time_xnew = -1000.0f, \
204 .is_static = false, \
205 .bvhtree = NULL, \
206 }
207
208#define _DNA_DEFAULT_CorrectiveSmoothModifierData \
209 { \
210 .bind_coords = NULL, \
211 .bind_coords_num = 0, \
212 .lambda = 0.5f, \
213 .scale = 1.0f, \
214 .repeat = 5, \
215 .flag = 0, \
216 .smooth_type = MOD_CORRECTIVESMOOTH_SMOOTH_SIMPLE, \
217 .defgrp_name = "", \
218 }
219
220#define _DNA_DEFAULT_CurveModifierData \
221 { \
222 .object = NULL, \
223 .name = "", \
224 .defaxis = MOD_CURVE_POSX, \
225 .flag = 0, \
226 }
227
228/* Defines are scattered across too many files, they need to be moved to DNA. */
229#if 0
230#define _DNA_DEFAULT_DataTransferModifierData \
231 { \
232 .ob_source = NULL, \
233 .data_types = 0, \
234 .vmap_mode = MREMAP_MODE_VERT_NEAREST, \
235 .emap_mode = MREMAP_MODE_EDGE_NEAREST, \
236 .lmap_mode = MREMAP_MODE_LOOP_NEAREST_POLYNOR, \
237 .pmap_mode = MREMAP_MODE_POLY_NEAREST, \
238 .map_max_distance = 1.0f, \
239 .map_ray_radius = 0.0f, \
240 .islands_precision = 0.0f, \
241 .layers_select_src = {DT_LAYERS_ALL_SRC, DT_LAYERS_ALL_SRC, DT_LAYERS_ALL_SRC, DT_LAYERS_ALL_SRC}, \
242 .layers_select_dst = {DT_LAYERS_NAME_DST, DT_LAYERS_NAME_DST, DT_LAYERS_NAME_DST, DT_LAYERS_NAME_DST}, \
243 .mix_mod = CDT_MIX_TRANSFER, \
244 .mix_factor = 1.0f, \
245 .defgrp_name = "", \
246 .flags = MOD_DATATRANSFER_OBSRC_TRANSFORM, \
247 }
248#endif
249
250#define _DNA_DEFAULT_DecimateModifierData \
251 { \
252 .percent = 1.0f, \
253 .iter = 0, \
254 .delimit = 0, \
255 .symmetry_axis = 0, \
256 .angle = DEG2RADF(5.0f), \
257 .defgrp_name = "", \
258 .defgrp_factor = 1.0f, \
259 .flag = 0, \
260 .mode = 0, \
261 .face_count = 0, \
262 }
263
264#define _DNA_DEFAULT_DisplaceModifierData \
265 { \
266 .texture = NULL, \
267 .map_object = NULL, \
268 .map_bone = "", \
269 .uvlayer_name = "", \
270 .uvlayer_tmp = 0, \
271 .texmapping = 0, \
272 .strength = 1.0f, \
273 .direction = MOD_DISP_DIR_NOR, \
274 .defgrp_name = "", \
275 .midlevel = 0.5f, \
276 .space = MOD_DISP_SPACE_LOCAL, \
277 .flag = 0, \
278 }
279
280#define _DNA_DEFAULT_DynamicPaintModifierData \
281 { \
282 .canvas = NULL, \
283 .brush = NULL, \
284 .type = MOD_DYNAMICPAINT_TYPE_CANVAS, \
285 }
286
287/* Default to 30-degree split angle, sharpness from both angle & flag. */
288#define _DNA_DEFAULT_EdgeSplitModifierData \
289 { \
290 .split_angle = DEG2RADF(30.0f), \
291 .flags = MOD_EDGESPLIT_FROMANGLE | MOD_EDGESPLIT_FROMFLAG, \
292 }
293
294#define _DNA_DEFAULT_ExplodeModifierData \
295 { \
296 .facepa = NULL, \
297 .flag = eExplodeFlag_Unborn | eExplodeFlag_Alive | eExplodeFlag_Dead, \
298 .vgroup = 0, \
299 .protect = 0.0f, \
300 .uvname = "", \
301 }
302
303/* Fluid modifier settings skipped for now. */
304
305#define _DNA_DEFAULT_HookModifierData \
306 { \
307 .subtarget = "", \
308 .flag = 0, \
309 .falloff_type = eHook_Falloff_Smooth, \
310 .parentinv = _DNA_DEFAULT_UNIT_M4, \
311 .cent = {0.0f, 0.0f, 0.0f}, \
312 .falloff = 0.0f, \
313 .curfalloff = NULL, \
314 .indexar = NULL, \
315 .indexar_num = 0, \
316 .force = 1.0f, \
317 .name = "", \
318 }
319
320#define _DNA_DEFAULT_LaplacianDeformModifierData \
321 { \
322 .anchor_grp_name = "", \
323 .verts_num = 0, \
324 .repeat = 1, \
325 .vertexco = NULL, \
326 .cache_system = NULL, \
327 .flag = 0, \
328 }
329
330#define _DNA_DEFAULT_LaplacianSmoothModifierData \
331 { \
332 .lambda = 0.01f, \
333 .lambda_border = 0.01f, \
334 .defgrp_name = "", \
335 .flag = MOD_LAPLACIANSMOOTH_X | MOD_LAPLACIANSMOOTH_Y | MOD_LAPLACIANSMOOTH_Z | \
336 MOD_LAPLACIANSMOOTH_PRESERVE_VOLUME | MOD_LAPLACIANSMOOTH_NORMALIZED, \
337 .repeat = 1, \
338 }
339
340#define _DNA_DEFAULT_LatticeModifierData \
341 { \
342 .object = NULL, \
343 .name = "", \
344 .strength = 1.0f, \
345 .flag = 0, \
346 }
347
348#define _DNA_DEFAULT_MaskModifierData \
349 { \
350 .ob_arm = NULL, \
351 .vgroup = "", \
352 .mode = 0, \
353 .flag = 0, \
354 .threshold = 0.0f, \
355 }
356
357/* Y and Z forward and up axes, Blender default. */
358#define _DNA_DEFAULT_MeshCacheModifierData \
359 { \
360 .flag = 0, \
361 .type = MOD_MESHCACHE_TYPE_MDD, \
362 .time_mode = 0, \
363 .play_mode = 0, \
364 .forward_axis = 1, \
365 .up_axis = 2, \
366 .flip_axis = 0, \
367 .interp = MOD_MESHCACHE_INTERP_LINEAR, \
368 .factor = 1.0f, \
369 .deform_mode = 0.0f, \
370 .frame_start = 0.0f, \
371 .frame_scale = 1.0f, \
372 .eval_frame = 0.0f, \
373 .eval_time = 0.0f, \
374 .eval_factor = 0.0f, \
375 .filepath = "", \
376 }
377
378#define _DNA_DEFAULT_MeshDeformModifierData \
379 { \
380 .object = 0, \
381 .defgrp_name = "", \
382 .gridsize = 5, \
383 .flag = 0, \
384 .bindinfluences = NULL, \
385 .bindoffsets = NULL, \
386 .bindcagecos = NULL, \
387 .verts_num = 0, \
388 .cage_verts_num = 0, \
389 .dyngrid = NULL, \
390 .dyninfluences = NULL, \
391 .dynverts = NULL, \
392 .dyngridsize = 0, \
393 .influences_num = 0, \
394 .dyncellmin = {0.0f, 0.0f, 0.0f}, \
395 .dyncellwidth = 0.0f, \
396 .bindmat = _DNA_DEFAULT_UNIT_M4, \
397 .bindweights = NULL, \
398 .bindcos = NULL, \
399 .bindfunc = NULL, \
400 }
401
402#define _DNA_DEFAULT_MeshSeqCacheModifierData \
403 { \
404 .cache_file = NULL, \
405 .object_path = "", \
406 .read_flag = MOD_MESHSEQ_READ_VERT | MOD_MESHSEQ_READ_POLY | MOD_MESHSEQ_READ_UV | \
407 MOD_MESHSEQ_READ_COLOR | MOD_MESHSEQ_INTERPOLATE_VERTICES, \
408 .velocity_scale = 1.0f, \
409 .reader = NULL, \
410 .reader_object_path = "", \
411 }
412
413#define _DNA_DEFAULT_MirrorModifierData \
414 { \
415 .flag = MOD_MIR_AXIS_X | MOD_MIR_VGROUP, \
416 .tolerance = 0.001f, \
417 .bisect_threshold = 0.001f, \
418 .uv_offset = {0.0f, 0.0f}, \
419 .uv_offset_copy = {0.0f, 0.0f}, \
420 .mirror_ob = NULL, \
421 .use_correct_order_on_merge = true, \
422 }
423
424#define _DNA_DEFAULT_MultiresModifierData \
425 { \
426 .lvl = 0, \
427 .sculptlvl = 0, \
428 .renderlvl = 0, \
429 .totlvl = 0, \
430 .flags = eMultiresModifierFlag_UseCrease | eMultiresModifierFlag_ControlEdges, \
431 .uv_smooth = SUBSURF_UV_SMOOTH_PRESERVE_BOUNDARIES, \
432 .quality = 4, \
433 .boundary_smooth = SUBSURF_BOUNDARY_SMOOTH_ALL, \
434 }
435
436#define _DNA_DEFAULT_NormalEditModifierData \
437 { \
438 .defgrp_name = "", \
439 .target = NULL, \
440 .mode = MOD_NORMALEDIT_MODE_RADIAL, \
441 .flag = 0, \
442 .mix_mode = MOD_NORMALEDIT_MIX_COPY, \
443 .mix_factor = 1.0f, \
444 .mix_limit = M_PI, \
445 .offset = {0.0f, 0.0f, 0.0f}, \
446 }
447
448/* Some fields are initialized in #init_data. */
449#define _DNA_DEFAULT_OceanModifierData \
450 { \
451 .ocean = NULL, \
452 .oceancache = NULL, \
453 .resolution = 7, \
454 .viewport_resolution = 7, \
455 .spatial_size = 50, \
456 .wind_velocity = 30.0f, \
457 .damp = 0.5f, \
458 .smallest_wave = 0.01f, \
459 .depth = 200.0f, \
460 .wave_alignment = 0.0f, \
461 .wave_direction = 0.0f, \
462 .wave_scale = 1.0f, \
463 .chop_amount = 1.0f, \
464 .foam_coverage = 0.0f, \
465 .time = 1.0f, \
466 .spectrum = MOD_OCEAN_SPECTRUM_PHILLIPS, \
467 .fetch_jonswap = 120.0f, \
468 .sharpen_peak_jonswap = 0.0f, \
469 .bakestart = 1, \
470 .bakeend = 250, \
471 .cachepath = "", \
472 .foamlayername = "", \
473 .spraylayername = "", \
474 .cached = 0, \
475 .geometry_mode = 0, \
476 .flag = 0, \
477 .repeat_x = 1, \
478 .repeat_y = 1, \
479 .seed = 0, \
480 .size = 1.0f, \
481 .foam_fade = 0.98f, \
482 }
483
484#define _DNA_DEFAULT_ParticleInstanceModifierData \
485 { \
486 .psys = 1, \
487 .flag = eParticleInstanceFlag_Parents | eParticleInstanceFlag_Unborn | \
488 eParticleInstanceFlag_Alive | eParticleInstanceFlag_Dead, \
489 .axis = 2, \
490 .space = eParticleInstanceSpace_World, \
491 .position = 1.0f, \
492 .random_position = 0.0f, \
493 .rotation = 0.0f, \
494 .random_rotation = 0.0f, \
495 .particle_offset = 0.0f, \
496 .particle_amount = 1.0f, \
497 .index_layer_name = "", \
498 .value_layer_name = "", \
499 }
500
501#define _DNA_DEFAULT_ParticleSystemModifierData \
502 { \
503 .psys = NULL, \
504 .mesh_final = NULL, \
505 .mesh_original = NULL, \
506 .totdmvert = 0, \
507 .totdmedge = 0, \
508 .totdmface = 0, \
509 .flag = 0, \
510 }
511
512#define _DNA_DEFAULT_RemeshModifierData \
513 { \
514 .threshold = 1.0f, \
515 .scale = 0.9f, \
516 .hermite_num = 1.0f, \
517 .depth = 4, \
518 .flag = MOD_REMESH_FLOOD_FILL, \
519 .mode = MOD_REMESH_VOXEL, \
520 .voxel_size = 0.1f, \
521 .adaptivity = 0.0f, \
522 }
523
524#define _DNA_DEFAULT_ScrewModifierData \
525 { \
526 .ob_axis = NULL, \
527 .steps = 16, \
528 .render_steps = 16, \
529 .iter = 1, \
530 .screw_ofs = 0.0f, \
531 .angle = 2.0f * M_PI, \
532 .merge_dist = 0.01f, \
533 .flag = MOD_SCREW_SMOOTH_SHADING, \
534 .axis = 2, \
535 }
536
537/* Shape key modifier has no items. */
538
539#define _DNA_DEFAULT_ShrinkwrapModifierData \
540 { \
541 .target = NULL, \
542 .auxTarget = NULL, \
543 .vgroup_name = "", \
544 .keepDist = 0.0f, \
545 .shrinkType = MOD_SHRINKWRAP_NEAREST_SURFACE, \
546 .shrinkOpts = MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR, \
547 .shrinkMode = 0, \
548 .projLimit = 0.0f, \
549 .projAxis = 0, \
550 .subsurfLevels = 0, \
551 }
552
553#define _DNA_DEFAULT_SimpleDeformModifierData \
554 { \
555 .origin = NULL, \
556 .vgroup_name = "", \
557 .factor = DEG2RADF(45.0f), \
558 .limit = {0.0f, 1.0f}, \
559 .mode = MOD_SIMPLEDEFORM_MODE_TWIST, \
560 .axis = 0, \
561 .deform_axis = 0, \
562 .flag = 0, \
563 }
564
565#define _DNA_DEFAULT_NodesModifierData \
566 { \
567 .bake_target = NODES_MODIFIER_BAKE_TARGET_PACKED, \
568 }
569
570#define _DNA_DEFAULT_SkinModifierData \
571 { \
572 .branch_smoothing = 0.0f, \
573 .flag = 0, \
574 .symmetry_axes = MOD_SKIN_SYMM_X, \
575 }
576
577#define _DNA_DEFAULT_SmoothModifierData \
578 { \
579 .fac = 0.5f, \
580 .repeat = 1, \
581 .defgrp_name = "", \
582 .flag = MOD_SMOOTH_X | MOD_SMOOTH_Y | MOD_SMOOTH_Z, \
583 }
584
585/* Softbody modifier skipped for now. */
586
587#define _DNA_DEFAULT_SolidifyModifierData \
588 { \
589 .defgrp_name = "", \
590 .shell_defgrp_name = "", \
591 .rim_defgrp_name = "", \
592 .offset = 0.01f, \
593 .offset_fac = -1.0f, \
594 .offset_fac_vg = 0.0f, \
595 .offset_clamp = 0.0f, \
596 .mode = MOD_SOLIDIFY_MODE_EXTRUDE, \
597 .nonmanifold_offset_mode = MOD_SOLIDIFY_NONMANIFOLD_OFFSET_MODE_CONSTRAINTS, \
598 .nonmanifold_boundary_mode = MOD_SOLIDIFY_NONMANIFOLD_BOUNDARY_MODE_NONE, \
599 .crease_inner = 0.0f, \
600 .crease_outer = 0.0f, \
601 .crease_rim = 0.0f, \
602 .flag = MOD_SOLIDIFY_RIM, \
603 .mat_ofs = 0, \
604 .mat_ofs_rim = 0, \
605 .merge_tolerance = 0.0001f, \
606 .bevel_convex = 0.0f, \
607 }
608
609#define _DNA_DEFAULT_SubsurfModifierData \
610 { \
611 .subdivType = 0, \
612 .levels = 1, \
613 .renderLevels = 2, \
614 .flags = eSubsurfModifierFlag_UseCrease | eSubsurfModifierFlag_ControlEdges, \
615 .uv_smooth = SUBSURF_UV_SMOOTH_PRESERVE_BOUNDARIES, \
616 .quality = 3, \
617 .boundary_smooth = SUBSURF_BOUNDARY_SMOOTH_ALL, \
618 .emCache = NULL, \
619 .mCache = NULL, \
620 }
621
622#define _DNA_DEFAULT_SurfaceModifierData \
623 { \
624 .runtime = {NULL}, /* Include to avoid empty an struct (for MSVC). */ \
625 }
626
627#define _DNA_DEFAULT_SurfaceDeformModifierData \
628 { \
629 .depsgraph = NULL, \
630 .target = NULL, \
631 .verts = NULL, \
632 .falloff = 4.0f, \
633 .mesh_verts_num = 0, \
634 .bind_verts_num = 0, \
635 .target_verts_num = 0, \
636 .target_polys_num = 0, \
637 .flags = 0, \
638 .mat = _DNA_DEFAULT_UNIT_M4, \
639 .strength = 1.0f, \
640 .defgrp_name = "", \
641 }
642
643#define _DNA_DEFAULT_TriangulateModifierData \
644 { \
645 .flag = 0, \
646 .quad_method = MOD_TRIANGULATE_QUAD_SHORTEDGE, \
647 .ngon_method = MOD_TRIANGULATE_NGON_BEAUTY, \
648 .min_vertices = 4, \
649 }
650
651#define _DNA_DEFAULT_UVProjectModifierData \
652 { \
653 .projectors = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, \
654 .projectors_num = 1, \
655 .aspectx = 1.0f, \
656 .aspecty = 1.0f, \
657 .scalex = 1.0f, \
658 .scaley = 1.0f, \
659 .uvlayer_name = "", \
660 .uvlayer_tmp = 0, \
661 }
662
663#define _DNA_DEFAULT_UVWarpModifierData \
664 { \
665 .axis_u = 0, \
666 .axis_v = 1, \
667 .flag = 0, \
668 .center = {0.5f, 0.5f}, \
669 .offset = {0.0f, 0.0f}, \
670 .scale = {1.0f, 1.0f}, \
671 .rotation = 0.0f, \
672 .object_src = NULL, \
673 .bone_src = "", \
674 .object_dst = NULL, \
675 .bone_dst = "", \
676 .vgroup_name = "", \
677 .uvlayer_name = "", \
678 }
679
680#define _DNA_DEFAULT_WarpModifierData \
681 { \
682 .texture = NULL, \
683 .map_object = NULL, \
684 .map_bone = "", \
685 .uvlayer_name = "", \
686 .uvlayer_tmp = 0, \
687 .texmapping = 0, \
688 .object_from = NULL, \
689 .object_to = NULL, \
690 .bone_from = "", \
691 .bone_to = "", \
692 .curfalloff = NULL, \
693 .defgrp_name = "", \
694 .strength = 1.0f, \
695 .falloff_radius = 1.0f, \
696 .flag = 0, \
697 .falloff_type = eWarp_Falloff_Smooth, \
698 }
699
700#define _DNA_DEFAULT_WaveModifierData \
701 { \
702 .texture = NULL, \
703 .map_object = NULL, \
704 .map_bone = "", \
705 .uvlayer_name = "", \
706 .uvlayer_tmp = 0, \
707 .texmapping = MOD_DISP_MAP_LOCAL, \
708 .objectcenter = NULL, \
709 .defgrp_name = "", \
710 .flag = MOD_WAVE_X | MOD_WAVE_Y | MOD_WAVE_CYCL | MOD_WAVE_NORM_X | MOD_WAVE_NORM_Y | MOD_WAVE_NORM_Z, \
711 .startx = 0.0f, \
712 .starty = 0.0f, \
713 .height = 0.5f, \
714 .width = 1.5f, \
715 .narrow = 1.5f, \
716 .speed = 0.25f, \
717 .damp = 10.0f, \
718 .falloff = 0.0f, \
719 .timeoffs = 0.0f, \
720 .lifetime = 0.0f, \
721 }
722
723#define _DNA_DEFAULT_WeightedNormalModifierData \
724 { \
725 .defgrp_name = "", \
726 .mode = MOD_WEIGHTEDNORMAL_MODE_FACE, \
727 .flag = 0, \
728 .weight = 50, \
729 .thresh = 0.01f, \
730 }
731
732#define _DNA_DEFAULT_WeightVGEditModifierData \
733 { \
734 .defgrp_name = "", \
735 .edit_flags = 0, \
736 .falloff_type = MOD_WVG_MAPPING_NONE, \
737 .default_weight = 0.0f, \
738 .cmap_curve = NULL, \
739 .add_threshold = 0.01f, \
740 .rem_threshold = 0.01f, \
741 .mask_constant = 1.0f, \
742 .mask_defgrp_name = "", \
743 .mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT, \
744 .mask_texture = NULL, \
745 .mask_tex_map_obj = NULL, \
746 .mask_tex_map_bone = "", \
747 .mask_tex_mapping = MOD_DISP_MAP_LOCAL, \
748 .mask_tex_uvlayer_name = "", \
749 }
750
751#define _DNA_DEFAULT_WeightVGMixModifierData \
752 { \
753 .defgrp_name_a = "", \
754 .defgrp_name_b = "", \
755 .default_weight_a = 0.0f, \
756 .default_weight_b = 0.0f, \
757 .mix_mode = MOD_WVG_MIX_SET, \
758 .mix_set = MOD_WVG_SET_AND, \
759 .mask_constant = 1.0f, \
760 .mask_defgrp_name = "", \
761 .mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT, \
762 .mask_texture = NULL, \
763 .mask_tex_map_obj = NULL, \
764 .mask_tex_map_bone = "", \
765 .mask_tex_mapping = MOD_DISP_MAP_LOCAL, \
766 .mask_tex_uvlayer_name = "", \
767 .flag = 0, \
768 }
769
770#define _DNA_DEFAULT_WeightVGProximityModifierData \
771 { \
772 .defgrp_name = "", \
773 .proximity_mode = MOD_WVG_PROXIMITY_OBJECT, \
774 .proximity_flags = MOD_WVG_PROXIMITY_GEOM_VERTS, \
775 .proximity_ob_target = NULL, \
776 .mask_constant = 1.0f, \
777 .mask_defgrp_name = "", \
778 .mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT, \
779 .mask_texture = NULL, \
780 .mask_tex_map_obj = NULL, \
781 .mask_tex_map_bone = "", \
782 .mask_tex_mapping = MOD_DISP_MAP_LOCAL, \
783 .mask_tex_uvlayer_name = "", \
784 .min_dist = 0.0f, \
785 .max_dist = 1.0f, \
786 .falloff_type = MOD_WVG_MAPPING_NONE, \
787 }
788
789#define _DNA_DEFAULT_WeldModifierData \
790 { \
791 .merge_dist = 0.001f, \
792 .mode = MOD_WELD_MODE_ALL, \
793 .defgrp_name = "", \
794 }
795
796#define _DNA_DEFAULT_WireframeModifierData \
797 { \
798 .defgrp_name = "", \
799 .offset = 0.02f, \
800 .offset_fac = 0.0f, \
801 .offset_fac_vg = 0.0f, \
802 .crease_weight = 1.0f, \
803 .flag = MOD_WIREFRAME_REPLACE | MOD_WIREFRAME_OFS_EVEN, \
804 .mat_ofs = 0, \
805 }
806
807#define _DNA_DEFAULT_GreasePencilOpacityModifierData \
808 { \
809 .color_mode = MOD_GREASE_PENCIL_COLOR_BOTH, \
810 .color_factor = 1.0f, \
811 .hardness_factor = 1.0f, \
812 }
813
814#define _DNA_DEFAULT_GreasePencilSubdivModifierData \
815 { \
816 .level = 1, \
817 }
818
819#define _DNA_DEFAULT_GreasePencilColorModifierData \
820 { \
821 .color_mode = MOD_GREASE_PENCIL_COLOR_BOTH, \
822 .hsv = {0.5f, 1.0f, 1.0f}, \
823 }
824
825
826#define _DNA_DEFAULT_GreasePencilTintModifierData \
827 { \
828 .color_mode = MOD_GREASE_PENCIL_COLOR_BOTH, \
829 .tint_mode = MOD_GREASE_PENCIL_TINT_UNIFORM, \
830 .factor = 0.5f, \
831 .radius = 1.0f, \
832 .color = {1.0f, 1.0f, 1.0f}, \
833 }
834
835#define _DNA_DEFAULT_GreasePencilSmoothModifierData \
836 { \
837 .flag = MOD_GREASE_PENCIL_SMOOTH_MOD_LOCATION, \
838 .factor = 1.0f, \
839 .step = 1, \
840 }
841
842#define _DNA_DEFAULT_GreasePencilOffsetModifierData \
843 { \
844 .flag = 0, \
845 .offset_mode = MOD_GREASE_PENCIL_OFFSET_RANDOM, \
846 .loc = {0.0f, 0.0f, 0.0f}, \
847 .rot = {0.0f, 0.0f, 0.0f}, \
848 .scale = {0.0f, 0.0f, 0.0f}, \
849 .stroke_step = 1, \
850 .stroke_start_offset = 0, \
851 }
852
853#define _DNA_DEFAULT_GreasePencilNoiseModifierData \
854 { \
855 .flag = GP_NOISE_FULL_STROKE | GP_NOISE_USE_RANDOM, \
856 .factor = 0.5f, \
857 .factor_strength = 0.0f, \
858 .factor_thickness = 0.0f, \
859 .factor_uvs = 0.0f, \
860 .noise_scale = 0.0f, \
861 .noise_offset = 0.0f, \
862 .step = 4, \
863 .seed = 1, \
864 }
865
866#define _DNA_DEFAULT_GreasePencilMirrorModifierData \
867 { \
868 .flag = MOD_GREASE_PENCIL_MIRROR_AXIS_X, \
869 }
870
871#define _DNA_DEFAULT_GreasePencilThickModifierData \
872 { \
873 .flag = 0, \
874 .thickness_fac = 1.0f, \
875 .thickness = 0.02, \
876 }
877
878#define _DNA_DEFAULT_GreasePencilLatticeModifierData \
879 { \
880 .object = NULL, \
881 .strength = 1.0f, \
882 }
883
884#define _DNA_DEFAULT_GreasePencilDashModifierData \
885 { \
886 .dash_offset = 0, \
887 .segments_array = NULL, \
888 .segments_num = 0, \
889 .segment_active_index = 0, \
890 }
891
892#define _DNA_DEFAULT_GreasePencilDashModifierSegment \
893 { \
894 .name = "Segment", \
895 .dash = 2, \
896 .gap = 1, \
897 .radius = 1.0f, \
898 .opacity = 1.0f, \
899 .mat_nr = -1, \
900 }
901
902#define _DNA_DEFAULT_GreasePencilMultiModifierData \
903 { \
904 .flag = 0, \
905 .duplications = 3, \
906 .distance = 0.1f, \
907 .offset = 0.0f, \
908 .fading_center = 0.5f, \
909 .fading_thickness = 0.5f, \
910 .fading_opacity = 0.5f, \
911 }
912
913#define _DNA_DEFAULT_GreasePencilLengthModifierData \
914 { \
915 .start_fac = 0.1f,\
916 .end_fac = 0.1f,\
917 .overshoot_fac = 0.1f,\
918 .flag = GP_LENGTH_USE_CURVATURE,\
919 .point_density = 30.0f,\
920 .segment_influence = 0.0f,\
921 .max_angle = DEG2RAD(170.0f),\
922 .rand_start_fac = 0.0f,\
923 .rand_end_fac = 0.0f,\
924 .rand_offset = 0.0f,\
925 .seed = 0,\
926 .step = 4,\
927 }
928
929#define _DNA_DEFAULT_GreasePencilWeightAngleModifierData \
930 { \
931 .flag = 0, \
932 .axis = 1, \
933 }
934
935#define _DNA_DEFAULT_GreasePencilArrayModifierData \
936 { \
937 .object = NULL, \
938 .count = 2, \
939 .flag = GP_ARRAY_USE_RELATIVE, \
940 .offset = {0.0f, 0.0f, 0.0f}, \
941 .shift = {1.0f, 0.0f, 0.0f}, \
942 .rnd_offset = {0.0f, 0.0f, 0.0f}, \
943 .rnd_rot = {0.0f, 0.0f, 0.0f}, \
944 .rnd_scale = {0.0f, 0.0f, 0.0f}, \
945 .seed = 1, \
946 .mat_rpl = 0, \
947 }
948
949#define _DNA_DEFAULT_GreasePencilWeightProximityModifierData \
950 { \
951 .target_vgname = "", \
952 .flag = 0, \
953 .dist_start = 0.0f, \
954 .dist_end = 20.0f, \
955 }
956
957#define _DNA_DEFAULT_GreasePencilHookModifierData \
958 { \
959 .object = NULL, \
960 .subtarget = "", \
961 .flag = 0, \
962 .falloff_type = MOD_GREASE_PENCIL_HOOK_Falloff_Smooth, \
963 .parentinv = _DNA_DEFAULT_UNIT_M4, \
964 .cent = {0.0f, 0.0f, 0.0f}, \
965 .falloff = 0.0f, \
966 .force = 0.5f, \
967 }
968
969#define _DNA_DEFAULT_GreasePencilLineartModifierData \
970 { \
971 .edge_types = MOD_LINEART_EDGE_FLAG_INIT_TYPE, \
972 .thickness = 25, \
973 .opacity = 1.0f, \
974 .crease_threshold = DEG2RAD(140.0f), \
975 .calculation_flags = MOD_LINEART_ALLOW_DUPLI_OBJECTS | MOD_LINEART_ALLOW_CLIPPING_BOUNDARIES | \
976 MOD_LINEART_USE_CREASE_ON_SHARP_EDGES | MOD_LINEART_FILTER_FACE_MARK_KEEP_CONTOUR | \
977 MOD_LINEART_MATCH_OUTPUT_VGROUP, \
978 /* Do not split by default, this is for better chaining quality. */ \
979 .angle_splitting_threshold = 0.0f, \
980 .chaining_image_threshold = 0.001f, \
981 .stroke_depth_offset = 0.05,\
982 .chain_smooth_tolerance = 0.0f,\
983 .overscan = 0.1f,\
984 .shadow_camera_near = 0.1f, \
985 .shadow_camera_far = 200.0f, \
986 .shadow_camera_size = 200.0f, \
987 }
988
989#define _DNA_DEFAULT_GreasePencilArmatureModifierData \
990 { \
991 .deformflag = ARM_DEF_VGROUP, \
992 .object = NULL, \
993 }
994
995#define _DNA_DEFAULT_GreasePencilTimeModifierData \
996 { \
997 .flag = MOD_GREASE_PENCIL_TIME_KEEP_LOOP, \
998 .offset = 1, \
999 .frame_scale = 1.0f, \
1000 .mode = 0, \
1001 .sfra = 1, \
1002 .efra = 250, \
1003 .segments_array = NULL, \
1004 .segments_num = 1, \
1005 .segment_active_index = 0, \
1006 }
1007
1008#define _DNA_DEFAULT_GreasePencilTimeModifierSegment \
1009 { \
1010 .name = "Segment", \
1011 .segment_start = 1, \
1012 .segment_end = 2, \
1013 .segment_mode = 0, \
1014 .segment_repeat = 1, \
1015 }
1016
1017#define _DNA_DEFAULT_GreasePencilEnvelopeModifierData \
1018 { \
1019 .spread = 10, \
1020 .mode = MOD_GREASE_PENCIL_ENVELOPE_SEGMENTS, \
1021 .mat_nr = -1, \
1022 .thickness = 1.0f, \
1023 .strength = 1.0f, \
1024 .skip = 0, \
1025 }
1026
1027#define _DNA_DEFAULT_GreasePencilOutlineModifierData \
1028 { \
1029 .flag = MOD_GREASE_PENCIL_OUTLINE_KEEP_SHAPE, \
1030 .thickness = 1, \
1031 .sample_length = 0.0f, \
1032 .subdiv = 3, \
1033 .outline_material = NULL, \
1034 }
1035
1036#define _DNA_DEFAULT_GreasePencilShrinkwrapModifierData \
1037 { \
1038 .target = NULL, \
1039 .aux_target = NULL, \
1040 .keep_dist = 0.05f, \
1041 .shrink_type = MOD_SHRINKWRAP_NEAREST_SURFACE, \
1042 .shrink_opts = MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR, \
1043 .shrink_mode = MOD_SHRINKWRAP_ON_SURFACE, \
1044 .proj_limit = 0.0f, \
1045 .proj_axis = MOD_SHRINKWRAP_PROJECT_OVER_NORMAL, \
1046 .subsurf_levels = 0, \
1047 .smooth_factor = 0.05f, \
1048 .smooth_step = 1, \
1049 }
1050
1051/* Here we deliberately set effective range to the half the default
1052 * frame-range to have an immediate effect to suggest use-cases. */
1053#define _DNA_DEFAULT_GreasePencilBuildModifierData \
1054 { \
1055 .start_frame = 1, \
1056 .end_frame = 125, \
1057 .start_delay = 0.0f, \
1058 .length = 100.0f, \
1059 .flag = 0, \
1060 .mode = 0, \
1061 .transition = 0, \
1062 .time_alignment = 0, \
1063 .time_mode = 0, \
1064 .speed_fac = 1.2f, \
1065 .speed_maxgap = 0.5f, \
1066 .percentage_fac = 0.0f, \
1067 }
1068
1069#define _DNA_DEFAULT_GreasePencilSimplifyModifierData \
1070 { \
1071 .factor = 0.0f, \
1072 .mode = MOD_GREASE_PENCIL_SIMPLIFY_FIXED, \
1073 .step = 1, \
1074 .length = 0.1f, \
1075 .distance = 0.1f, \
1076 }
1077
1078#define _DNA_DEFAULT_GreasePencilTextureModifierData \
1079 { \
1080 .uv_offset = 0.0f, \
1081 .uv_scale = 1.0f, \
1082 .fill_rotation = 0.0f, \
1083 .fill_offset = {0.0f, 0.0f}, \
1084 .fill_scale = 1.0f, \
1085 .fit_method = GP_TEX_CONSTANT_LENGTH, \
1086 .mode = 0, \
1087 }
1088
1089/* clang-format off */