reworked the file to be more readable and be usable as a module

This commit is contained in:
raphael60650 2021-08-01 21:40:00 +02:00
parent cdbb2f6493
commit 0d5e94e925

View file

@ -5,8 +5,14 @@ from OpenGL.GLU import *
import pywavefront
from PIL import Image
scene = pywavefront.Wavefront(r"D:\Users\RC606\Desktop\Programme\MKWF-Install\test\Track-WU8\map_model.obj",
collect_faces=True)
def render_top_view(obj_file: str):
scene_data = load_scene(obj_file)
return get_display(scene_data)
def load_scene(obj_file: str) -> tuple:
scene = pywavefront.Wavefront(obj_file, collect_faces=True)
scene_box = (scene.vertices[0], scene.vertices[0])
for vertex in scene.vertices:
@ -20,8 +26,28 @@ scaled_size = 5
scene_scale = [scaled_size / max_scene_size for i in range(3)]
scene_trans = [-(scene_box[1][i] + scene_box[0][i]) / 2 for i in range(3)]
return scene_scale, scene_trans, scene
def model():
def get_display(scene_data: tuple) -> Image:
display = (600, 600)
pygame.display.set_mode(display, DOUBLEBUF | OPENGL)
gluPerspective(45, (display[0] / display[1]), 1, 500.0)
glTranslatef(0.0, 0.0, -6.5)
glRotatef(90, 1, 0, 0)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)
draw_model(*scene_data)
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)
pix = glReadPixels(0, 0, *display, GL_RGB, GL_UNSIGNED_BYTE)
image = Image.frombytes(mode="RGB", size=display, data=pix)
return image
def draw_model(scene_scale, scene_trans, scene):
glPushMatrix()
glScalef(*scene_scale)
glTranslatef(*scene_trans)
@ -53,24 +79,3 @@ def model():
glPopMatrix()
def main():
display = (600, 600)
window = pygame.display.set_mode(display, DOUBLEBUF | OPENGL)
gluPerspective(45, (display[0] / display[1]), 1, 500.0)
glTranslatef(0.0, 0.0, -6.5)
glRotatef(90, 1, 0, 0)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)
model()
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)
pix = glReadPixels(0, 0, *display, GL_RGB, GL_UNSIGNED_BYTE)
image = Image.frombytes(mode="RGB", size=display, data=pix)
image.save("test.png")
exit()
main()