Ejemplo n.º 1
0
 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()])
Ejemplo n.º 2
0
    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()