Exemplo n.º 1
0
Arquivo: engine.py Projeto: JuhaW/vb30
    def view_update(self, context):
        global zmq_backend

        self.debug("VRayRendererRT::view_update()")

        exporter = context.scene.vray.Exporter
        self.zmq_should_start = exporter.backend == 'ZMQ' and exporter.backend_worker == 'LOCAL'

        if self.zmq_should_start and not zmq_backend or zmq_backend and zmq_backend.poll() is not None:
            executable_path = SysUtils.GetZmqPath()
            if not executable_path or not os.path.exists(executable_path):
                self.debug("Can't find V-Ray ZMQ Server!")
            else:
                port = str(context.scene.vray.Exporter.zmq_port)
                zmq_backend = subprocess.Popen([executable_path, "-p", port])

        if not self.exporter:
            self.exporter = _vray_for_blender_rt.init(context.as_pointer(),
                self.as_pointer(),
                context.blend_data.as_pointer(),
                context.scene.as_pointer(),
                context.region.as_pointer(),
                context.space_data.as_pointer(),
                context.region_data.as_pointer()
            )
            _vray_for_blender_rt.export(self.exporter)

        if self.exporter:
            _vray_for_blender_rt.update(self.exporter)
Exemplo n.º 2
0
    def view_update(self, context):
        self.debug("VRayRendererRT::view_update()")
        if not self.exporter:
            self.exporter = _vray_for_blender_rt.init(context.as_pointer(),
                self.as_pointer(),
                context.blend_data.as_pointer(),
                context.scene.as_pointer(),
                context.region.as_pointer(),
                context.space_data.as_pointer(),
                context.region_data.as_pointer()
            )
            _vray_for_blender_rt.export(self.exporter)

        if self.exporter:
            _vray_for_blender_rt.update(self.exporter)
Exemplo n.º 3
0
    def update(self, data, scene):
        debug.Debug("update()")

        vrayExporter = self._get_settings()

        if vrayExporter.backend != 'STD':
            ZMQ.check_start()

            # Init ZMQ exporter
            if not self.renderer:
                arguments = {
                    'context': bpy.context.as_pointer(),
                    'engine': self.as_pointer(),
                    'data': data.as_pointer(),
                    'scene': scene.as_pointer(),
                }

                self.renderer = _vray_for_blender_rt.init(**arguments)

            if self.renderer:
                _vray_for_blender_rt.update(self.renderer)
Exemplo n.º 4
0
    def update(self, data, scene):
        if not self.doRender():
            return

        debug.Debug("update()")

        vrayExporter = self.getExporter()

        if vrayExporter.backend != 'STD':
            ZMQ.check_start()

            # Init ZMQ exporter
            if not self.renderer:
                arguments = {
                    'context': bpy.context.as_pointer(),
                    'engine': self.as_pointer(),
                    'data': data.as_pointer(),
                    'scene': scene.as_pointer(),
                }

                self.renderer = _vray_for_blender_rt.init(**arguments)

            if self.renderer:
                _vray_for_blender_rt.update(self.renderer)
Exemplo n.º 5
0
def ExportEx(bus):
    debug.Debug("ExportEx()")

    err = None

    scene = bus['scene']
    engine = bus['engine']
    o = bus['output']

    VRayScene = scene.vray
    VRayExporter = VRayScene.Exporter
    VRayDR = VRayScene.VRayDR

    pm = VRayFilePaths()

    # Setting user defined value here
    # It could be overriden in 'initFromScene'
    # depending on VRayDR settings
    pm.setSeparateFiles(VRayExporter.useSeparateFiles)

    pm.initFromScene(engine, scene)
    pm.printInfo()

    fm = VRayExportFiles(pm)
    fm.setOverwriteGeometry(VRayExporter.auto_meshes)

    try:
        fm.init()
    except Exception as e:
        debug.ExceptionInfo(e)
        return "Error initing files!"

    o.setFileManager(fm)
    o.setPreview(engine.is_preview)

    bus['exporter'] = exp_init.InitExporter(bus)

    try:
        # We do everything here basically because we want to close files
        # if smth goes wrong...
        rtExporter = HAS_VB35 and engine.bl_idname == 'VRAY_RENDER_RT'
        if not rtExporter:
            err = Export(bus, scene, engine, engine.is_preview)
        else:
            if not VRayExporter.animation_mode in {'NONE', 'CAMERA_LOOP'}:
                o.setAnimation(True)
                o.setFrameStart(scene.frame_start)
                o.setFrameEnd(scene.frame_end)
                o.setFrameStep(scene.frame_step)
            elif VRayExporter.animation_mode == 'CAMERA_LOOP':
                cameraCount = len([
                    1 for o in scene.objects
                    if o.type == 'CAMERA' and o.data.vray.use_camera_loop
                ])
                o.setAnimation(True)
                o.setFrameStart(1)
                o.setFrameEnd(cameraCount)
                o.setFrameStep(1)

            init = {
                'context': bpy.context.as_pointer(),
                'engine': engine.as_pointer(),
                'data': bpy.data.as_pointer(),
                'scene': scene.as_pointer(),
                'mainFile': fm.getFileByPluginType('MAIN'),
                'objectFile': fm.getFileByPluginType('OBJECT'),
                'envFile': fm.getFileByPluginType('WORLD'),
                'geometryFile': fm.getFileByPluginType('GEOMETRY'),
                'lightsFile': fm.getFileByPluginType('LIGHT'),
                'materialFile': fm.getFileByPluginType('MATERIAL'),
                'textureFile': fm.getFileByPluginType('TEXTURE'),
                'cameraFile': fm.getFileByPluginType('CAMERA'),
            }

            # Free anything we have
            if engine.renderer:
                del engine.renderer

            renderer = _vray_for_blender_rt.init(**init)
            if renderer:
                # Write settings for new exporter.
                # TODO: Move this to cpp.
                exp_settings.ExportSettings(bus)

                setattr(engine, 'renderer', renderer)

                _vray_for_blender_rt.render(renderer)

    except Exception as e:
        debug.ExceptionInfo(e)
        err = str(e)
    finally:
        exp_init.ShutdownExporter(bus)
        o.done()

    return err
Exemplo n.º 6
0
def ExportEx(bus):
    debug.Debug("ExportEx()")

    err = None

    scene  = bus['scene']
    engine = bus['engine']
    o      = bus['output']

    VRayScene    = scene.vray
    VRayExporter = VRayScene.Exporter

    pm = VRayFilePaths()

    # Setting user defined value here
    # It could be overriden in 'initFromScene'
    # depending on VRayDR settings
    pm.setSeparateFiles(VRayExporter.useSeparateFiles)

    pm.initFromScene(engine, scene)
    pm.printInfo()

    fm = VRayExportFiles(pm)
    fm.setOverwriteGeometry(VRayExporter.auto_meshes)

    rtExporter = HAS_VB35 and engine.bl_idname == 'VRAY_RENDER_RT'
    try:
        fm.init(not rtExporter)
    except Exception as e:
        debug.ExceptionInfo(e)
        return "Error initing files!"

    o.setFileManager(fm)
    o.setPreview(engine.is_preview)

    if not rtExporter:
        bus['exporter'] = exp_init.InitExporter(bus)

    try:
        # We do everything here basically because we want to close files
        # if smth goes wrong...
        if not rtExporter:
            err = Export(bus, scene, engine, engine.is_preview)
        else:
            if not VRayExporter.animation_mode in {'NONE', 'CAMERA_LOOP'}:
                o.setAnimation(True)
                o.setFrameStart(scene.frame_start)
                o.setFrameEnd(scene.frame_end)
                o.setFrameStep(scene.frame_step)
            elif VRayExporter.animation_mode == 'CAMERA_LOOP':
                cameraCount = len([1 for o in scene.objects if o.type == 'CAMERA' and o.data.vray.use_camera_loop])
                o.setAnimation(True)
                o.setFrameStart(1)
                o.setFrameEnd(cameraCount)
                o.setFrameStep(1)

            init = {
                'context'      : bpy.context.as_pointer(),
                'engine'       : engine.as_pointer(),
                'data'         : bpy.data.as_pointer(),
                'scene'        : scene.as_pointer(),
                'mainFile'     : fm.getFilePathByPluginType('MAIN'),
                'objectFile'   : fm.getFilePathByPluginType('OBJECT'),
                'envFile'      : fm.getFilePathByPluginType('WORLD'),
                'geometryFile' : fm.getFilePathByPluginType('GEOMETRY'),
                'lightsFile'   : fm.getFilePathByPluginType('LIGHT'),
                'materialFile' : fm.getFilePathByPluginType('MATERIAL'),
                'textureFile'  : fm.getFilePathByPluginType('TEXTURE'),
                'cameraFile'   : fm.getFilePathByPluginType('CAMERA'),
            }

            # Free anything we have
            if engine.renderer:
                del engine.renderer

            renderer = _vray_for_blender_rt.init(**init)
            if renderer:
                setattr(engine, 'renderer', renderer)
                _vray_for_blender_rt.render(renderer)

    except Exception as e:
        debug.ExceptionInfo(e)
        err = str(e)
    finally:
        exp_init.ShutdownExporter(bus)

    return err