[Bf-blender-cvs] [4401500] fracture_modifier: Merge remote-tracking branch 'refs/remotes/origin/master' into fracture_modifier
Martin Felke
noreply at git.blender.org
Sun Jan 11 18:05:02 CET 2015
Commit: 4401500cac4d3ff6e29d8ba4cbc476df49d88424
Author: Martin Felke
Date: Sun Jan 11 17:35:46 2015 +0100
Branches: fracture_modifier
https://developer.blender.org/rB4401500cac4d3ff6e29d8ba4cbc476df49d88424
Merge remote-tracking branch 'refs/remotes/origin/master' into fracture_modifier
Conflicts:
source/blender/editors/space_outliner/outliner_draw.c
source/blender/makesdna/DNA_modifier_types.h
source/blender/makesrna/intern/rna_modifier.c
source/blender/modifiers/MOD_modifiertypes.h
source/blender/modifiers/intern/MOD_util.c
===================================================================
===================================================================
diff --cc source/blender/editors/space_outliner/outliner_draw.c
index d510cf0,a963f42..ca265cc
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@@ -1018,8 -1018,8 +1018,10 @@@ static void tselem_draw_icon(uiBlock *b
UI_icon_draw(x, y, ICON_MOD_WIREFRAME); break;
case eModifierType_LaplacianDeform:
UI_icon_draw(x, y, ICON_MOD_MESHDEFORM); break; /* XXX, needs own icon */
+ case eModifierType_DataTransfer:
+ UI_icon_draw(x, y, ICON_MOD_DATA_TRANSFER); break;
+ case eModifierType_Fracture:
+ UI_icon_draw(x, y, ICON_MOD_EXPLODE); break;
/* Default */
case eModifierType_None:
case eModifierType_ShapeKey:
diff --cc source/blender/makesdna/DNA_modifier_types.h
index 9514903,b1e9fd2..dcb054f
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@@ -82,7 -82,7 +82,8 @@@ typedef enum ModifierType
eModifierType_MeshCache = 46,
eModifierType_LaplacianDeform = 47,
eModifierType_Wireframe = 48,
- eModifierType_Fracture = 49,
+ eModifierType_DataTransfer = 49,
++ eModifierType_Fracture = 50,
NUM_MODIFIER_TYPES
} ModifierType;
@@@ -1400,102 -1367,48 +1401,145 @@@ enum
MOD_WIREFRAME_CREASE = (1 << 5),
};
+enum {
+ MOD_FRACTURE_BISECT_FAST = (1 << 0),
+ MOD_FRACTURE_BISECT_FAST_FILL = (1 << 1),
+ MOD_FRACTURE_BOOLEAN = (1 << 2),
+ MOD_FRACTURE_BISECT_FILL = (1 << 3),
+ MOD_FRACTURE_BISECT = (1 << 4),
+};
+
+enum {
+ MOD_FRACTURE_OWN_VERTS = (1 << 0),
+ MOD_FRACTURE_OWN_PARTICLES = (1 << 1),
+ MOD_FRACTURE_EXTRA_VERTS = (1 << 2),
+ MOD_FRACTURE_EXTRA_PARTICLES = (1 << 3),
+ MOD_FRACTURE_GREASEPENCIL = (1 << 4),
+ MOD_FRACTURE_UNIFORM = (1 << 5),
+};
+
+enum {
+ MOD_FRACTURE_SPLINTER_X = (1 << 0),
+ MOD_FRACTURE_SPLINTER_Y = (1 << 1),
+ MOD_FRACTURE_SPLINTER_Z = (1 << 2),
+};
+
+typedef struct FractureModifierData {
+ ModifierData modifier;
+ struct FracMesh *frac_mesh; /* store only the current fracmesh here first, later maybe an entire history...*/
+ struct DerivedMesh *dm;
+ struct Group *extra_group;
+ struct Group *dm_group;
+ struct BMesh *visible_mesh;
+ struct DerivedMesh *visible_mesh_cached;
+ ListBase meshIslands, meshConstraints;
+ ListBase islandShards;
+ char thresh_defgrp_name[64]; /* MAX_VGROUP_NAME */
+ char ground_defgrp_name[64]; /* MAX_VGROUP_NAME */
+ char inner_defgrp_name[64]; /* MAX_VGROUP_NAME */
+ struct KDTree *nor_tree; /* store original vertices here (coords), to find them later and reuse their normals */
+ struct Material *inner_material;
+ struct GHash *face_pairs;
+
+ /* values */
+ int frac_algorithm;
+ int shard_count;
+ int shard_id;
+ int point_source;
+ int point_seed;
+ int percentage;
+ int cluster_count;
+
+ int constraint_limit;
+ int solver_iterations_override;
+ int cluster_solver_iterations_override;
+ int breaking_percentage;
+ int cluster_breaking_percentage;
+ int splinter_axis;
+
+ float breaking_angle;
+ float breaking_distance;
+ float cluster_breaking_angle;
+ float cluster_breaking_distance;
+ float origmat[4][4];
+ float breaking_threshold;
+ float cluster_breaking_threshold;
+ float contact_dist, autohide_dist;
+ float splinter_length;
+ float nor_range;
+
+ /* flags */
+ int refresh;
+ int refresh_constraints;
+ int refresh_autohide;
+
+ int use_constraints;
+ int use_mass_dependent_thresholds;
+ int use_particle_birth_coordinates;
+ int use_breaking;
+ int use_smooth;
+
+ int shards_to_islands;
+ int execute_threaded;
+ int fix_normals;
+ int auto_execute;
+
+ int breaking_distance_weighted;
+ int breaking_angle_weighted;
+ int breaking_percentage_weighted;
+
+ /* internal flags */
+ int use_experimental;
+ int explo_shared;
+ int refresh_images;
+
+ /* internal values */
+ float max_vol;
+
+ //char pad[4];
+} FractureModifierData;
+ typedef struct DataTransferModifierData {
+ ModifierData modifier;
+
+ struct Object *ob_source;
+
+ int data_types; /* See DT_TYPE_ enum in ED_object.h */
+
+ /* See MREMAP_MODE_ enum in BKE_mesh_mapping.h */
+ int vmap_mode;
+ int emap_mode;
+ int lmap_mode;
+ int pmap_mode;
+
+ float map_max_distance;
+ float map_ray_radius;
+ float islands_precision;
+
+ int pad_i1;
+
+ int layers_select_src[4]; /* DT_MULTILAYER_INDEX_MAX; See DT_FROMLAYERS_ enum in ED_object.h */
+ int layers_select_dst[4]; /* DT_MULTILAYER_INDEX_MAX; See DT_TOLAYERS_ enum in ED_object.h */
+
+ int mix_mode; /* See CDT_MIX_ enum in BKE_customdata.h */
+ float mix_factor;
+ char defgrp_name[64]; /* MAX_VGROUP_NAME */
+
+ int flags;
+ } DataTransferModifierData;
+
+ /* DataTransferModifierData.flags */
+ enum {
+ MOD_DATATRANSFER_OBSRC_TRANSFORM = 1 << 0,
+ MOD_DATATRANSFER_MAP_MAXDIST = 1 << 1,
+ MOD_DATATRANSFER_INVERT_VGROUP = 1 << 2,
+
+ /* Only for UI really. */
+ MOD_DATATRANSFER_USE_VERT = 1 << 28,
+ MOD_DATATRANSFER_USE_EDGE = 1 << 29,
+ MOD_DATATRANSFER_USE_LOOP = 1 << 30,
+ MOD_DATATRANSFER_USE_POLY = 1 << 31,
+ };
+
+
#endif /* __DNA_MODIFIER_TYPES_H__ */
diff --cc source/blender/makesrna/intern/rna_modifier.c
index 081f06e,9780c45..ae0d7e6
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@@ -44,11 -43,15 +44,16 @@@
#include "BLF_translation.h"
#include "BKE_animsys.h"
+ #include "BKE_object_data_transfer.h"
+ #include "BKE_DerivedMesh.h"
#include "BKE_dynamicpaint.h"
+ #include "BKE_mesh_mapping.h"
+ #include "BKE_mesh_remap.h"
#include "BKE_multires.h"
#include "BKE_smoke.h" /* For smokeModifier_free & smokeModifier_createType */
+#include "BKE_rigidbody.h"
+ #include "RNA_access.h"
#include "RNA_define.h"
#include "RNA_enum_types.h"
@@@ -250,8 -355,8 +360,10 @@@ static StructRNA *rna_Modifier_refine(s
return &RNA_LaplacianDeformModifier;
case eModifierType_Wireframe:
return &RNA_WireframeModifier;
+ case eModifierType_DataTransfer:
+ return &RNA_DataTransferModifier;
+ case eModifierType_Fracture:
+ return &RNA_FractureModifier;
/* Default */
case eModifierType_None:
case eModifierType_ShapeKey:
@@@ -3864,290 -4072,251 +4237,535 @@@ static void rna_def_modifier_wireframe(
RNA_def_property_update(prop, 0, "rna_Modifier_update");
}
+ static void rna_def_modifier_datatransfer(BlenderRNA *brna)
+ {
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ static EnumPropertyItem DT_layer_vert_items[] = {
+ #if 0 /* XXX When SkinModifier is enabled, it seems to erase its own CD_MVERT_SKIN layer from final DM :( */
+ {DT_TYPE_SKIN, "SKIN", 0, "Skin Weight", "Transfer skin weights"},
+ #endif
+ {DT_TYPE_BWEIGHT_VERT, "BEVEL_WEIGHT_VERT", 0, "Bevel Weight", "Transfer bevel weights"},
+ {0, NULL, 0, NULL, NULL}
+ };
+ static EnumPropertyItem DT_layer_vert_vgroup_items[] = {
+ {DT_TYPE_MDEFORMVERT, "VGROUP_WEIGHTS", 0, "Vertex Group(s)", "Transfer active or all vertex groups"},
+ {0, NULL, 0, NULL, NULL}
+ };
+ #if 0 /* XXX For now, would like to finish/merge work from 2014 gsoc first. */
+ static EnumPropertyItem DT_layer_vert_shapekey_items[] = {
+ {DT_TYPE_SHAPEKEY, "SHAPEKEYS", 0, "Shapekey(s)", "Transfer active or all shape keys"},
+ {0, NULL, 0, NULL, NULL}
+ };
+ #endif
+
+ static EnumPropertyItem DT_layer_edge_items[] = {
+ {DT_TYPE_SHARP_EDGE, "SHARP_EDGE", 0, "Sharp", "Transfer sharp mark"},
+ {DT_TYPE_SEAM, "SEAM", 0, "UV Seam", "Transfer UV seam mark"},
+ {DT_TYPE_CREASE, "CREASE", 0, "Subsurf Crease", "Transfer crease values"},
+ {DT_TYPE_BWEIGHT_EDGE, "BEVEL_WEIGHT_EDGE", 0, "Bevel Weight", "Transfer bevel weights"},
+ {DT_TYPE_FREESTYLE_EDGE, "FREESTYLE_EDGE", 0, "Freestyle Mark", "Transfer Freestyle edge mark"},
+ {0, NULL, 0, NULL, NULL}
+ };
+
+ static EnumPropertyItem DT_layer_loop_items[] = {
+ {0, NULL, 0, NULL, NULL}
+ };
+ static EnumPropertyItem DT_layer_loop_vcol_items[] = {
+ {DT_TYPE_VCOL, "VCOL", 0, "VCol", "Vertex (face corners) colors"},
+ {0, NULL, 0, NULL, NULL}
+ };
+ static EnumPropertyItem DT_layer_loop_uv_items[] = {
+ {DT_TYPE_UV, "UV", 0, "UVs", "Transfer UV layers"},
+ {0, NULL, 0, NULL, NULL}
+ };
+
+ static EnumPropertyItem DT_layer_poly_items[] = {
+ {DT_TYPE_SHARP_FACE, "SMOOTH", 0, "Smooth", "Transfer flat/smooth mark"},
+ {DT_TYPE_FREESTYLE_FACE, "FREESTYLE_FACE", 0, "Freestyle Mark", "Transfer Freestyle face mark"},
+ {0, NULL, 0, NULL, NULL}
+ };
+
+ srna = RNA_def_struct(brna, "DataTransferModifier", "Modifier");
+ RNA_def_struct_ui_text(srna, "Data Transfer Modifier", "Modifier transferring some data from a source mesh");
+ RNA_def_struct_sdna(srna, "DataTransferModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MOD_DATA_TRANSFER);
+
+ prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "ob_source");
+ RNA_def_property_ui_text(prop, "Source Object", "Object to transfer data from");
+ RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
+ RNA_def_property_pointer_funcs(prop, NULL, "rna_DataTransferModifier_ob_source_set", NULL, "rna_Mesh_object_poll");
+ RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update");
+
+ prop = RNA_def_boolean(srna, "use_object_transform", true, "Object Transform",
+ "Evaluate source and destination meshes in their respective object spaces");
+ RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DATATRANSFER_OBSRC_TRANSFORM);
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ /* Generic, UI-only data types toggles. */
+ prop = RNA_def_boolean(srna, "use_vert_data", false, "Vertex Data", "Enable vertex data transfer");
+ RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_DATATRANSFER_USE_VERT);
+ RNA_def_property_update(prop, 0, "rna_DataTransferModifier_use_data_update");
+
+ prop = RNA_def_boolean(srna, "use_edge_data", false, "Edge Data", "Enable edge data transfer");
+ RNA_def_property_boolean_sdna(
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list