Listas de prompts no ComfyUI: renderize um blockout 3D em dezenas de estilos de arte durante a noite

Carregue centenas de prompts de um arquivo de texto com o Inspire Pack, acrescente um assunto e um fundo fixos com o Text Concatenate e associe uma pasta de capturas 3D a prompts correspondentes para cada imagem receber o certo.

Anton Tenitsky13 de outubro de 20266 min de leituraVersão em vídeo abaixo

Este guia foi traduzido do inglês com IA e pode conter erros. Leia o original.

Um soldado de armadura de camuflagem rosa e cinza com um visor escuro, uma das variações de estilo renderizadas a partir de uma lista de prompts

Uma lista de prompts permite renderizar muitas variações do mesmo assunto enquanto você dorme: 50, 300 ou 500 prompts, dependendo de como você a estrutura. Usei para estilos e cores diferentes dos meus blockouts 3D. Funciona com Flux, SDXL ou Stable Diffusion; o Flux geralmente dá resultados mais bonitos.

Este guia cobre três configurações, da simples à complexa: uma lista contra uma imagem, a mesma lista com um assunto e um fundo fixos acrescentados, e uma pasta de capturas percorrida junto com prompts correspondentes. O lado do ControlNet de profundidade, que transforma a captura 3D na estrutura da imagem, é tratado no pipeline automatizado de 3D para concept art. Aqui me concentro nos prompts.

Em resumo

  • Pacotes: Inspire Pack, rgthree, WAS Node Suite e WWAA custom nodes.
  • O arquivo: linha positive:, linha negative:, ---, repetido. Só minúsculas.
  • Local: dentro da pasta do Inspire Pack em custom_nodes.
  • Concatene um assunto («tank») e um fundo a cada estilo.
  • Imagens + prompts: mesma quantidade, mesma ordem, um contador controlando os dois.

Opção mais simples: se você só precisa de um prompt por linha, sem negativos nem imagens, meu nó Prompt Cycler faz isso num único nó.

Instale os nós

Você precisa do Inspire Pack, do rgthree, do WAS Node Suite e dos WWAA custom nodes (para o loop counter aninhado), todos pelo ComfyUI Manager. A instalação é um pouco complexa. Quando pesquisei, outras opções permitiam rodar três ou cinco prompts por vez, mas não encontrei uma para 50 ou 100.

Escreva a lista de prompts

A lista é um arquivo .txt simples. Descrevo estilos, não objetos: nada de tanque, soldado ou robô, só uma descrição genérica do visual. O objeto é acrescentado depois por concatenação.

Um arquivo de texto com lista de prompts no Bloco de Notas, com entradas feitas de uma linha positive, uma linha negative e três traços
Cada entrada: uma linha positive, uma linha negative e depois três traços.

A formatação é muito importante:

positive: ornate sci-fi style with gilded armor segments, embedded gemstones, ...
negative: glossy surfaces, ornamental engravings, glowing decorative elements, ...

---

positive: sci-fi ork style, heavily armored with jagged welded metal plates, ...
negative: bulky shape, exposed wiring, analog dials, scratched paint, retro features

---
  • Comece as linhas com positive: e negative: em minúsculas. Com letra maiúscula, a lista não funciona; é muito sensível a isso.
  • Separe as entradas com três traços (mais também serve).

Escrevendo listas com o ChatGPT: cole uma entrada neste formato e peça, por exemplo, 10 estilos de ficção científica. Normalmente é preciso ajustar e pedir que mantenha os traços e não acrescente texto aleatório. Um incômodo: não dá para saber facilmente quantas entradas você recebeu. Pedi 50 e recebi 47; só descobri colando num Google Doc e buscando «positive». Se você conhece um jeito melhor, me diga nos comentários.

Um LLM dentro do ComfyUI também pode gerar prompts. Parece ótimo, mas é mais lento, menos previsível, e um bom modelo pode ter cerca de 10 GB. Uma lista de prompts leva milissegundos.

Onde vai o arquivo: dentro da pasta do Inspire Pack em custom_nodes (uso a pasta de exemplo dele). Subpastas funcionam, e ele vê todos os arquivos de texto nelas, mas não lê nenhum outro local.

Configuração 1: uma lista de prompts simples

O nó Load Single Prompt From File (Inspire) com um arquivo de prompts selecionado e uma entrada de índice, acima de uma nota que explica o formato do arquivo
Load Single Prompt From File: escolhe uma entrada pelo índice.
  1. O Load Single Prompt From File (Inspire) carrega a lista. Escolha o arquivo; a entrada index seleciona a entrada.
  2. O ZIPPED_PROMPT dele vai para o nó Unzip Prompt / Bind, que entrega positive e negative. Esse nó também tem campos de prompt e uma entrada de imagem. O que você digita ali não segue adiante, e na minha configuração a entrada de imagem precisava estar preenchida para o nó funcionar, embora a imagem não vá a lugar nenhum.
  3. O positive vai para um nó Preview Text (para ver a linha atual) e para o CLIP Text Encode positivo.
  4. Um Nested Loop Counter (WWAA) alimenta o índice: defina o máximo dele como o número de entradas, 10 aqui. Um Display Int mostra qual entrada está rodando.
