Files
test/release/scripts/reeb.py
Martin Poirier eeb9e1486d Still nothing to see here <shifty eyes>
This fixes up angle based subdivisions, adds embedding post processing methods (before, only average was there, added smooth and sharpen).

More parameters are controllable through the UI.
2007-11-08 22:03:04 +00:00

89 lines
1.7 KiB
Python

#!BPY
"""
Name: 'Reeb graph import'
Blender: 245
Group: 'Import'
Tooltip: 'Imports a reeb graph saved after skeleton generation'
"""
import Blender
def name(count):
if count == -1:
return ""
else:
return "%05" % count
def importGraph(count):
me = Blender.Mesh.New("graph%s" % name(count))
f = open("test%s.txt" % name(count), "r")
verts = []
edges = []
faces = []
i = 0
first = False
SIZE = 0.3
WITH_NODE = True
def addNode(v, s, verts, faces):
if WITH_NODE:
v1 = [v[0], v[1], v[2] + s]
i1 = len(verts)
verts.append(v1)
v2 = [v[0], v[1] + 0.959 * s, v[2] - 0.283 * s]
i2 = len(verts)
verts.append(v2)
v3 = [v[0] - 0.830 * s, v[1] - 0.479 * s, v[2] - 0.283 * s]
i3 = len(verts)
verts.append(v3)
v4 = [v[0] + 0.830 * s, v[1] - 0.479 * s, v[2] - 0.283 * s]
i4 = len(verts)
verts.append(v4)
faces.append([i1,i2,i3])
faces.append([i1,i3,i4])
faces.append([i2,i3,i4])
faces.append([i1,i2,i4])
return 4
else:
return 0
for line in f:
data = line.strip().split(" ")
if data[0] == "v1":
v = [float(x) for x in data[-3:]]
i += addNode(v, SIZE, verts, faces)
verts.append(v)
i += 1
elif data[0] == "v2":
pass
v = [float(x) for x in data[-3:]]
verts.append(v)
edges.append((i-1, i))
i += 1
i += addNode(v, SIZE, verts, faces)
elif data[0] == "b":
verts.append([float(x) for x in data[-3:]])
edges.append((i-1, i))
i += 1
me.verts.extend(verts)
me.edges.extend(edges)
me.faces.extend(faces)
scn = Blender.Scene.GetCurrent()
ob = scn.objects.new(me, "graph%s" % name(count))
#for i in range(16):
# importGraph(i)
if __name__=='__main__':
importGraph(-1)