Suka simpul ini? Belikan aku kopi!
Memulai? Unduh alur kerja pengujian di bawah dan lihat cara kerjanya.
Masalah? Langsung ke logging dan debugging
Gagasan tentang cara meningkatkan node (atau laporan bug) - ajukan masalah
Steker yang tidak tahu malu untuk node saya yang lain -> Lihat Image Picker untuk mengetahui cara lain membuat beberapa alur kerja lebih lancar. Dan tinggalkan bintang jika Anda menyukai sesuatu!
Alur kerja ini menggunakan kelima node, dan dapat digunakan untuk menguji (dan memahami!) node tersebut. Anda tidak akan membangunnya seperti ini, itu hanya sebuah contoh... | Berikut gambar dengan alur kerja di dalamnya |
---|---|
Atau alur kerja sebagai json
Ada beberapa situasi yang saat ini tidak dapat diatasi oleh node UE. Berikut beberapa yang saya ketahui, dan kemungkinan solusinya.
node khusus pythonsssss sangat bagus, tetapi ada beberapa batasan dalam menggunakannya dengan node UE. Secara khusus, Anda tidak dapat mengumpankan output dari node Teks Preset langsung ke node UE (lihat #154).
Node UE sebagian besar bekerja dengan node grup. Namun ada beberapa hal penting yang perlu diperhatikan:
5.0 (6 Agustus 2024)
4.9 (2 Mei 2024)
4.8 (18 Maret 2024)
send to unmatched
4.7 (1 Maret 2024)
Anything Everywhere?
node4.6
Anything Everywhere?
simpul4.5
convert to real links
4.4
Anything Everywhere?
node dengan input (hanya berfungsi jika tautannya berasal dari node yang merupakan sumber string sederhana)4.3
4.2
4.1.2
4.1.1
4.1
Node v1 telah dihapus sepenuhnya. Jika Anda menggunakannya, Anda bisa menggantinya dengan node Anything Everywhere
.
Gunakan Manajer Nyaman. Jika Anda benar-benar ingin melakukannya secara manual, cukup clone repositori ini di direktori custom_nodes Anda.
Node Anything Everywhere
memiliki satu input, awalnya diberi label 'apa saja'. Hubungkan apa pun ke sana (secara langsung - bukan melalui rute ulang), dan nama masukan berubah agar sesuai dengan jenis masukan. Putuskan sambungan dan kembali ke 'apa saja'.
Saat Anda menjalankan perintah, masukan apa pun yang tidak tersambung, di mana pun dalam alur kerja, yang cocok dengan jenis tersebut, akan bertindak seolah-olah tersambung ke masukan yang sama.
Untuk memvisualisasikan apa yang sedang dihubungkan, klik kanan pada kanvas latar belakang dan pilih Toggle UE Link Visibility
.
Node ini menambahkan dua widget - title_regex dan input_regex. Itu hanya akan mengirim ke input yang cocok. Jadi pada contoh, title_regex adalah 'Pratinjau' sehingga gambar dikirim ke node Pratinjau Gambar tetapi tidak ke node Simpan Gambar. Perhatikan bahwa Anda dapat mengganti nama node dan memasukkan judul, yang dapat membantu!
(Dari 4.6 Anda juga dapat menentukan ekspresi reguler grup agar hanya mencocokkan input pada node yang berada dalam grup yang cocok dengan ekspresi reguler.)
Pencocokannya adalah ekspresi reguler, bukan pencocokan string. Kebanyakan string sederhana dapat digunakan (cocok dengan bagian mana pun dari judul atau nama masukan), namun beberapa karakter memiliki arti khusus (termasuk berbagai jenis tanda kurung, ^, $, /, dan . khususnya) jadi hindari saja jika Anda tidak ingin menggunakan string tersebut. cenderung regex.
Menggunakan regex berarti Anda dapat menggunakan ^prompt
untuk mencocokkan prompt
di awal judul saja, untuk menghindari pencocokan negative_prompt
.
Regex 101 - ^
berarti 'awal', $
berarti 'akhir', .
cocok dengan karakter tunggal apa pun, .*
cocok dengan karakter apa pun yang panjangnya berapa pun (termasuk nol). Untuk lebih dari itu, kunjungi regex101 (rasa yang Anda inginkan adalah ECMAScript, meskipun itu mungkin tidak masalah).
Semacam itu.
Karena regex perlu diketahui sebelum alur kerja dikirimkan (untuk menghitung tautan), Anda tidak bisa memasukkan string ke dalam Anything Everywhere?
simpul dan berharap itu berfungsi. Satu-satunya hal yang didukung adalah jika input datang langsung dari node yang menyetelnya dengan widget string. Node Simple String
yang disertakan dalam paket ini akan berfungsi.
Ini berhasil | Ini tidak. Dan tidak akan pernah. |
---|---|
Seed Everywhere terhubung ke input INT yang tidak terhubung dengan seed
di nama inputnya (seed, noise_seed, dll), dan memiliki fitur control_after_generate. Jadi jika Anda mengonversi widget seed menjadi input, Anda dapat menggunakan seed yang sama di mana saja.
Benar-benar hanya tiga node Anything Everywhere
yang dikemas bersama. Dirancang untuk keluaran Checkpoint Loader.
Prompt Everywhere memiliki dua input. Mereka akan dikirim dengan aturan pencocokan regex masing-masing (^prompt|^positive)
dan neg
. Ini harus sesuai dengan berbagai versi nama yang digunakan untuk petunjuk dan petunjuk atau pengkondisian negatif.
string | pengkondisian |
---|---|
Node UE tidak bekerja dengan primitif dan COMBO (tipe data yang digunakan untuk daftar dropdown, yang juga merupakan tipe primitif dalam Comfy). Kecil kemungkinannya mereka akan melakukannya.
Jika Anda ingin menggunakan UE untuk mengontrol sampler atau sigma, Anda dapat melakukannya dengan node SamplerCustom
bawaan:
Untuk lebih lanjut tentang ini, lihat diskusi ini
Klik kanan pada sebuah node dan Anda dapat mengaturnya untuk menolak tautan UE
Jika Anda ingin melihat link UE, Anda dapat mengaktifkan dan menonaktifkannya dengan mengklik kanan pada kanvas. Untuk kontrol yang lebih baik, menu pengaturan utama memiliki opsi untuk menampilkan tautan ketika mouse bergerak di atas node di kedua ujung, atau ketika salah satu dari node tersebut dipilih.
Tautan dapat dianimasikan untuk membedakannya dari tautan biasa - animasi ini dapat berbentuk titik bergerak, cahaya yang berkedip, atau keduanya. Hal ini mungkin berdampak pada kinerja dalam beberapa kasus - perhatikan bahwa animasi pulsa memerlukan lebih sedikit pemrosesan dibandingkan titik bergerak. Kontrol ini di menu pengaturan utama.
Secara default, animasi dimatikan saat alur kerja berjalan untuk meminimalkan dampak pada CPU/GPU - Anda juga dapat mengubahnya di pengaturan.
Jika Anda ingin berbagi alur kerja tanpa memerlukan simpul UE, atau untuk menyimpan alur kerja versi API, Anda dapat mengganti tautan virtual yang dibuat oleh simpul UE dengan tautan nyata (dan menghapus simpul UE).
Hal ini dapat dilakukan untuk satu node dengan mengklik kanan node tersebut dan memilih Convert to real links
, atau untuk semua node UE dalam alur kerja dengan mengklik kanan latar belakang dan memilih Convert all UEs to real links
.
Shift klik pada node keluaran dan seret lalu lepaskan untuk mendapatkan menu pembuatan otomatis. Ini menggantikan perilaku default (yang memberi Anda kotak pencarian), sehingga Anda dapat menonaktifkannya dengan pengaturan Anything Everywhere replace search
.
Node UE dapat dibatasi untuk mengirim hanya ke node dengan warna yang sama, atau hanya ke node yang warnanya tidak sama.
Mereka juga dapat dibatasi untuk mengirim hanya ke node dalam grup yang sama (grup mana pun yang sama), atau hanya ke node yang tidak berada dalam grup yang sama.
Klik kanan pada node dan pilih Group restrictions
atau Color restrictions
. Node UE yang dibatasi (dalam salah satu atau kedua cara) memiliki lingkaran hijau di sudut kiri atas.
Node Jalan Raya Trung 0246 adalah cara yang cukup keren untuk menyalurkan data. Anda dapat menargetkan mereka dengan aplikasi Anything Everywhere?
node dengan menggunakan input_regex
yang cocok dengan nama input yang tidak terhubung dengan '+', seperti ini:
Ini baru, jadi harap laporkan masalah apa pun!
Secara default, alur kerja diperiksa untuk loop sebelum dikirimkan (karena UE dapat memperkenalkannya, dan loop menghasilkan hasil python yang buruk). Jika loop terdeteksi, Anda akan mendapatkan peringatan JavaScript yang menunjukkan id node yang terlibat. Namun, terutama jika ada node kustom lain yang terlibat, mungkin saja pemeriksaan tersebut akan melewatkan satu loop, atau menandai node yang tidak nyata.
Jika Anda mendapat peringatan dan tidak yakin ada loop (setelah memeriksa id node yang terdaftar!), Anda dapat menonaktifkan pemeriksaan loop di menu pengaturan utama. Jika sesuatu yang ditandai sebagai loop berjalan dengan baik, harap ajukan masalah dan sertakan alur kerja dalam laporan (simpan json dan zip, karena GitHub tidak menerima file .json). Begitu juga jika sebuah loop tidak tertangkap.
Saya telah menulis kode untuk backend inti Comfy untuk menangkap loop, mungkin itu akan disertakan - PR untuk ComfyUI - atau mungkin mereka punya rencana lain.
Jika ada lebih dari satu node pengirim yang cocok dengan sebuah input, aturan dasarnya adalah node yang lebih spesifiklah yang menang. Urutan prioritasnya adalah:
Anything Everywhere?
Seed Everywhere
dan Prompts Everywhere
Anything Everywhere
Anything Everywhere3
Untuk node pada waktu yang sama, node dengan batasan warna dan batasan grup akan diprioritaskan (warna+grup > warna > grup > tidak ada).
Jika dua node dengan prioritas yang sama keduanya cocok, tidak ada yang akan terhubung - lebih baik gagal dengan cepat daripada mendapatkan hasil yang ambigu. Jika ada kecocokan yang ambigu, Anda dapat menampilkannya menggunakan Show UE broadcast clashes
(klik kanan pada latar belakang - opsi hanya muncul jika ada bentrokan).
Node yang hanya memiliki satu output juga dapat memperoleh kotak teks yang menunjukkan dengan tepat apa yang melewati node tersebut. Anda perlu mengaktifkannya jika Anda menginginkannya - ini ada di pengaturan utama, 'Detail node Apa Saja Di Mana Saja'.
Konsol JavaScript (tekan f12 di beberapa browser) memiliki informasi pencatatan tentang apa yang sedang terhubung. Anda dapat mengubah tingkat detail dengan mencari file [comfy_install]/custom_nodes/cg-use-everywhere/js/use_everywhre_utilities.js
dan di dekat bagian atas temukan bit ini:
static ERROR = 0 ; // actual errors
static PROBLEM = 1 ; // things that stop the workflow working
static INFORMATION = 2 ; // record of good things
static DETAIL = 3 ; // details
static LEVEL = Logger . PROBLEM ;
static TRACE = false ; // most of the method calls
Ubah LEVEL
menjadi Logger.INFORMATION
untuk lebih banyak, atau Logger.DETAIL
untuk lebih banyak lagi; setel TRACE
ke true
untuk beberapa informasi debug lainnya.
Jika Anda mengalami masalah, menekan f12 untuk melihat konsol JavaScript sering kali dapat membantu. Langkah-langkah berikut sangat membantu dalam membuat laporan bug yang baik:
Hal lain yang patut dicoba adalah menghapus semua javascript node khusus tempat ia disalin ketika ComfyUI dimulai:
core
. Tinggalkan core
(itu hal ComfyUI)Jika Anda menemukan bug, silakan ajukan masalah - jika Anda dapat menyertakan alur kerja, itu sangat membantu (Anda harus menyimpannya sebagai .txt, atau meng-zip file .json, karena GitHub tidak menerima .json) .
Melewati dan menonaktifkan node berfungsi, tetapi dengan satu tangkapan. Jika Anda memiliki node UE yang cocok ( Anything Everywhere?
dan Prompt Everywhere
) dan Anda mengabaikan node yang cocok dengannya, tautan tidak akan dibuat. Jadi
Jika Anda menggunakan ? simpul untuk dikirim ke simpul... | ...dan melewati penerima, penerima tidak tersambung |
---|---|
Hal ini kemungkinan besar tidak dapat diperbaiki, namun seharusnya cukup mudah untuk dihindari!