#!/usr/bin/env python3 import os dir_name = "3dModels/" def source_model(file_name: str): # Open the file in read mode file = open(dir_name + file_name + ".obj", "r") # Read the entire content of the file content = file.read().split("\n") file.close() startVerts = 0 verts = [] for index, line in enumerate(content): if line[0] == "o": startVerts = index + 1 content = content[startVerts:] break for index, line in enumerate(content): if "vn" in line: endVerts = index verts = content[:endVerts] content = content[endVerts:] break normals = [] for index, line in enumerate(content): if "vt" in line: normals = content[:index] content = content[index:] break startFaces = 0 faces = [] for index, line in enumerate(content): if line[0] == "f": startFaces = index faces = content[startFaces:-1] break colors = ["{" + ",".join(vert.split(" ")[4:7]) + "}" for vert in verts] verts = ["{" + ",".join(vert.split(" ")[1:4]) + "}" for vert in verts] faces = [ ",".join( [ str(int((d.split("/")[0])) - 1) + "," + str(int((d.split("/")[2])) - 1) for d in face.split(" ")[1:4] ] ) for face in faces ] normals = ["{" + ",".join(normal.split(" ")[1:4]) + "}" for normal in normals] mtl_file = open(dir_name + file_name + ".mtl", "r") shiny = mtl_file.read().split("\n")[4].split(" ")[1] mtl_file.close() print(shiny) out = ( '#include "../renderer.h" \n const model ' + file_name + "_model = {(vec3[]){" + ",".join(verts) + "},(int[]){" + ",".join(faces) + "},(vec3[]){" + ",".join(normals) + "},(vec3[]){" + ",".join(colors) + "}," + str(len(verts)) + "," + str(len(faces) * 6) + "," + str(float(shiny) / 20) + "};" ) with open("src/models/" + file_name + ".h", "w") as f: f.write(out) # Close the file f.close() model_files = os.listdir("3dModels") li = range(0, 10) for file in model_files: if file.endswith(".obj"): source_model(file[:-4])