O nó bind do Inspire Pack com saídas image, positive, negative e prompt_label
O nó de desempacotamento divide cada entrada em positive e negative.

Teste antes de renderizar: ignore os nós de imagem (selecione-os, Ctrl+B) e execute com Ctrl+Enter. Se o nome do arquivo estiver errado, dá erro. Caso contrário, o texto de pré-visualização e o contador se atualizam a cada execução conforme percorre a lista. Mantenha o nó de pré-visualização de texto ativo enquanto faz o diagnóstico.

Configuração 2: acrescente um assunto e um fundo

Adicione um nó Text Concatenate (WAS). A lista de prompts entra em text_a, e text_b é uma string mais longa que colo com mais estilização. Normalmente coloco ali o item em si («tank») mais um cenário: «background winter landscape», «alien planet» ou «desert».

Um nó Text Concatenate juntando o estilo percorrido com uma string fixa, e um nó Preview Text mostrando far-future military style terminando com tank, background winter landscape
O estilo da lista mais «tank, background winter landscape» em toda execução.

Alguns estilos funcionaram melhor que outros: «clean medical tech» não deu ótimos resultados; um estilo «high empire sci-fi» (pense em Jupiter Ascending) deu as melhores imagens; «industrial cyberpunk» também foi bom.

A ordem importa. Coloque as palavras mais importantes primeiro. Para dar mais peso ao assunto, troque as entradas para «tank» vir primeiro. Isso importa mais para o SDXL, mas ajuda no Flux também.

Configuração 3: uma pasta de imagens com prompts correspondentes

Aqui 18 capturas de adereços diferentes são percorridas junto com os prompts. A parte difícil é mantê-los sincronizados: quando a captura do APC é carregada, o prompt tem que dizer «military APC».

  • Escreva a lista para a pasta. 18 imagens, 18 prompts, na mesma ordem: se a imagem 5 é uma faca, o prompt 5 é uma faca; a 8 é um drone; a 12 é uma nave espacial. Esses prompts nomeiam só o objeto, sem estilização, porque o estilo vem do nó concatenate (aqui com «blue background» para isolar os adereços).
  • Um contador controla os dois. O inteiro do contador vai para o índice do prompt e para o index do Load Image Batch (WAS), então a quinta execução carrega a quinta imagem e o quinto prompt.
  • Defina o contador em 18. No começo eu o tinha deixado em 10.
O nó Load Image Batch do WAS no modo single_image com uma entrada de índice conectada e um caminho de pasta de capturas
O Load Image Batch escolhe a imagem pelo índice, do mesmo contador dos prompts.

Reinicie o contador

Para recomeçar da primeira entrada, defina o reset do contador como true e execute uma vez (o número vai a zero), depois volte a false e execute de novo.

Qual configuração usar

Sinceramente, costumo rodar a lista simples com concatenação contra um objeto: 50 estilos de um tanque. Quando preciso testar muitas ideias de conceito durante a noite, associar uma pasta de capturas a uma lista é muito útil. Minha versão final deste fluxo também separa as imagens em verticais e paisagem (veja ordenar imagens por proporção) e roda 18 objetos contra 54 entradas de estilo.

Um grande fluxo do ComfyUI com zoom afastado, com grupos para carregamento de imagens, ordenação, listas de prompts e concatenação
A versão completa: ordenação de imagens, 18 prompts e estilização extra.

O sistema é um pouco complicado. Um custom node que lesse o número de imagens de uma pasta e ajudasse com os prompts facilitaria; depois criei um Prompt Cycler mais simples para o lado dos prompts. Os fluxos estão no meu Patreon para SDXL e Flux.

Assista à versão em vídeo (10:48)

Tudo o que está acima também está no vídeo, se você preferir acompanhar na tela. O vídeo está em inglês.

Perguntas frequentes

Como formato um arquivo de lista de prompts para o Inspire Pack?

Cada entrada é uma linha começando com «positive:», uma linha começando com «negative:» e uma linha separadora de três traços (---). Use «positive» e «negative» em minúsculas; com letra maiúscula a lista não carrega.

Onde vão os arquivos de listas de prompts?

Na pasta do próprio Inspire Pack dentro de custom_nodes (por exemplo, a pasta prompts/example). Ele lê qualquer subpasta ali, mas nenhum outro local.

Como associo uma pasta de imagens a uma lista de prompts?

Escreva a lista de prompts na mesma ordem das imagens, com o mesmo número de entradas, e controle tanto o índice do prompt quanto o do Load Image Batch com um único contador.

Por que não usar um LLM dentro do ComfyUI para escrever os prompts?

Funciona, mas é mais lento e menos previsível, e um bom modelo pode ter uns 10 GB. Uma lista de prompts carrega em milissegundos.

Anton Tenitsky é artista 3D com mais de 15 anos em computação gráfica, que trabalhou com Nickelodeon, Gameloft, Marvel Rivals e muitos outros clientes. Mais sobre mim

Guias relacionados