[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