Skip to content

Commit

Permalink
Merge pull request #162 from alessandro-zomparelli/b401-dev
Browse files Browse the repository at this point in the history
Fixed bugs in Polyhedral Wireframe
  • Loading branch information
alessandro-zomparelli committed Dec 29, 2023
2 parents 2afe02a + 229a356 commit 76bea95
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 16 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Tissue is already shipped with both Blender. However I recommend to update the d

### Blender 4.0.2

Tissue v0.3.65 for Blender 4.0.2 (latest stable version): https://github.com/alessandro-zomparelli/tissue
Tissue v0.3.66 for Blender 4.0.2 (latest stable version): https://github.com/alessandro-zomparelli/tissue

Current development branch (usually the most updated version): https://github.com/alessandro-zomparelli/tissue/tree/b401-dev

Expand Down
2 changes: 1 addition & 1 deletion __init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
bl_info = {
"name": "Tissue",
"author": "Alessandro Zomparelli",
"version": (0, 3, 65),
"version": (0, 3, 66),
"blender": (4, 0, 2),
"location": "",
"description": "Tools for Computational Design",
Expand Down
30 changes: 16 additions & 14 deletions polyhedra.py
Original file line number Diff line number Diff line change
Expand Up @@ -627,12 +627,19 @@ def execute(self, context):

wireframe_indexes = [f.index for f in new_faces]
outer_indexes = [f.index for f in outer_wireframe_faces]
edges_to_crease = [f.edges[2].index for f in new_faces]
layer_is_wireframe = bm1.faces.layers.int.new('tissue_is_wireframe')
for id in wireframe_indexes:
bm1.faces[id][layer_is_wireframe] = 1
layer_is_outer = bm1.faces.layers.int.new('tissue_is_outer')
for id in outer_indexes:
bm1.faces[id][layer_is_outer] = 1
if props.crease > 0 and props.dissolve != 'INNER':
crease_layer = bm1.edges.layers.float.new('crease_edge')
bm1.edges.index_update()
crease_edges = []
for edge_index in edges_to_crease:
bm1.edges[edge_index][crease_layer] = props.crease

end_time = time.time()
print('Tissue: Polyhedral wireframe, frames in {:.4f} sec'.format(end_time-start_time))
Expand Down Expand Up @@ -669,20 +676,6 @@ def execute(self, context):
print('Tissue: Polyhedral wireframe, corners displace in {:.4f} sec'.format(end_time-start_time))
start_time = time.time()

# set crease values
if props.crease > 0 and props.dissolve != 'INNER':
crease_layer = bm1.edges.layers.float.new('crease_edge')
bm1.edges.index_update()
crease_edges = []
for f in new_faces:
#e = f.edges[0]
#e[creaseLayer] = props.crease
e = f.edges[2]
e[crease_layer] = props.crease
#for f in flat_faces:
# for e in f.edges:
# e[crease_layer] = props.crease

if props.dissolve != 'NONE':
if props.dissolve == 'INNER': dissolve_id = 2
if props.dissolve == 'OUTER': dissolve_id = 0
Expand Down Expand Up @@ -895,8 +888,16 @@ def get_decomposed_polyhedra(bm):
for key, val in polyhedra_from_facekey.items():
polyhedra[unique_index[val]].append(key)
polyhedra = list(set(tuple(i) for i in polyhedra if i))
polyhedra = remove_double_faces_from_polyhedra(polyhedra)
return polyhedra

def remove_double_faces_from_polyhedra(polyhedra):
new_polyhedra = []
for polyhedron in polyhedra:
new_polyhedron = [key for key in polyhedron if not -key in polyhedron]
new_polyhedra.append(new_polyhedron)
return new_polyhedra

def get_unique_polyhedra_index(count, to_merge):
out = list(range(count))
keep_going = True
Expand Down Expand Up @@ -970,6 +971,7 @@ def add_polyhedron(bm,source_faces):
for verts_keys in faces_verts_key:
new_faces[count] = bm.faces.new([polyhedron_verts_dict.get(key) for key in verts_keys])
count+=1

bm.faces.ensure_lookup_table()
bm.faces.index_update()
return new_faces
Expand Down

0 comments on commit 76bea95

Please sign in to comment.