Blender V4.5
DNA_modifier_enums.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
10#pragma once
11
12/* Grease Pencil Modifiers */
13
24
29
30typedef enum eNoiseGpencil_Flag {
32 GP_NOISE_MOD_LOCATION = (1 << 1), /* Deprecated (only for versioning). */
33 GP_NOISE_MOD_STRENGTH = (1 << 2), /* Deprecated (only for versioning). */
34 GP_NOISE_MOD_THICKNESS = (1 << 3), /* Deprecated (only for versioning). */
40 GP_NOISE_MOD_UV = (1 << 9), /* Deprecated (only for versioning). */
44
49
59
64
65/* Shrink-wrap Modifier */
66
68enum {
73};
74
76enum {
87};
88
90enum {
95
100
101#ifdef DNA_DEPRECATED_ALLOW
103 MOD_SHRINKWRAP_KEEP_ABOVE_SURFACE = (1 << 5),
104#endif
105
108};
109
110#define MOD_SHRINKWRAP_CULL_TARGET_MASK \
111 (MOD_SHRINKWRAP_CULL_TARGET_FRONTFACE | MOD_SHRINKWRAP_CULL_TARGET_BACKFACE)
112
114enum {
120};
121
122/* TransferData modifier */
123
124enum {
127 DT_TYPE_SKIN = 1 << 2,
129
131 DT_TYPE_SEAM = 1 << 9,
132 DT_TYPE_CREASE = 1 << 10,
135
137 DT_TYPE_LNOR = 1 << 17,
138
139 DT_TYPE_UV = 1 << 24,
145 DT_TYPE_VCOL_ALL = (1 << 16) | (1 << 27) | (1 << 28) | (1 << 29),
146#define DT_TYPE_MAX 30
147
154};
155
156#define DT_DATATYPE_IS_VERT(_dt) \
157 ELEM(_dt, \
158 DT_TYPE_MDEFORMVERT, \
159 DT_TYPE_SHAPEKEY, \
160 DT_TYPE_SKIN, \
161 DT_TYPE_BWEIGHT_VERT, \
162 DT_TYPE_MLOOPCOL_VERT, \
163 DT_TYPE_MPROPCOL_VERT)
164#define DT_DATATYPE_IS_EDGE(_dt) \
165 ELEM(_dt, \
166 DT_TYPE_CREASE, \
167 DT_TYPE_SHARP_EDGE, \
168 DT_TYPE_SEAM, \
169 DT_TYPE_BWEIGHT_EDGE, \
170 DT_TYPE_FREESTYLE_EDGE)
171#define DT_DATATYPE_IS_LOOP(_dt) \
172 ELEM(_dt, DT_TYPE_UV, DT_TYPE_LNOR, DT_TYPE_MLOOPCOL_LOOP, DT_TYPE_MPROPCOL_LOOP)
173#define DT_DATATYPE_IS_FACE(_dt) ELEM(_dt, DT_TYPE_UV, DT_TYPE_SHARP_FACE, DT_TYPE_FREESTYLE_FACE)
174
175#define DT_DATATYPE_IS_MULTILAYERS(_dt) \
176 ELEM(_dt, \
177 DT_TYPE_MDEFORMVERT, \
178 DT_TYPE_SHAPEKEY, \
179 DT_TYPE_MPROPCOL_VERT, \
180 DT_TYPE_MLOOPCOL_VERT, \
181 DT_TYPE_MPROPCOL_VERT | DT_TYPE_MLOOPCOL_VERT, \
182 DT_TYPE_MPROPCOL_LOOP, \
183 DT_TYPE_MLOOPCOL_LOOP, \
184 DT_TYPE_MPROPCOL_LOOP | DT_TYPE_MLOOPCOL_LOOP, \
185 DT_TYPE_UV)
186
187enum {
195};
196
197/* Below we keep positive values for real layers idx (generated dynamically). */
198
199/* How to select data layers, for types supporting multi-layers.
200 * Here too, some options are highly dependent on type of transferred data! */
201enum {
204 /* Datatype-specific. */
208 /* Other types-related modes... */
209};
210
211/* How to map a source layer to a destination layer, for types supporting multi-layers.
212 * NOTE: if no matching layer can be found, it will be created. */
213enum {
214 DT_LAYERS_ACTIVE_DST = -1, /* Only for DT_LAYERS_FROMSEL_ACTIVE. */
217#if 0 /* TODO */
218 DT_LAYERS_CREATE_DST = -4, /* Never replace existing data in dst, always create new layers. */
219#endif
220};
221
222/* TODO:
223 * Add other 'from/to' mapping sources, like e.g. using a UVMap, etc.
224 * https://blenderartists.org/t/619105
225 *
226 * We could also use similar topology mappings inside a same mesh
227 * (cf. Campbell's 'select face islands from similar topology' WIP work).
228 * Also, users will have to check, whether we can get rid of some modes here,
229 * not sure all will be useful!
230 */
231enum {
236
241
242 /* ***** Target's vertices ***** */
244 /* Nearest source vert. */
246
247 /* Nearest vertex of nearest edge. */
249 /* This one uses two verts of selected edge (weighted interpolation). */
250 /* Nearest point on nearest edge. */
253
254 /* Nearest vertex of nearest face. */
256 /* Those two use all verts of selected face (weighted interpolation). */
257 /* Nearest point on nearest face. */
260 /* Point on nearest face hit by ray from target vertex's normal. */
263
264 /* ***** Target's edges ***** */
266
267 /* Source edge which both vertices are nearest of destination ones. */
269
270 /* Nearest source edge (using mid-point). */
272
273 /* Nearest edge of nearest face (using mid-point). */
275
276 /* Cast a set of rays from along destination edge,
277 * interpolating its vertices' normals, and use hit source edges. */
280
281 /* ***** Target's loops ***** */
282 /* NOTE: when islands are given to loop mapping func,
283 * all loops from the same destination face will always be mapped
284 * to loops of source faces within a same island, regardless of mapping mode. */
286
287 /* Best normal-matching loop from nearest vert. */
290 /* Loop from best normal-matching face from nearest vert. */
293
294 /* Loop from nearest vertex of nearest face. */
296 /* Those two use all verts of selected face (weighted interpolation). */
297 /* Nearest point on nearest face. */
300 /* Point on nearest face hit by ray from target loop's normal. */
303
304 /* ***** Target's faces ***** */
306
307 /* Nearest source face. */
309 /* Source face from best normal-matching destination face. */
311
312 /* Project destination face onto source mesh using its normal,
313 * and use interpolation of all intersecting source faces. */
316
317 /* ***** Same topology, applies to all four elements types. ***** */
319};
320
324enum {
325 CDT_MIX_NOMIX = -1, /* Special case, only used because we abuse 'copy' CD callback. */
333 /* Etc. */
334};
eLengthGpencil_Flag
@ GP_LENGTH_INVERT_PASS
@ GP_LENGTH_INVERT_MATERIAL
@ GP_LENGTH_INVERT_CURVATURE
@ GP_LENGTH_INVERT_LAYER
@ GP_LENGTH_USE_RANDOM
@ GP_LENGTH_USE_CURVATURE
@ GP_LENGTH_INVERT_LAYERPASS
@ MOD_SHRINKWRAP_ON_SURFACE
@ MOD_SHRINKWRAP_OUTSIDE
@ MOD_SHRINKWRAP_INSIDE
@ MOD_SHRINKWRAP_ABOVE_SURFACE
@ MOD_SHRINKWRAP_OUTSIDE_SURFACE
@ DT_TYPE_VCOL_ALL
@ DT_TYPE_MLOOPCOL_LOOP
@ DT_TYPE_SKIN
@ DT_TYPE_UV
@ DT_TYPE_MPROPCOL_VERT
@ DT_TYPE_VERT_ALL
@ DT_TYPE_BWEIGHT_VERT
@ DT_TYPE_FREESTYLE_FACE
@ DT_TYPE_SHAPEKEY
@ DT_TYPE_CREASE
@ DT_TYPE_LOOP_ALL
@ DT_TYPE_SEAM
@ DT_TYPE_POLY_ALL
@ DT_TYPE_MLOOPCOL_VERT
@ DT_TYPE_LNOR
@ DT_TYPE_MPROPCOL_LOOP
@ DT_TYPE_EDGE_ALL
@ DT_TYPE_SHARP_FACE
@ DT_TYPE_MDEFORMVERT
@ DT_TYPE_BWEIGHT_EDGE
@ DT_TYPE_FREESTYLE_EDGE
@ DT_TYPE_SHARP_EDGE
@ MOD_SHRINKWRAP_PROJECT_OVER_X_AXIS
@ MOD_SHRINKWRAP_PROJECT_OVER_Y_AXIS
@ MOD_SHRINKWRAP_PROJECT_OVER_Z_AXIS
@ MOD_SHRINKWRAP_PROJECT_OVER_NORMAL
@ DT_LAYERS_VGROUP_SRC_BONE_SELECT
@ DT_LAYERS_VGROUP_SRC_BONE_DEFORM
@ DT_LAYERS_VGROUP_SRC
@ DT_LAYERS_ALL_SRC
@ DT_LAYERS_ACTIVE_SRC
eLengthGpencil_Type
@ GP_LENGTH_ABSOLUTE
@ GP_LENGTH_RELATIVE
@ MREMAP_MODE_VERT_EDGE_NEAREST
@ MREMAP_MODE_LOOP_POLYINTERP_NEAREST
@ MREMAP_MODE_VERT_POLYINTERP_VNORPROJ
@ MREMAP_MODE_VERT_FACE_NEAREST
@ MREMAP_MODE_LOOP
@ MREMAP_MODE_EDGE_POLY_NEAREST
@ MREMAP_MODE_POLY
@ MREMAP_MODE_VERT_EDGEINTERP_NEAREST
@ MREMAP_MODE_VERT_NEAREST
@ MREMAP_MODE_LOOP_NEAREST_POLYNOR
@ MREMAP_MODE_EDGE_VERT_NEAREST
@ MREMAP_USE_NORMAL
@ MREMAP_USE_LOOP
@ MREMAP_USE_INTERP
@ MREMAP_MODE_TOPOLOGY
@ MREMAP_MODE_VERT
@ MREMAP_USE_POLY
@ MREMAP_USE_NEAREST
@ MREMAP_MODE_EDGE
@ MREMAP_MODE_EDGE_NEAREST
@ MREMAP_MODE_POLY_NOR
@ MREMAP_USE_EDGE
@ MREMAP_MODE_LOOP_POLYINTERP_LNORPROJ
@ MREMAP_MODE_LOOP_NEAREST_LOOPNOR
@ MREMAP_MODE_LOOP_POLY_NEAREST
@ MREMAP_USE_NORPROJ
@ MREMAP_MODE_EDGE_EDGEINTERP_VNORPROJ
@ MREMAP_USE_VERT
@ MREMAP_MODE_POLY_POLYINTERP_PNORPROJ
@ MREMAP_MODE_POLY_NEAREST
@ MREMAP_MODE_VERT_POLYINTERP_NEAREST
@ CDT_MIX_SUB
@ CDT_MIX_REPLACE_BELOW_THRESHOLD
@ CDT_MIX_REPLACE_ABOVE_THRESHOLD
@ CDT_MIX_ADD
@ CDT_MIX_MUL
@ CDT_MIX_TRANSFER
@ CDT_MIX_MIX
@ CDT_MIX_NOMIX
@ MOD_SHRINKWRAP_TARGET_PROJECT
@ MOD_SHRINKWRAP_NEAREST_VERTEX
@ MOD_SHRINKWRAP_PROJECT
@ MOD_SHRINKWRAP_NEAREST_SURFACE
@ DT_LAYERS_ACTIVE_DST
@ DT_LAYERS_INDEX_DST
@ DT_LAYERS_NAME_DST
eTextureGpencil_Fit
@ GP_TEX_FIT_STROKE
@ GP_TEX_CONSTANT_LENGTH
eArrayGpencil_Flag
@ GP_ARRAY_USE_OFFSET
@ GP_ARRAY_UNIFORM_RANDOM_SCALE
@ GP_ARRAY_INVERT_MATERIAL
@ GP_ARRAY_INVERT_LAYER
@ GP_ARRAY_USE_RELATIVE
@ GP_ARRAY_INVERT_LAYERPASS
@ GP_ARRAY_USE_OB_OFFSET
@ GP_ARRAY_INVERT_PASS
@ MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR
@ MOD_SHRINKWRAP_CULL_TARGET_FRONTFACE
@ MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR
@ MOD_SHRINKWRAP_CULL_TARGET_BACKFACE
@ MOD_SHRINKWRAP_INVERT_VGROUP
@ MOD_SHRINKWRAP_INVERT_CULL_TARGET
eNoiseRandomGpencil_Mode
@ GP_NOISE_RANDOM_STEP
@ GP_NOISE_RANDOM_KEYFRAME
@ DT_MULTILAYER_INDEX_MAX
@ DT_MULTILAYER_INDEX_MDEFORMVERT
@ DT_MULTILAYER_INDEX_INVALID
@ DT_MULTILAYER_INDEX_SHAPEKEY
@ DT_MULTILAYER_INDEX_UV
@ DT_MULTILAYER_INDEX_VCOL_VERT
@ DT_MULTILAYER_INDEX_VCOL_LOOP
eNoiseGpencil_Flag
@ GP_NOISE_INVERT_PASS
@ GP_NOISE_INVERT_LAYER
@ GP_NOISE_INVERT_VGROUP
@ GP_NOISE_INVERT_MATERIAL
@ GP_NOISE_MOD_UV
@ GP_NOISE_MOD_STRENGTH
@ GP_NOISE_MOD_THICKNESS
@ GP_NOISE_CUSTOM_CURVE
@ GP_NOISE_INVERT_LAYERPASS
@ GP_NOISE_FULL_STROKE
@ GP_NOISE_MOD_LOCATION
@ GP_NOISE_USE_RANDOM