def main(): import argparse parser = argparse.ArgumentParser() parser.add_argument('file', metavar='OFF_FILE', help='the off_file you want to render') parser.add_argument('--views', type=int, default=12, metavar='N', help='count of views to render, default is 12') parser.add_argument('--dodecahedron', action='store_true', help='use dodecahedron camera settings') args = parser.parse_args() render = Render() off_file = args.file print("loading model...") model = ol.load_off(off_file) render.load_model(*model) print("start to render...") images = render.render_to_images(args.views, args.dodecahedron) for i, image in enumerate(images): image = image.resize((512, 512), Image.BICUBIC) image.save("out-%s.jpg" % i) print("finished")
def __init__(self, render_class, off_file, size=(512, 512), title="off_render"): fmt = QtOpenGL.QGLFormat() fmt.setVersion(3, 3) fmt.setProfile(QtOpenGL.QGLFormat.CoreProfile) fmt.setSwapInterval(1) fmt.setSampleBuffers(True) fmt.setDepthBufferSize(24) super(RenderWindow, self).__init__(fmt, None) self.setFixedSize(size[0], size[1]) self.move(QtWidgets.QDesktopWidget().rect().center() - self.rect().center()) self.setWindowTitle(title) self.model = ol.load_off(off_file) self.start_time = time.time() self.render_class = render_class self.render = None self.wnd = WindowInfo() self.wnd.viewport = (0, 0) + size self.wnd.ratio = size[0] / size[1] self.wnd.size = size
def render_and_save(self, off_file, output_dir, output_views=12, use_dodecahedron_views=False): self.load_model(*ol.load_off(off_file)) images = self.render_to_images( output_views, use_dodecahedron_views=use_dodecahedron_views) self._save_images(images, off_file, output_dir)