今天介绍一个很实用,但是教程不多的comfyUI功能:在comfyUI只实现循环的功能。
这在批量生成图片,长视频生成等场景,非常有用。
奈何网上教程资料很少,又不是很详细,所以我花费不少时间,测试了一下。并建了几个测试的案例,帮助朋友一起学习如何搭建comfyUI循环功能。
看结果:
单个循环功能:
循环生成图片:
原理讲解
工作流用到的2个主要节点,可以在哪Custom Nodes Manager里之间安装。
看下面单个循环的功能:
这个循环实现的是一个累加的功能,输入100,经过6轮循环,每次+1,最终输出106。
图中有5个节点,4条关键的线。
节点1,输出一个数字100
节点2,For循环-开始,循环的关键节点
-
流,连接到循环结束节点,
-
值,值的输出是从左边输入的初始值,以及4节点左边传入的初始值。(每次循环都会根据循环结束节点,更新值1)。例如第一个循环是100,第二轮循环时是101。
-
索引是当前循环的次数,从0开始。
-
总量是循环的轮数。
节点3,执行数学运算,每次把输入的值+1。
节点4,For循环-结束,左边的输入值,会更新2节点的输入值。右边的值是循环结束时输出的值。
节点5,展示最终的输出结果。
-
边A:连接For-循环开始和结束,必须连接,不能变。
-
边B,可以从索引或者值中引出,作为循环体的开始。
-
边C,输入到循环结束节点,代表一轮循环的结束。
-
边D,循环结束时必须有输出,不然不会执行循环。
这是一个最简单的循环体。只要保证ABCD四条线的存在,就可以正常执行循环。
3节点作为循环的主体,可以穿插任意节点。
循环生成图片的工作流
下面用这个多图生成工作流再说明下。
可以看到我们依旧保证ABCD四条线的存在。
BC线之间的内容,都是循环体。
因为comfyUI如果种子值不变的换,不会重新生成新的图片,所以每次循环,都让种子值加上索引值。
例如图中:
-
第一轮输入值是100,索引是0,最终的种子值为100
-
第二轮输入值是100,索引是2,最终的种子值为101
-
第二轮输入值是100,索引是2,最终的种子值为102
我还测试了一下,在循环中执行不同分支的可能性。
例如下面的循环,总循环4次,第一次运行分支1,后面都运行分支2。这个还设计的一个分支处理的节点,大家可以先自己研究下,我留在下文中讲。
如果觉得有帮助,帮忙点赞评论支持一下。
本文涉及到的工作流,评论区留言666,免费领取。