Taylor Taylor, that is really cool!
If this happens again you can use check_map_validity to return all busted maps (attachments and fibers). Attachments maps will bust a scene if all values are 0 and as you know, fiber endpoints will bust a scene if there are no 0 or 1 (within a range of .1 I believe).
To identify all busted maps at once, lets assume you have a scene that has busted maps. Now you can retrieve it in zBuilder.
import zBuilder.builders.ziva as zva
z = zva.Ziva()
z.retrieve_from_scene()
From there you can inspect all the map parameters.
maps = z.get_scene_items(type_filter='map')
That gives us a list of map parameters. You can check by printing them and you should see something like this:
print maps
...
< MAP: r_tricepsLong_muscle_zFiber.weightList[0].weights -- length: 931 >,
< MAP: r_tricepsLong_muscle_zFiber.endPoints -- length: 931 >,
< MAP: r_tricepsMedial_muscle_zFiber.weightList[0].weights -- length: 574 >,
< MAP: r_tricepsMedial_muscle_zFiber.endPoints -- length: 574 >,
< MAP: r_coracobrachialis_muscle_zFiber.weightList[0].weights -- length: 323 >,
< MAP: r_coracobrachialis_muscle_zFiber.endPoints -- length: 323 >] #
With that you can pass them to the check map validity like so:
import zBuilder.zMaya as mz
mz.check_map_validity(maps)
That returns list of invalid maps.
On a related not the map parameters store the type of map it is, tet, attachment, fiber etc etc. So, if you wanted to do above but with just the fiber maps, you could do this:
maps = [i for i in z.get_scene_items(type_filter='map') if i.map_type == 'zFiber']
same thing non-list comprehension:
maps = []
for i in z.get_scene_items(type_filter='map'):
if i.map_type == 'zFiber':
maps.append(i)
Keep up the good work! And let us know if we can help with anything
lonnie