Blender V5.0
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 {
126 DT_TYPE_SKIN = 1 << 2,
128
130 DT_TYPE_SEAM = 1 << 9,
131 DT_TYPE_CREASE = 1 << 10,
134
136 DT_TYPE_LNOR = 1 << 17,
137
138 DT_TYPE_UV = 1 << 24,
144 DT_TYPE_VCOL_ALL = (1 << 16) | (1 << 27) | (1 << 28) | (1 << 29),
145#define DT_TYPE_MAX 30
146
153};
154
155#define DT_DATATYPE_IS_VERT(_dt) \
156 ELEM(_dt, \
157 DT_TYPE_MDEFORMVERT, \
158 DT_TYPE_SKIN, \
159 DT_TYPE_BWEIGHT_VERT, \
160 DT_TYPE_MLOOPCOL_VERT, \
161 DT_TYPE_MPROPCOL_VERT)
162#define DT_DATATYPE_IS_EDGE(_dt) \
163 ELEM(_dt, \
164 DT_TYPE_CREASE, \
165 DT_TYPE_SHARP_EDGE, \
166 DT_TYPE_SEAM, \
167 DT_TYPE_BWEIGHT_EDGE, \
168 DT_TYPE_FREESTYLE_EDGE)
169#define DT_DATATYPE_IS_LOOP(_dt) \
170 ELEM(_dt, DT_TYPE_UV, DT_TYPE_LNOR, DT_TYPE_MLOOPCOL_LOOP, DT_TYPE_MPROPCOL_LOOP)
171#define DT_DATATYPE_IS_FACE(_dt) ELEM(_dt, DT_TYPE_UV, DT_TYPE_SHARP_FACE, DT_TYPE_FREESTYLE_FACE)
172
173#define DT_DATATYPE_IS_MULTILAYERS(_dt) \
174 ELEM(_dt, \
175 DT_TYPE_MDEFORMVERT, \
176 DT_TYPE_MPROPCOL_VERT, \
177 DT_TYPE_MLOOPCOL_VERT, \
178 DT_TYPE_MPROPCOL_VERT | DT_TYPE_MLOOPCOL_VERT, \
179 DT_TYPE_MPROPCOL_LOOP, \
180 DT_TYPE_MLOOPCOL_LOOP, \
181 DT_TYPE_MPROPCOL_LOOP | DT_TYPE_MLOOPCOL_LOOP, \
182 DT_TYPE_UV)
183
184enum {
191};
192
193/* Below we keep positive values for real layers idx (generated dynamically). */
194
195/* How to select data layers, for types supporting multi-layers.
196 * Here too, some options are highly dependent on type of transferred data! */
197enum {
200 /* Datatype-specific. */
204 /* Other types-related modes... */
205};
206
207/* How to map a source layer to a destination layer, for types supporting multi-layers.
208 * NOTE: if no matching layer can be found, it will be created. */
209enum {
210 DT_LAYERS_ACTIVE_DST = -1, /* Only for DT_LAYERS_FROMSEL_ACTIVE. */
213#if 0 /* TODO */
214 DT_LAYERS_CREATE_DST = -4, /* Never replace existing data in dst, always create new layers. */
215#endif
216};
217
218/* TODO:
219 * Add other 'from/to' mapping sources, like e.g. using a UVMap, etc.
220 * https://blenderartists.org/t/619105
221 *
222 * We could also use similar topology mappings inside a same mesh
223 * (cf. Campbell's 'select face islands from similar topology' WIP work).
224 * Also, users will have to check, whether we can get rid of some modes here,
225 * not sure all will be useful!
226 */
227enum {
232
237
238 /* ***** Target's vertices ***** */
240 /* Nearest source vert. */
242
243 /* Nearest vertex of nearest edge. */
245 /* This one uses two verts of selected edge (weighted interpolation). */
246 /* Nearest point on nearest edge. */
249
250 /* Nearest vertex of nearest face. */
252 /* Those two use all verts of selected face (weighted interpolation). */
253 /* Nearest point on nearest face. */
256 /* Point on nearest face hit by ray from target vertex's normal. */
259
260 /* ***** Target's edges ***** */
262
263 /* Source edge which both vertices are nearest of destination ones. */
265
266 /* Nearest source edge (using mid-point). */
268
269 /* Nearest edge of nearest face (using mid-point). */
271
272 /* Cast a set of rays from along destination edge,
273 * interpolating its vertices' normals, and use hit source edges. */
276
277 /* ***** Target's loops ***** */
278 /* NOTE: when islands are given to loop mapping func,
279 * all loops from the same destination face will always be mapped
280 * to loops of source faces within a same island, regardless of mapping mode. */
282
283 /* Best normal-matching loop from nearest vert. */
286 /* Loop from best normal-matching face from nearest vert. */
289
290 /* Loop from nearest vertex of nearest face. */
292 /* Those two use all verts of selected face (weighted interpolation). */
293 /* Nearest point on nearest face. */
296 /* Point on nearest face hit by ray from target loop's normal. */
299
300 /* ***** Target's faces ***** */
302
303 /* Nearest source face. */
305 /* Source face from best normal-matching destination face. */
307
308 /* Project destination face onto source mesh using its normal,
309 * and use interpolation of all intersecting source faces. */
312
313 /* ***** Same topology, applies to all four elements types. ***** */
315};
316
320enum {
321 CDT_MIX_NOMIX = -1, /* Special case, only used because we abuse 'copy' CD callback. */
329 /* Etc. */
330};
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
@ 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
@ DT_LAYERS_ACTIVE_DST
@ DT_LAYERS_INDEX_DST
@ DT_LAYERS_NAME_DST
@ DT_MULTILAYER_INDEX_MAX
@ DT_MULTILAYER_INDEX_MDEFORMVERT
@ DT_MULTILAYER_INDEX_INVALID
@ DT_MULTILAYER_INDEX_UV
@ DT_MULTILAYER_INDEX_VCOL_VERT
@ DT_MULTILAYER_INDEX_VCOL_LOOP
@ MOD_SHRINKWRAP_PROJECT_OVER_X_AXIS
@ MOD_SHRINKWRAP_PROJECT_OVER_Y_AXIS
@ MOD_SHRINKWRAP_PROJECT_OVER_Z_AXIS
@ MOD_SHRINKWRAP_PROJECT_OVER_NORMAL
@ 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
@ MOD_SHRINKWRAP_TARGET_PROJECT
@ MOD_SHRINKWRAP_NEAREST_VERTEX
@ MOD_SHRINKWRAP_PROJECT
@ MOD_SHRINKWRAP_NEAREST_SURFACE
eTextureGpencil_Fit
@ GP_TEX_FIT_STROKE
@ GP_TEX_CONSTANT_LENGTH
@ 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_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
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_ON_SURFACE
@ MOD_SHRINKWRAP_OUTSIDE
@ MOD_SHRINKWRAP_INSIDE
@ MOD_SHRINKWRAP_ABOVE_SURFACE
@ MOD_SHRINKWRAP_OUTSIDE_SURFACE
@ 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
eNoiseRandomGpencil_Mode
@ GP_NOISE_RANDOM_STEP
@ GP_NOISE_RANDOM_KEYFRAME
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
@ 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