QQ登录 微博登录 帐号登录 我已阅读并接受《用户协议》
QQ、微博及系统账号均为独立账号,账号信息不互通
欢迎来到C4D素材网
赞助会员下载VIP模型
立即加入
您的VIP会员开通成功!
您的VIP会员开通成功!
今日下载数已用完
赞助会员
感谢您留下宝贵的建议
下载提示!请输入验证码验证哦!
看不清,重新获取
提交验证码
首页 > 插件下载 > 渲染辅助 >

C4D批渲染后自动关机插件AutoKill v1.0

CoCC4D模型
CoCC4D模型
C4D爱好者经常通宵熬夜加班渲染,渲染到半夜电脑还开着,西技大神写了这个批渲染任务完成后可以自动关机的插件,有的时候晚上批渲染或者马上要出差,定一个渲染完成自动关机,就什么也不用担心了。CoCC4D模型
CoCC4D模型
分享一下思路:CoCC4D模型
-1.判断批渲染任务里的任务状态和任务数量。CoCC4D模型
-2.如果有任务在渲染,那么启动子线程去check状态。任务结束就执行关机。CoCC4D模型
-3.还有一个情况,就是插件打开之后,还没有批渲染。所以这里设计一个checkbox的交互,当勾选上就开启子线程。取消勾选就关闭子线程。CoCC4D模型
CoCC4D模型
获取批渲染任务状态  CoCC4D模型
创建一个GUI窗口,继承自GeDialog。然后初始化它的属性,使它获得批渲染的实例。分别拿到批渲染对象实例、批渲染任务数量和用于存放子线程的属性。CoCC4D模型
CoCC4D模型
class AutoKill(gui.GeDialog):CoCC4D模型
    def __init__(self):CoCC4D模型
        self.br = c4d.documents.GetBatchRender()CoCC4D模型
        self.num = self.br.GetElementCount()CoCC4D模型
        self.th = NoneCoCC4D模型
CoCC4D模型
创建GUI的各个组件,将checkbox和说明文字添加到GUI窗口中。设置对其关系和默认尺寸。CoCC4D模型
CoCC4D模型
    def CreateLayout(self):CoCC4D模型
        self.SetTitle("批渲染自动关机设置")CoCC4D模型
        if self.GroupBegin(0, c4d.BFH_CENTER | c4d.BFH_CENTER, cols=1, rows=3, title="批渲染自动关机"):CoCC4D模型
            self.GroupBorderSpace(10, 10, 10, 10)CoCC4D模型
            self.AddCheckbox(self.KILL_ID, c4d.BFH_LEFT, initw=0, inith=0, name="勾选:将执行渲染完成后自动关机\n取消勾选或关闭窗口:将取消自动关机设置。")CoCC4D模型
            self.GroupEnd()CoCC4D模型
        return TrueCoCC4D模型
CoCC4D模型
通过遍历所有任务得到批渲染状态的自定义函数isRener。CoCC4D模型
CoCC4D模型
def isRender(br):CoCC4D模型
    num = br.GetElementCount()CoCC4D模型
    try:CoCC4D模型
        for i in range(num):CoCC4D模型
            if br.GetElementStatus(i) == c4d.RM_PROGRESS:CoCC4D模型
                return TrueCoCC4D模型
        return FalseCoCC4D模型
    except IndexError:CoCC4D模型
        return FalseCoCC4D模型
CoCC4D模型
c4d.RM_PROGRESS是批渲染的状态常量。状态等于这个值意味着这个任务正在渲染。CoCC4D模型
CoCC4D模型
绑定checkbox的状态  CoCC4D模型
当checkbox被修改的时候,获取checkbox的值,并获取批渲染实例的状态。CoCC4D模型
如果checkbox的值为True,则创建子线程,并将批渲染实例的状态传给子线程后,启动子线程。CoCC4D模型
如果checkbox的值为False,则关闭子线程。CoCC4D模型
这样设置的好处是可以把一些列的判断都在子线程类里去判断,不需要在GUI类里面重复判断逻辑,主体思路清晰。CoCC4D模型
CoCC4D模型
    def Command(self, message_id, msg):CoCC4D模型
        if message_id == self.KILL_ID:CoCC4D模型
            status = self.GetBool(self.KILL_ID)CoCC4D模型
            status_render = isRender(self.br) and self.br.IsRendering()CoCC4D模型
            if status:CoCC4D模型
                self.th = KillThread(self,status_render)CoCC4D模型
                self.th.Start()CoCC4D模型
            else:CoCC4D模型
                if self.th is not None:CoCC4D模型
                    self.th.End()CoCC4D模型
CoCC4D模型
为了避免窗口被误操作,给GUI窗口加上销毁GUI的保险,如果GUI的线程属性存在,则关闭该线程。CoCC4D模型
CoCC4D模型
    def DestroyWindow(self):CoCC4D模型
        if self.th is not None:CoCC4D模型
            self.th.End()CoCC4D模型
CoCC4D模型
接下来写子线程要执行的逻辑。CoCC4D模型
CoCC4D模型
子线程逻辑  CoCC4D模型
先把子线程类搭起来。输入GUI窗口对象和批渲染当前状态。CoCC4D模型
CoCC4D模型
class KillThread(c4d.threading.C4DThread):CoCC4D模型
    def __init__(self,dialog,status):CoCC4D模型
        self.br = c4d.documents.GetBatchRender()CoCC4D模型
        self.num = self.br.GetElementCount()CoCC4D模型
        self.dialog = dialogCoCC4D模型
        self.status = statusCoCC4D模型
        self.first = TrueCoCC4D模型
CoCC4D模型
然后逻辑分两种情况:CoCC4D模型
-1.批渲染任务先启动了,关机插件后启动的。CoCC4D模型
-2.关机插件先启动了,批渲染任务后启动的。CoCC4D模型
CoCC4D模型
    def Main(self):CoCC4D模型
        if self.status:CoCC4D模型
            # 批渲染任务先启动CoCC4D模型
            passCoCC4D模型
        else:CoCC4D模型
            # 批渲染任务后启动CoCC4D模型
            passCoCC4D模型
CoCC4D模型
1)批渲染先启动CoCC4D模型
从GUI子类传进来的当前状态self.status为True,每一秒都与新的状态比对。如果新的批渲染状态为False意味着已经结束渲染。CoCC4D模型
CoCC4D模型
    def Main(self):CoCC4D模型
        if self.status:CoCC4D模型
            # 批渲染任务先启动            CoCC4D模型
            while self.IsRunning():CoCC4D模型
                time.sleep(1)CoCC4D模型
                new_status = isRender(self.br) and self.br.IsRendering()CoCC4D模型
                if not new_status:CoCC4D模型
                    self.dialog.SetBool(self.dialog.KILL_ID, False)CoCC4D模型
                    close()CoCC4D模型
                    breakCoCC4D模型
                if self.TestBreak():CoCC4D模型
                    breakCoCC4D模型
        else:CoCC4D模型
            # 批渲染任务后启动CoCC4D模型
            passCoCC4D模型
CoCC4D模型
2)插件工具先启动,即checkbox被勾选上而批渲染还没有点击渲染。CoCC4D模型
插件工具先启动则GUI子类传进来的批渲染状态为False。然后每秒钟比对批渲染的状态,一旦批渲染被开启,将self.status设置为True。接着继续对比批渲染任务是否停止,一旦停止则执行关机。CoCC4D模型
CoCC4D模型
    def Main(self):CoCC4D模型
        if self.status:CoCC4D模型
            while self.IsRunning():CoCC4D模型
                time.sleep(1)CoCC4D模型
                new_status = isRender(self.br) and self.br.IsRendering()CoCC4D模型
                if not new_status:CoCC4D模型
                    self.dialog.SetBool(self.dialog.KILL_ID, False)CoCC4D模型
                    close()CoCC4D模型
                    breakCoCC4D模型
                if self.TestBreak():CoCC4D模型
                    breakCoCC4D模型
        else:CoCC4D模型
            while self.IsRunning():CoCC4D模型
                time.sleep(1)CoCC4D模型
                new_status = isRender(self.br) and self.br.IsRendering()CoCC4D模型
                if (self.status != new_status) and self.first:CoCC4D模型
                    self.status = new_statusCoCC4D模型
                    self.first = FalseCoCC4D模型
                elif (self.status != new_status) and (not self.first):CoCC4D模型
                    self.first = TrueCoCC4D模型
                    close()CoCC4D模型
                    breakCoCC4D模型
                if self.TestBreak():CoCC4D模型
                    breakCoCC4D模型
CoCC4D模型
自定义关机的函数close,首先要得到管理员权限,然后判断系统类型。CoCC4D模型
CoCC4D模型
def run_as_admin():CoCC4D模型
    if ctypes.windll.shell32.IsUserAnAdmin():CoCC4D模型
        return TrueCoCC4D模型
    script = sys.argv[0]CoCC4D模型
    ctypes.windll.shell32.ShellExecuteW(None, "auto_kill", sys.executable, script, None, 1)CoCC4D模型
    return TrueCoCC4D模型
CoCC4D模型
def close():CoCC4D模型
    if os.name == 'nt':CoCC4D模型
        run_as_admin()CoCC4D模型
        os.system('shutdown -s -t 0')CoCC4D模型
    elif os.name == 'posix':CoCC4D模型
        os.system('shutdown now -h')CoCC4D模型
CoCC4D模型
以上就是实现C4D批渲染自动关机的分享。CoCC4D模型
CoCC4D模型
【脚本安装】CoCC4D模型
1.将AutoKill文件夹放置在C4D的plugins文件夹下即可。CoCC4D模型
2.安装好之后启动C4Dshift+F12打开【命令管理器】,在搜索 框中输入AutoKill。CoCC4D模型
3.将词条拖入C4D的窗口合适的位置,并保存窗口布局方便使用。CoCC4D模型
4.也可以设置快捷键。CoCC4D模型
CoCC4D模型
【使用步骤】 CoCC4D模型
1.将要批量渲染的参数在设置好后开始批量渲染。CoCC4D模型
2.点击插件弹出如下对话框,勾选即可开启自动关机功能。CoCC4D模型
3.取消勾选或关闭窗口都将停用自动关机功能。CoCC4D模型
CoCC4D模型
【版本信息】C4D R19及以上。CoCC4D模型
【作者信息】西技大神

C4D插件:C4D批渲染后自动关机插件AutoKill v1.0(批渲染,c4d关机,渲染关机,自动关机,AutoKill,plugin),版本为AutoKill v1.0,分类属于渲染辅助,软件语言为中文,支持PC(Windows) , MAC(Mac OS)系统平台,安装好的插件会出现在CINEMA 4D软件的其它位置位置,附件大小约197.66 KB,下载方式为本地下载。更多不错渲染辅助下载,尽在C4D模型-C4D.COM。

立即下载
收藏
215
0
5
  • 提供者:
  • 插件评分:
  • 编号:
    7609
  • 权限:
  • 模点:
    0点
  • 属性:
    渲染辅助插件
  • 语言:
    中文
  • 平台:
    PC(Windows) / MAC(Mac OS)
  • 版本:
    AutoKill v1.0
  • 位置:
    其它位置
  • 大小:
    197.66 KB
  • 下载方式:
    本地下载
  • 更新时间:
    2023-09-28 15:38:52
您可能还喜欢其他相关插件