Skip to content
Snippets Groups Projects
Commit 019fcd6a authored by Campbell Barton's avatar Campbell Barton
Browse files

add interior vertex group option.

parent 65695887
No related branches found
No related tags found
No related merge requests found
...@@ -392,7 +392,7 @@ class FractureCell(Operator): ...@@ -392,7 +392,7 @@ class FractureCell(Operator):
rowsub.prop(self, "use_smooth_faces") rowsub.prop(self, "use_smooth_faces")
rowsub.prop(self, "use_smooth_edges") rowsub.prop(self, "use_smooth_edges")
rowsub.prop(self, "use_data_match") rowsub.prop(self, "use_data_match")
# rowsub.prop(self, "use_interior_vgroup") rowsub.prop(self, "use_interior_vgroup")
rowsub.prop(self, "material_index") rowsub.prop(self, "material_index")
rowsub = col.row() rowsub = col.row()
# could be own section, control how we subdiv # could be own section, control how we subdiv
......
...@@ -324,6 +324,9 @@ def cell_fracture_boolean(scene, obj, objects, ...@@ -324,6 +324,9 @@ def cell_fracture_boolean(scene, obj, objects,
): ):
objects_boolean = [] objects_boolean = []
if use_interior_vgroup:
obj.data.polygons.foreach_set("hide", [False] * len(obj.data.polygons))
for obj_cell in objects: for obj_cell in objects:
mod = obj_cell.modifiers.new(name="Boolean", type='BOOLEAN') mod = obj_cell.modifiers.new(name="Boolean", type='BOOLEAN')
...@@ -331,6 +334,10 @@ def cell_fracture_boolean(scene, obj, objects, ...@@ -331,6 +334,10 @@ def cell_fracture_boolean(scene, obj, objects,
mod.operation = 'INTERSECT' mod.operation = 'INTERSECT'
if not use_debug_bool: if not use_debug_bool:
if use_interior_vgroup:
obj_cell.data.polygons.foreach_set("hide", [True] * len(obj_cell.data.polygons))
mesh_new = obj_cell.to_mesh(scene, mesh_new = obj_cell.to_mesh(scene,
apply_modifiers=True, apply_modifiers=True,
settings='PREVIEW') settings='PREVIEW')
...@@ -366,6 +373,28 @@ def cell_fracture_boolean(scene, obj, objects, ...@@ -366,6 +373,28 @@ def cell_fracture_boolean(scene, obj, objects,
bm.to_mesh(mesh_new) bm.to_mesh(mesh_new)
bm.free() bm.free()
if use_interior_vgroup and mesh_new:
bm = bmesh.new()
bm.from_mesh(mesh_new)
for bm_vert in bm.verts:
bm_vert.tag = True
for bm_face in bm.faces:
if not bm_face.hide:
for bm_vert in bm_face.verts:
bm_vert.tag = False
# now add all vgroups
defvert_lay = bm.verts.layers.deform.verify()
for bm_vert in bm.verts:
if bm_vert.tag:
bm_vert[defvert_lay][0] = 1.0
for bm_face in bm.faces:
bm_face.hide = False
bm.to_mesh(mesh_new)
bm.free()
# add a vgroup
obj_cell.vertex_groups.new(name="Interior")
if obj_cell is not None: if obj_cell is not None:
objects_boolean.append(obj_cell) objects_boolean.append(obj_cell)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment