def main():
    parser = argparse.ArgumentParser(description="convert Mitsuba scenes to appleseed format.")
    parser.add_argument("input_file", metavar="input-file", help="Mitsuba scene (*.xml)")
    parser.add_argument("output_file", metavar="output-file", help="appleseed scene (*.appleseed)")
    args = parser.parse_args()

    # Create a log target that outputs to stderr, and binds it to the renderer's global logger.
    # Eventually you will want to redirect log messages to your own target.
    # For this you will need to subclass appleseed.ILogTarget.
    log_target = asr.ConsoleLogTarget(sys.stderr)

    # It is important to keep log_target alive, as the global logger does not
    # take ownership of it. In this example, we do that by removing the log target
    # when no longer needed, at the end of this function.
    asr.global_logger().add_target(log_target)
    asr.global_logger().set_verbosity_level(asr.LogMessageCategory.Warning)

    tree = ElementTree()
    try:
        tree.parse(args.input_file)
    except IOError:
        fatal("Failed to load {0}".format(args.input_file))

    project = convert(tree)

    asr.ProjectFileWriter().write(project, args.output_file,
                                  asr.ProjectFileWriterOptions.OmitHandlingAssetFiles)
def main():
    parser = argparse.ArgumentParser(
        description="convert Mitsuba scenes to appleseed format.")
    parser.add_argument("input_file",
                        metavar="input-file",
                        help="Mitsuba scene (*.xml)")
    parser.add_argument("output_file",
                        metavar="output-file",
                        help="appleseed scene (*.appleseed)")
    args = parser.parse_args()

    # Create a log target that outputs to stderr, and binds it to the renderer's global logger.
    # Eventually you will want to redirect log messages to your own target.
    # For this you will need to subclass appleseed.ILogTarget.
    log_target = asr.ConsoleLogTarget(sys.stderr)

    # It is important to keep log_target alive, as the global logger does not
    # take ownership of it. In this example, we do that by removing the log target
    # when no longer needed, at the end of this function.
    asr.global_logger().add_target(log_target)
    asr.global_logger().set_verbosity_level(asr.LogMessageCategory.Warning)

    tree = ElementTree()
    try:
        tree.parse(args.input_file)
    except IOError:
        fatal("Failed to load {0}".format(args.input_file))

    project = convert(tree)

    asr.ProjectFileWriter().write(
        project, args.output_file,
        asr.ProjectFileWriterOptions.OmitHandlingAssetFiles)
def main():
    log_target = asr.ConsoleLogTarget(sys.stderr)
    asr.global_logger().add_target(log_target)

    # Build the project.
    project = build_project()

    # Create the master renderer.
    renderer_controller = RendererController()
    tile_callback = TileCallback()
    renderer = asr.MasterRenderer(project,
                                  project.configurations()['final'].get_inherited_parameters(),
                                  renderer_controller,
                                  tile_callback)

    # Render the frame.
    render_thread = asr.RenderThread(renderer)
    render_thread.start()
    render_thread.join()

    # Save the frame to disk.
    project.get_frame().write_main_image("output/test.png")

    # Save the project to disk.
    asr.ProjectFileWriter().write(project, "output/test.appleseed")
Beispiel #4
0
def main():
    # Create a log target that outputs to stderr, and binds it to the renderer's global logger.
    # Eventually you will want to redirect log messages to your own target.
    # For this you will need to subclass appleseed.ILogTarget.
    log_target = asr.ConsoleLogTarget(sys.stderr)

    # It is important to keep log_target alive, as the global logger does not
    # take ownership of it. In this example, we do that by removing the log target
    # when no longer needed, at the end of this function.
    asr.global_logger().add_target(log_target)

    # Build the project.
    project = build_project()

    # Create the master renderer.
    renderer_controller = RendererController()

    # Catch Control-C.
    signal.signal(signal.SIGINT, lambda signal, frame: renderer_controller.abort_rendering())

    resource_search_paths = []
    tile_callback = TileCallback()
    renderer = asr.MasterRenderer(project,
                                  project.configurations()['final'].get_inherited_parameters(),
                                  resource_search_paths,
                                  renderer_controller,
                                  tile_callback)

    # Render the frame.
    if RENDER_ON_THREAD:
        render_thread = RenderThread(renderer)
        render_thread.start()

        while render_thread.isAlive():
            render_thread.join(0.5)  # seconds
    else:
        renderer.render()

    # Save the frame to disk.
    project.get_frame().write_main_image("output/test.png")

    # Save the project to disk.
    asr.ProjectFileWriter().write(project, "output/test.appleseed")

    # Remove the log target we added previosly.
    asr.global_logger().remove_target(log_target)
Beispiel #5
0
def main():
    # Create a log target that outputs to stderr, and binds it to the renderer's global logger.
    # Eventually you will want to redirect log messages to your own target.
    # For this you will need to subclass appleseed.ILogTarget.
    log_target = asr.ConsoleLogTarget(sys.stderr)

    # It is important to keep log_target alive, as the global logger does not
    # take ownership of it. In this example, we do that by removing the log target
    # when no longer needed, at the end of this function.
    asr.global_logger().add_target(log_target)

    # Build the project.
    project = build_project()

    # Create the master renderer.
    renderer_controller = RendererController()

    # Catch Control-C.
    signal.signal(signal.SIGINT, lambda signal, frame: renderer_controller.abort_rendering())

    tile_callback = TileCallback()
    renderer = asr.MasterRenderer(project,
                                  project.configurations()['final'].get_inherited_parameters(),
                                  renderer_controller,
                                  tile_callback)

    # Render the frame.
    if RENDER_ON_THREAD:
        render_thread = RenderThread(renderer)
        render_thread.start()

        while render_thread.isAlive():
            render_thread.join(0.5) # seconds
    else:
        renderer.render()

    # Save the frame to disk.
    project.get_frame().write_main_image("output/test.png")

    # Save the project to disk.
    asr.ProjectFileWriter().write(project, "output/test.appleseed")

    # Remove the log target we added previosly.
    asr.global_logger().remove_target(log_target)
Beispiel #6
0
    def __start_final_render(self, scene, project):
        """
        Start a final render.
        """

        # Preconditions.
        assert (self.__renderer is None)
        assert (self.__renderer_controller is None)
        assert (self.__tile_callback is None)
        assert (self.__render_thread is None)

        self.__tile_callback = FinalTileCallback(self, scene)

        self.__renderer_controller = FinalRendererController(
            self, self.__tile_callback)

        self.__renderer = asr.MasterRenderer(
            project,
            project.configurations()['final'].get_inherited_parameters(),
            self.__renderer_controller, self.__tile_callback)

        self.__render_thread = RenderThread(self.__renderer)

        # While debugging, log to the console. This should be configurable.
        log_target = asr.ConsoleLogTarget(sys.stderr)
        asr.global_logger().add_target(log_target)

        # Start render thread and wait for it to finish.
        self.__render_thread.start()

        while self.__render_thread.isAlive():
            self.__render_thread.join(0.5)  # seconds

        # Cleanup.
        asr.global_logger().remove_target(log_target)

        if scene.appleseed.denoise_mode == 'write_outputs':
            project.get_frame().write_main_image(
                os.path.join(scene.appleseed.denoise_output_dir, "output.exr"))

        self.__stop_rendering()
Beispiel #7
0
 def __exit__(self, type, value, traceback):
     asr.global_logger().set_verbosity_level(self.__saved_level)
Beispiel #8
0
 def __enter__(self):
     self.__saved_level = asr.global_logger().get_verbosity_level()
     asr.global_logger().set_verbosity_level(self.__new_level)