[Bf-blender-cvs] [85cb9a2] fracture_modifier: Merge remote-tracking branch 'refs/remotes/origin/blender-v2.74-release' into fracture_modifier

Martin Felke noreply at git.blender.org
Wed Apr 1 11:42:32 CEST 2015


Commit: 85cb9a2b0d69467a3b8b369468bb00f6af0256a8
Author: Martin Felke
Date:   Wed Apr 1 11:31:53 2015 +0200
Branches: fracture_modifier
https://developer.blender.org/rB85cb9a2b0d69467a3b8b369468bb00f6af0256a8

Merge remote-tracking branch 'refs/remotes/origin/blender-v2.74-release' into fracture_modifier

Conflicts:
	intern/cycles/render/scene.cpp
	release/datafiles/blender_icons.svg
	release/datafiles/blender_icons16/icon16_mod_data_transfer.dat
	release/datafiles/blender_icons32/icon32_mod_data_transfer.dat
	release/scripts/startup/bl_ui/properties_data_modifier.py
	source/blender/blenkernel/BKE_blender.h
	source/blender/blenkernel/BKE_customdata.h
	source/blender/blenkernel/BKE_data_transfer.h
	source/blender/blenkernel/BKE_mesh_remap.h
	source/blender/blenkernel/intern/customdata.c
	source/blender/blenkernel/intern/data_transfer.c
	source/blender/blenkernel/intern/data_transfer_intern.h
	source/blender/blenkernel/intern/deform.c
	source/blender/blenkernel/intern/mesh_mapping.c
	source/blender/blenkernel/intern/mesh_remap.c
	source/blender/blenkernel/intern/object.c
	source/blender/editors/include/UI_icons.h
	source/blender/editors/object/object_data_transfer.c
	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_datatransfer.c
	source/blender/modifiers/intern/MOD_util.c

===================================================================



===================================================================

