Nodes/Bjornulf_custom_nodes/๐Ÿ’ƒ๐Ÿ•บ๐Ÿ“ Text Generator (Character Pose)
ComfyUI Node

๐Ÿ’ƒ๐Ÿ•บ๐Ÿ“ Text Generator (Character Pose)

Build pose prompt text from dropdowns instead of typing it

By justUmenยทCreated 2 years agoยทUpdated about a year agoยท 545
๐Ÿ’ƒ๐Ÿ•บ๐Ÿ“ Text Generator (Character Pose)
  • GEN_OBJECT
  • add_GEN_POSE
  • GEN_POSE
โ—„seed0โ–บ
โ—„pose_viewโ–พโ–บ
โ—„pose_cameraโ–พโ–บ
โ—„pose_faceโ–พโ–บ
โ—„pose_armsโ–พโ–บ
โ—„pose_legsโ–พโ–บ
โ—„pose_bodyโ–พโ–บ
โ—„pose_head_neckโ–พโ–บ
โ—„pose_dynamicโ–พโ–บ
โ—„pose_actionโ–พโ–บ
โ—„pose_sittingโ–พโ–บ
โ—„pose_uniqueโ–พโ–บ
โ—„pose_for_GEN_OBJECTโ–พโ–บ
โ—„CUSTOM_PROMPTโ–บ

This is a prompt-writing helper, not an image node. It assembles a chunk of text describing a character's pose - camera angle, facial expression, what the arms and legs are doing, the overall body posture - from a stack of dropdown menus. You pick "hands behind head," "one foot forward," "view from the side," and it strings that into prompt text your checkpoint then renders. It's one node in Bjornulf's larger "Text Generator" system, which is a modular prompt builder you snap together from a main node plus character, scene, style, and pose pieces.

The appeal is that you don't have to remember or type pose vocabulary - you dial it in, or hit RANDOM and let the seed roll a pose for you. Great for churning out varied character shots without rewriting the prompt each time.

How it works

Every pose dropdown has a NONE option (skip this aspect), a RANDOM option (let the node pick one, controlled by the seed), and then a long list of specific choices. You mix and match: set the ones you care about, leave the rest on NONE, and set the interesting ones to RANDOM for variety. The node concatenates your selections into a pose description and outputs it as a GEN_POSE value, which you chain into the rest of the Text Generator graph - typically feeding a character, and connecting onward to the main Image Text Generator node that produces the final prompt string.

Important framing from the author: this node only writes text. That text is then interpreted by whatever checkpoint you're using, and the system was built with FLUX in mind. Don't expect every pose to land perfectly on every model - a lot depends on how well your checkpoint understands natural-language pose descriptions.

The inputs and outputs that matter

  • seed - drives the RANDOM picks. Fix it to reproduce a pose, change it to roll a new one.
  • The pose_* dropdowns - the meat of the node: pose_view, pose_camera, pose_face, pose_arms, pose_legs, pose_body, pose_head_neck, pose_dynamic, pose_action, pose_sitting, pose_unique, and pose_for_GEN_OBJECT. Each is NONE / RANDOM / a specific option. You won't touch all of them - set two or three that matter and leave the rest NONE.
  • CUSTOM_PROMPT - a freeform multiline field for pose text the dropdowns don't cover.
  • GEN_OBJECT and add_GEN_POSE (optional) - chaining inputs to link this with an object node or another pose in the Text Generator graph.

Output is GEN_POSE, which connects into the character/main-generator chain rather than straight into a text encoder.

How to install it

ComfyUI Manager: search Bjornulf_custom_nodes, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/justUmen/Bjornulf_custom_nodes

Restart ComfyUI. The Text Generator nodes are text-only, so no heavy dependencies are required for this one.

Common issues

The most common confusion is wiring this straight into a CLIP Text Encode and expecting magic. It's designed to plug into the Text Generator system - the main "Image Text Generator" node and a character node - not to stand alone. If you're only using this piece, take its output as raw text and combine it into your prompt yourself.

The other reality check is model comprehension. Pose control through prose is a FLUX-era strength; on tag-based models like Pony or Illustrious, a sentence like "three-quarter view, one leg slightly bent" lands far less reliably than the equivalent booru tags. If poses aren't sticking, that's usually the model, not the node - the author explicitly warns that some checkpoints are just bad at some things. Start with a couple of dropdowns set, verify they render, then add more.

CategoryBjornulf

Inputs (16)

NameTypeDefaultDescription
seedINT00โ€“18446744073709550000โ€”
pose_viewCOMBO9 options: NONE, RANDOM, view from the front, view from the back, view from the side, view from above, +3
pose_cameraCOMBO9 options: NONE, RANDOM, facing camera, looking away from camera, looking towards camera, looking past camera, +3
pose_faceCOMBO122 options: NONE, RANDOM, smiling, serious, laughing, crying, +116
pose_armsCOMBO84 options: NONE, RANDOM, one hand in the air, thumbs up with both hands, thumbs up with one hand, hands raised above head, +78
pose_legsCOMBO49 options: NONE, RANDOM, one foot forward, standing on tiptoe, one leg slightly bent, kick, +43
pose_bodyCOMBO24 options: NONE, RANDOM, standing, twisting torso, body bent forward, arching back, +18
pose_head_neckCOMBO12 options: NONE, RANDOM, head tilted, head down, head up, looking over shoulder, +6
pose_dynamicCOMBO19 options: NONE, RANDOM, running with arms outstretched, jumping with arms raised, kicking while running, dancing with hands in air, +13
pose_actionCOMBO25 options: NONE, RANDOM, sword fighting stance, boxing stance, martial arts pose, archery stance, +19
pose_sittingCOMBO12 options: NONE, RANDOM, cross-legged sitting, legs hanging off edge, one leg up sitting, knees bent up sitting, +6
pose_uniqueCOMBO35 options: NONE, RANDOM, superhero pose, yoga pose, lotus position, zombie walk, +29
pose_for_GEN_OBJECTCOMBO22 options: NONE, RANDOM, holding, carrying, looking at, examining, +16
CUSTOM_PROMPTSTRINGโ€”
GEN_OBJECToptGEN_OBJECT,STRINGโ€”
add_GEN_POSEoptGEN_POSE,STRINGโ€”

Outputs (1)

NameTypeDescription
GEN_POSEGEN_POSE,STRINGโ€”