def __init__( self,\ vert_dict,\ bone_dict\ ): mesh_vert_dict = {} for mesh_name, v_dict in vert_dict.items(): mesh_vert_dict[mesh_name] = {} for v_idx, v_data in v_dict.items(): this_vert = vertex(v_idx, init = False) this_vert.loc = vector(v_data['loc']) if 'w_loc' in v_data: this_vert.w_loc = vector(v_data['w_loc']) else: this_vert.loc = vector(v_data['loc']) this_vert.normal = vector(v_data['norm']) this_vert.weight_dict = v_data['wd'] this_vert.NMV = True mesh_vert_dict[mesh_name] = this_vert self.mesh_vert_dict = mesh_vert_dict self.v_list = [v for v in self.mesh_vert_dict.values()] self.verts = dict([(i, vert) for i, vert in enumerate(self.v_list)]) self.non_nmv_verts = {} self.nmv_verts = self.verts self.bone_dict = dict([(bone_name, {'bone': bone}) for bone_name, bone in bone_dict.items()])
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()