def __init__(\ self,\ load_obj,\ block,\ full_init = True,\ tri = False,\ egm = False\ ): self.lno = load_obj self.data = self.lno.data self.tri = tri self.egm = egm self.nmv_doubles = set() self.bone_update_dict = {} if tri: self.niData = self.data self.verts = dict([(idx, vertex(idx, vert, self)) for idx, vert in enumerate(self.data.vertices)]) self.init_faces() self.mat = matrix3x3() self.mat_i = matrix3x3() #print(self.verts) return if egm: return self.root_blocks = load_obj.root_blocks self.block = block self.textures = self.getTextures() self.material = self.getMaterial() self.niData = block.data self.verts = dict([(idx, vertex(idx, vert, self)) for idx, vert in enumerate(self.niData.vertices)]) self.mat = self.block.get_transform() self.mat_i = self.mat.get_inverse() self.nmv_verts = {} self.init = full_init self.partition_map_ = None self.triangles_ = None self.skin = self.block.skin_instance if self.skin: if isinstance(self.skin, NifFormat.BSDismemberSkinInstance): self.triangles_, self.partition_map_ = (self.skin.get_dismember_partitions()) #print(self.triangles_) #print(self.partition_map_) if self.skin.data: self.skin_transform = extractTransform(self.skin.data.skin_transform) self.skin_type = type(self.skin) """initialize UV Information""" self.uv_sets = self.niData.uv_sets if self.init: self.initDoubles() self.init_faces() if self.uv_sets: self.initUV() print ('initializing bones') self.initBones() else: """initialize Faces and Find NMV Vertices""" self.init_faces()
global sphereKeyDict global sphereValues global sphereBloomValues global circleValues global circleKeyDict global circleBloomValues sphereKeyDict = {} sphereValues = {} sphereBloomValues = {} circleValues = {} circleKeyDict = {} circleBloomValues = {} identity_matrix = matrix3x3() def NormalizeInfluence(influence_list): if not influence_list: return influence_list influence_sum = sum([influence for vert, influence in influence_list]) if not influence_sum: norm_factor = 1.0 / float(len(influence_list)) influence_list = [(vert, norm_factor) for vert, influence in list(influence_list)] else: norm_factor = 1.0 / float(influence_sum) influence_list = [(vert, influence * norm_factor) for vert, influence in list(influence_list)]