The main node makes your conditioning go towards similar concepts so to enrich your composition or further away so to make it more precise.
It gathers similar pre-cond vectors for as long as the cosine similarity score diminishes. If it climbs back it stops. This allows to set a relative direction to similar concepts.
The nodes:
Vector sculptor text encode:
Does what I described above.
- Sculptor Intensity: How strong the effect will be. If the direction is not reversed I would say that up to 3 you will keep the overall meaning of your prompt. If reversed then don't go above 1~2.5 or face (enjoy?) randomness.
- Sculptor method:
- forward: goes towards the nearest vectors. This will make your generated images different in a generally good way. It can also reinforce the meaning of some words or make the images more colorful. Recommended intensity is above 1.
- backward: goes away from these nearest vectors. This might make the images sharper somehow or more precise with a low intensity but tends to have a more random effect in general. Recommended intensity is 1 and below.
- maximum_absolute: Normalize the vectors and selects the values that are the furthest from 0. The intensity has no effect here besides disabling if set at 0. This tends to make the compositions more complex on simple subjects and more chaotic on complex prompts. Can be beneficial or not depending on what. It's mostly for fun but can give extremely nice results with abstract concepts.
- Token normalization: reworks the magnitude of each vectors. I recommand either "none" which leaves things by default or "mean" so to set every token's importance to their overall mean value. "set at 1" will set them all at 1 and I have no idea if this is a good idea. "mean of all tokens" will take the mean value of EVERY vectors within the pre-cond weights and is probably a bad idea but also why not.
If the intensity is set at 0 the token's normalization is still into effect. Setting it at 0 and selecting "none" will return a default Comfy conditioning.
Both directions offer valid variations no matter the subject.
Conditioning (Slerp):
Since we are working with vectors, doing weighted averages might be the reason why things might feel "dilute" sometimes:
With an average we're losing magnitude.
"Conditioning normalize magnitude to empty:
Makes the overall intensity of the conditioning to the one of an empty cond. I have no idea if this is an actually good idea. It tends to give more balanced images regarding the colors and contrasts but also gave me more molten people.
If using SDXL the values are worked separately for clip_g and clip_l
Examples (same noise seed, euler/20 steps):
Going towards similar vectors:
"a plate with a few bananas":
Above 7 it would become way too random.
Going away from similar vectors:
"a plate with a few bananas":
There is slightly less clutter
Maximum absolute:
Example with SDXL:
prompt is: "dark enchanted forest with colorful glowing lights, digital painting, night, black amoled wallpaper, wintery fog, fantasy"
Default:
Bleh...
Forward
Did I just Midjourney SDXL???
Backward
Maximum absolute didn't do well this time:
intensity at 10 becomes total nonsense whatever the direction:
Note:
I make these nodes to try to understand things deeper. My maths can sometimes be wrong sometimes. Everything I do is self-taught with an overly top-to-bottom approach.
Also kittens seems immune to this transformation and inherits little suits before turning into AI chaos.