def unpack(stream):
base = stream.tell()
header = Header.unpack(stream)
influence_groups = [None]*header.influence_group_count
inverse_bind_matrices = None
stream.seek(base + header.influence_count_offset)
for i in range(header.influence_group_count):
influence_count = uint8.unpack(stream)
influence_groups[i] = [Influence(None,None) for _ in range(influence_count)]
stream.seek(base + header.index_offset)
for influence_group in influence_groups:
for influence in influence_group:
influence.index = uint16.unpack(stream)
stream.seek(base + header.weight_offset)
for influence_group in influence_groups:
for influence in influence_group:
influence.weight = float32.unpack(stream)
if header.inverse_bind_matrix_offset != 0:
stream.seek(base + header.inverse_bind_matrix_offset)
element_type = numpy.dtype((numpy.float32,(3,4))).newbyteorder('>')
element_count = (header.section_size - header.inverse_bind_matrix_offset)//element_type.itemsize
inverse_bind_matrices = numpy.fromfile(stream,element_type,element_count)
stream.seek(base + header.section_size)
return influence_groups,inverse_bind_matrices
评论列表
文章目录