diff --cc release/scripts/startup/bl_ui/properties_data_modifier.py
index fe4bef3,f22976f..79424ab
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@@ -351,10 -351,8 +351,11 @@@ class DATA_PT_modifiers(ModifierButtons
      def FLUID_SIMULATION(self, layout, ob, md):
          layout.label(text="Settings are inside the Physics tab")
  
 +    def FRACTURE(self, layout, ob, md):
 +        layout.label(text="Settings are inside the Physics tab")
 +
      def HOOK(self, layout, ob, md):
+         use_falloff = (md.falloff_type != 'NONE')
          split = layout.split()
  
          col = split.column()
diff --cc source/blender/blenkernel/intern/mesh_mapping.c
index 53d1aae,8d9fbe4..0b76fe3
--- a/source/blender/blenkernel/intern/mesh_mapping.c
+++ b/source/blender/blenkernel/intern/mesh_mapping.c
@@@ -345,22 -376,23 +376,24 @@@ void BKE_mesh_origindex_map_create(Mesh
  /** \} */
  
  
- 
  /* -------------------------------------------------------------------- */
  
- /** \name Mesh Smooth Groups
+ /** \name Mesh loops/poly islands.
+  * Used currently for UVs and 'smooth groups'.
   * \{ */
  
- /**
-  * Calculate smooth groups from sharp edges.
-  *
-  * \param r_totgroup The total number of groups, 1 or more.
-  * \return Polygon aligned array of group index values (bitflags if use_bitflags is true), starting at 1.
+ /** Callback deciding whether the given poly/loop/edge define an island boundary or not.
   */
+ typedef bool (*MeshRemap_CheckIslandBoundary)(
+         const struct MPoly *mpoly, const struct MLoop *mloop, const struct MEdge *medge,
+         const int nbr_egde_users);
+ 
+ static void poly_edge_loop_islands_calc(
 +int *BKE_mesh_calc_smoothgroups(const MEdge *medge, const int totedge,
-                                 const MPoly *mpoly, const int totpoly,
-                                 const MLoop *mloop, const int totloop,
-                                 int *r_totgroup, const bool use_bitflags)
+         const MEdge *medge, const int totedge, const MPoly *mpoly, const int totpoly,
+         const MLoop *mloop, const int totloop, MeshElemMap *edge_poly_map,
+         const bool use_bitflags, MeshRemap_CheckIslandBoundary edge_boundary_check,
+         int **r_poly_groups, int *r_totgroup, BLI_bitmap **r_edge_borders, int *r_totedgeborder)
  {
  	int *poly_groups;
  	int *poly_stack;
@@@ -372,8 -407,7 +408,8 @@@
  	bool group_id_overflow = false;
  
  	/* map vars */
- 	MeshElemMap *edge_poly_map;
+ 	int *edge_poly_mem = NULL;
 +	int *edge_poly_mem;
  
  	if (totpoly == 0) {
  		*r_totgroup = 0;
diff --cc source/blender/blenkernel/intern/object.c
index ab26294,8a6c641..d446e1b
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@@ -3563,9 -3630,14 +3660,15 @@@ int BKE_object_is_deform_modified(Scen
  	     md = md->next)
  	{
  		ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+ 		bool can_deform = mti->type == eModifierTypeType_OnlyDeform ||
++		                  md->type == eModifierType_Fracture ||
+ 		                  is_modifier_animated;
+ 
+ 		if (!can_deform) {
+ 			can_deform = constructive_modifier_is_deform_modified(md);
+ 		}
  
- 		/* special case for fracture modifier, for object deformation motion blur with the shards */
- 		if (mti->type == eModifierTypeType_OnlyDeform || md->type == eModifierType_Fracture) {
+ 		if (can_deform) {
  			if (!(flag & eModifierMode_Render) && modifier_isEnabled(scene, md, eModifierMode_Render))
  				flag |= eModifierMode_Render;
  
diff --cc source/blender/editors/space_outliner/outliner_draw.c
index d510cf0,2c61e69..ba1079a
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@@ -1018,8 -1166,10 +1166,12 @@@ 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_NormalEdit:
+ 						UI_icon_draw(x, y, ICON_MOD_NORMALEDIT); break;
 +					case eModifierType_Fracture:
 +						UI_icon_draw(x, y, ICON_MOD_EXPLODE); break;
  					/* Default */
  					case eModifierType_None:
  					case eModifierType_ShapeKey:
diff --cc source/blender/editors/space_sequencer/sequencer_edit.c
index 47eb71d,aaf398b..fa05eb6
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@@ -179,11 -183,12 +183,16 @@@ static void seq_proxy_build_job(const b
  	struct SeqIndexBuildContext *context;
  	LinkData *link;
  	Sequence *seq;
+ 	GSet *file_list;
+ 	
+ 	if (ed == NULL) {
+ 		return;
+ 	}
  
 +	if (ed == NULL) {
 +		return;
 +	}
 +
  	wm_job = WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), sa, "Building Proxies",
  	                     WM_JOB_PROGRESS, WM_JOB_TYPE_SEQ_BUILD_PROXY);
  
diff --cc source/blender/makesdna/DNA_modifier_types.h
index c86d1d0,b32b228..a538030
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@@ -82,7 -82,8 +82,9 @@@ typedef enum ModifierType 
  	eModifierType_MeshCache         = 46,
  	eModifierType_LaplacianDeform   = 47,
  	eModifierType_Wireframe         = 48,
- 	eModifierType_Fracture          = 49,
+ 	eModifierType_DataTransfer      = 49,
+ 	eModifierType_NormalEdit        = 50,
++	eModifierType_Fracture          = (1 << 30),
  	NUM_MODIFIER_TYPES
  } ModifierType;
  
@@@ -1400,129 -1401,80 +1435,237 @@@ enum 
  	MOD_WIREFRAME_CREASE        = (1 << 5),
  };
  
 +/* Fracture Modifier */
 +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),
 +	MOD_FRACTURE_BOOLEAN_FRACTAL  = (1 << 5),
 +};
 +
 +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),
 +};
 +
 +enum {
 +	MOD_FRACTURE_CUTTER_X      = (1 << 0),
 +	MOD_FRACTURE_CUTTER_Y      = (1 << 1),
 +	MOD_FRACTURE_CUTTER_Z      = (1 << 2),
 +};
 +
 +enum {
 +	MOD_FRACTURE_CENTROID      = (1 << 0),
 +	MOD_FRACTURE_VERTEX        = (1 << 1),
 +};
 +
 +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 Group *cluster_group;
 +	struct Group *cutter_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;
 +	struct GHash *vert_index_map; /*used for autoconversion of former objects to clusters, marks object membership of each vert*/
 +	struct GHash *vertex_island_map; /* used for constraint building based on vertex proximity, temporary data */
 +
 +	/* 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;
 +	int fractal_cuts;
 +	int fractal_iterations;
 +	int grease_decimate;
 +	int cutter_axis;
 +	int cluster_constraint_type;
 +
 +	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;
 +	float fractal_amount;
 +	float physics_mesh_scale;
 +	float grease_offset;
 +
 +	/* 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 use_greasepencil_edges;
 +
 +	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;
 +	int constraint_target;
 +
 +	/* internal flags */
 +	int use_experimental;
 +	int explo_shared;
 +	int refresh_images;
 +
 +	/* internal values */
 +	float max_vol;
 +
 +	//char pad[4];
 +} FractureModifierData;
 +
++/* Set Split Normals modifier */
++typedef struct NormalEditModifierData {
++	ModifierData modifier;
++	char defgrp_name[64];  /* MAX_VGROUP_NAME */
++	struct Object *target;  /* Source of normals, or center of ellipsoid. */
++	short mode;
++	short flag;
++	short mix_mode;
++	char pad[2];
++	float mix_factor;
++	float offset[3];
++} NormalEditModifierData;
++
++/* NormalEditModifierData.mode */
++enum {
++	MOD_NORMALEDIT_MODE_RADIAL        = 0,
++	MOD_NORMALEDIT_MODE_DIRECTIONAL   = 1,
++};
++
++/* NormalEditModifierData.flags */
++enum {
++	MOD_NORMALEDIT_INVERT_VGROUP            = (1 << 0),
++	MOD_NORMALEDIT_USE_DIRECTION_PARALLEL   = (1 << 1),
++};
++
++/* NormalEditModifierData.mix_mode */
++enum {
++	MOD_NORMALEDIT_MIX_COPY = 0,
++	MOD_NORMALEDIT_MIX_ADD  = 1,
++	MOD_NORMALEDIT_MIX_SUB  = 2,
++	MOD_NORMALEDIT_MIX_MUL  = 3,
++};
+ 
+ typedef struct DataTransferModifierData {
+ 	ModifierData modifi

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list