Builds the face strip forwards, then backwards. Returns
index of start_face.
Check case of single triangle
>>> m = Mesh()
>>> face = m.add_face(0, 1, 2)
>>> m.lock()
>>> t = TriangleStrip()
>>> t.build(0, face)
0
>>> t
TriangleStrip(stripped_faces=set([0]), faces=[Face(0, 1, 2)], vertices=[0, 1, 2], reversed_=False)
>>> t.get_strip()
[0, 1, 2]
>>> t = TriangleStrip()
>>> t.build(1, face)
0
>>> t
TriangleStrip(stripped_faces=set([0]), faces=[Face(0, 1, 2)], vertices=[1, 2, 0], reversed_=False)
>>> t.get_strip()
[1, 2, 0]
>>> t = TriangleStrip()
>>> t.build(2, face)
0
>>> t
TriangleStrip(stripped_faces=set([0]), faces=[Face(0, 1, 2)], vertices=[2, 0, 1], reversed_=False)
>>> t.get_strip()
[2, 0, 1]
Check case of two triangles, with special strip winding fix
>>> m = Mesh()
>>> face0 = m.add_face(0, 1, 2)
>>> face1 = m.add_face(2, 1, 3)
>>> m.lock()
>>> t = TriangleStrip()
>>> t.build(0, face0)
0
>>> t
TriangleStrip(stripped_faces=set([0, 1]), faces=[Face(0, 1, 2), Face(1, 3, 2)], vertices=[0, 1, 2, 3], reversed_=False)
>>> t.get_strip()
[0, 1, 2, 3]
>>> t = TriangleStrip()
>>> t.build(1, face0)
1
>>> t
TriangleStrip(stripped_faces=set([0, 1]), faces=[Face(1, 3, 2), Face(0, 1, 2)], vertices=[3, 1, 2, 0], reversed_=True)
>>> t.get_strip()
[3, 2, 1, 0]
>>> t = TriangleStrip()
>>> t.build(2, face1)
1
>>> t
TriangleStrip(stripped_faces=set([0, 1]), faces=[Face(0, 1, 2), Face(1, 3, 2)], vertices=[0, 2, 1, 3], reversed_=True)
>>> t.get_strip()
[0, 1, 2, 3]
>>> t = TriangleStrip()
>>> t.build(3, face1)
0
>>> t
TriangleStrip(stripped_faces=set([0, 1]), faces=[Face(1, 3, 2), Face(0, 1, 2)], vertices=[3, 2, 1, 0], reversed_=False)
>>> t.get_strip()
[3, 2, 1, 0]
Check that strip is reversed to fix winding
>>> m = Mesh()
>>> face0 = m.add_face(1, 3, 2)
>>> face1 = m.add_face(2, 3, 4)
>>> face2 = m.add_face(4, 3, 5)
>>> m.lock()
>>> t = TriangleStrip()
>>> t.build(2, face1)
1
>>> t
TriangleStrip(stripped_faces=set([0, 1, 2]), faces=[Face(1, 3, 2), Face(2, 3, 4), Face(3, 5, 4)], vertices=[1, 2, 3, 4, 5], reversed_=True)
>>> t.get_strip()
[5, 4, 3, 2, 1]
More complicated mesh
>>> m = Mesh()
>>> face0 = m.add_face(0, 1, 2)
>>> face1 = m.add_face(2, 1, 7)
>>> face2 = m.add_face(2, 7, 4)
>>> face3 = m.add_face(5, 3, 2)
>>> face4 = m.add_face(2, 1, 9)
>>> face5 = m.add_face(4, 7, 10)
>>> face6 = m.add_face(4, 10, 11)
>>> face7 = m.add_face(11, 10, 12)
>>> face8 = m.add_face(1, 0, 13)
>>> m.lock()
>>> t = TriangleStrip()
>>> t.build(7, face1)
4
>>> t.faces[4] == face1
True
>>> t.stripped_faces
set([0, 1, 2, 5, 6, 7, 8])
>>> t.faces
[Face(10, 12, 11), Face(4, 10, 11), Face(4, 7, 10), Face(2, 7, 4), Face(1, 7, 2), Face(0, 1, 2), Face(0, 13, 1)]
>>> t.vertices
[12, 11, 10, 4, 7, 2, 1, 0, 13]
>>> t.reversed_
False
>>> t.get_strip()
[12, 11, 10, 4, 7, 2, 1, 0, 13]
Mesh which has more than a single strip
>>> m = Mesh()
>>> tmp = m.add_face(2, 1, 7)
>>> start_face = m.add_face(0, 1, 2)
>>> tmp = m.add_face(2, 7, 4)
>>> tmp = m.add_face(4, 7, 11)
>>> tmp = m.add_face(5, 3, 2)
>>> tmp = m.add_face(1, 0, 8)
>>> tmp = m.add_face(0, 8, 9)
>>> tmp = m.add_face(8, 0, 10)
>>> m.lock()
>>> t = TriangleStrip()
>>> t.build(0, start_face)
2
>>> t.vertices
[10, 8, 0, 1, 2, 7, 4, 11]
>>> t.get_strip()
[10, 8, 0, 1, 2, 7, 4, 11]
|