Regression test for vertex cache algorithm
------------------------------------------

>>> from pyffi.formats.nif import NifFormat
>>> import pyffi.spells.nif.optimize
>>> data = NifFormat.Data()
>>> stream = open("tests/nif/test_opt_vertex_cache.nif", "rb")
>>> data.read(stream)
>>> # check original data
>>> data.roots[0].children[0].data.num_vertices
32
>>> # run the spell that optimizes this
>>> spell = pyffi.spells.nif.optimize.SpellOptimizeGeometry(data=data)
>>> spell.recurse()
pyffi.toaster:INFO:--- opt_geometry ---
pyffi.toaster:INFO:  ~~~ NiNode [fan] ~~~
pyffi.toaster:INFO:    ~~~ NiTriShape [fan01] ~~~
pyffi.toaster:INFO:      removing duplicate vertices
pyffi.toaster:INFO:      (num vertices was 32 and is now 32)
pyffi.toaster:INFO:      optimizing triangle ordering
pyffi.toaster:INFO:      (ATVR stable at 1.059)
pyffi.toaster:INFO:      optimizing vertex ordering
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:WARNING:unused vertex
pyffi.toaster:INFO:      recalculating tangent space
>>> # check optimized data
>>> data.roots[0].children[0].data.num_vertices
17
