Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # this goes on a python sop. You need to create an intList attribute called neighbor_points before
- node = hou.pwd()
- geo = node.geometry()
- prim = geo.prims()
- points = geo.points()
- for each in prim:
- vert = each.vertices()
- num_vert = each.numVertices()
- max_vi = max(range(num_vert))
- for vi in range(num_vert):
- current_vert = vert[vi]
- if (vi+1) <= max_vi: # check existence of next vertex
- next_vert = vert[(vi+1)]
- else:
- next_vert = vert[0]
- if (vi-1) > 0: #check existence of previous vertex
- prev_vert = vert[(vi-1)]
- else:
- prev_vert = vert[(max_vi)]
- current_point = current_vert.point().number()
- next_point = next_vert.point().number()
- prev_point = prev_vert.point().number()
- val = [x for x in current_vert.point().intListAttribValue('neighbor_points')]
- val.append(next_point)
- #val.append(prev_point)
- current_vert.point().setAttribValue('neighbor_points', list(set(val)))
- # put this on a dissolve node
- # add two attribs, a toggle called tallow_islands and a float 0 - 1 call blst_threshold
- import random
- node = hou.pwd()
- tallow_islands = node.parm('tallow_islands').eval()
- parent = node.inputs()[0]
- geo = parent.geometry()
- pnts = geo.points()
- grp = geo.findPointGroup('unshared_edges')
- threshold = hou.pwd().parm('blst_threshold').eval()
- selected = []
- for p in pnts:
- if not grp.contains(p):
- random.seed(p.number())
- if random.random() > threshold:
- n1 = str(p.number())
- i = random.randint(0, len(p.intListAttribValue('neighbor_points'))-1)
- n2 = str(p.intListAttribValue('neighbor_points')[i])
- if tallow_islands == 0:
- if not any(n1 in s for s in selected) and not any(n2 in s for s in selected):
- selected.append('p{0}-{1}'.format(n1, n2))
- else:
- edge = 'p{0}-{1}'.format(n1, n2)
- if edge not in selected:
- selected.append(edge)
- selected = " ".join(selected)
- return selected
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement