예제 #1
0
 def read_textures(self, reader: ByteIO):
     self.textures = [
         reader.read_ascii_string() for _ in range(self.texture_count)
     ]
     if self.shaders:
         print('Textures:')
         for s in self.shaders:
             print('\t texture:', s)
예제 #2
0
 def read_shaders(self, reader: ByteIO):
     self.shaders = [
         reader.read_ascii_string() for _ in range(self.shader_count)
     ]
     if self.shaders:
         print('Shaders:')
         for s in self.shaders:
             print('\t shader:', s)
예제 #3
0
 def read_vertexes(self, reader: ByteIO):
     for i in range(self.vertex_count):
         vertex_entry = reader.tell()
         vertex = RIPVertex()
         for attrib in self.attributes:
             reader.seek(vertex_entry + attrib.offset)
             if attrib.name == RIPAttrTypes.POSITION:
                 vertex.pos.read(reader, attrib.types)
             elif attrib.name == RIPAttrTypes.NORMAL:
                 vertex.norm.read(reader, attrib.types)
             elif attrib.name == RIPAttrTypes.BINORMAL:
                 vertex.binorm.read(reader, attrib.types)
             elif attrib.name == RIPAttrTypes.TEXCOORD:
                 vertex.UV.append(RIPVarVector().read(reader, attrib.types))
             elif attrib.name == RIPAttrTypes.COLOR:
                 vertex.color.read(reader, attrib.types)
             elif attrib.name == RIPAttrTypes.TANGENT:
                 reader.skip(attrib.size)
             elif attrib.name == RIPAttrTypes.BLENDINDICES:
                 vertex.blend.read(reader, attrib.types)
             elif attrib.name == RIPAttrTypes.BLENDWEIGHT:
                 vertex.blendweight.read(reader, attrib.types)
             else:
                 print(
                     'Found "{}" unknown attribute! Please report about this'
                     .format(attrib.name))
         reader.seek(vertex_entry + self.vertex_size)
         self.vertexes.append(vertex)
예제 #4
0
 def read(self, reader: ByteIO):
     self.name = reader.read_ascii_string().upper()
     self.index = reader.read_uint32()
     self.offset = reader.read_uint32()
     self.size = reader.read_uint32()
     self.type_map_elements = reader.read_uint32()
     self.types = [
         reader.read_uint32() for _ in range(self.type_map_elements)
     ]
     return self
예제 #5
0
 def read(self, reader: ByteIO):
     self.magic = reader.read_uint32()
     self.magic_s = "%X" % self.magic
     self.version = reader.read_uint32()
     self.face_count = reader.read_uint32()
     self.vertex_count = reader.read_uint32()
     self.vertex_size = reader.read_uint32()
     self.texture_count = reader.read_uint32()
     self.shader_count = reader.read_uint32()
     self.attrib_count = reader.read_uint32()
     self.read_attributes(reader)
     self.read_textures(reader)
     self.read_shaders(reader)
     self.read_indexes(reader)
     self.read_vertexes(reader)
예제 #6
0
 def __init__(self, filepath):
     self.reader = ByteIO(path=filepath)
     print("Impotring", os.path.basename(filepath))
     self.header = RIPHeader()
예제 #7
0
 def read_indexes(self, reader: ByteIO):
     self.indexes = [(reader.read_uint32(), reader.read_uint32(),
                      reader.read_uint32()) for _ in range(self.face_count)]
예제 #8
0
 def read(self, reader: ByteIO, types):
     fmt = ''.join([tt.get(f, "L") for f in types])
     self.values = list(reader.read_fmt(fmt))
     return self
예제 #9
0
    def read(self, reader: ByteIO):

        self.x, self.y, _, _ = reader.read_fmt('ffff')
        return self
예제 #10
0
 def read(self, reader: ByteIO):
     self.x, self.y, self.z = reader.read_fmt('III')
     return self