Nodes/ComfyUI-OOP/OOP Animal 🐾
ComfyUI Node

OOP Animal 🐾

A wolf, purple, playing β€” one node instead of a tag battle

By 0xRavenBlackΒ·Created 2 years agoΒ·Updated about a year agoΒ· 15
OOP Animal 🐾
    • OOP_ANIMAL
    β—„animal_typeCatβ–Ί
    β—„colorBlackβ–Ί
    β—„actionLyingβ–Ί
    β—„randomizefalseβ–Ί

    You want a scene with a purple wolf playing. Normally that's a sentence you gamble on - "purple wolf playing" is vague enough that the model picks its own favorite wolf. OOP Animal 🐾 from the ComfyUI-OOP pack makes the animal a first-class citizen of your prompt: type, color and action each get a dropdown, and the node writes the labeled line for you.

    What it builds

    It's a string builder, like every node in this pack. Three dropdowns in, one custom OOP_ANIMAL string out:

    • animal_type - 22 options: Horse, Cat, Dog, Elephant, Lion, Tiger, Bear, Monkey, Snake, Giraffe, Kangaroo, Wolf, and more. Default Cat.
    • color - 20 options from plain Black/White/Brown through the fantasy palette (Blue, Green, Purple, Golden). Default Black.
    • action - 21 options: Jumping, Running, Sleeping, Playing, Eating, Roaring, Climbing, Swimming, Flying, and the rest. Default Lying.

    Pick Wolf + Purple + Playing and the node emits type:Wolf, color: Purple, action:Playing - exactly the label-prefixed style the pack's README demo uses. That's the whole trick: a consistent, structured sentence the OOP Node can slot into the bigger scene prompt.

    There's also the randomize boolean. Flip it and each queue rolls a random animal, random color, random action. Great for brainstorming thumbnail variations; annoying if you wanted one specific wolf, because the re-roll fires on every queue run, not just when you change a widget. That's the IS_CHANGED method returning fresh random bits each time - intentional, and the pack's standard behavior.

    Wiring it up

    The OOP_ANIMAL output is a custom type only this pack understands. It doesn't plug into a text box. It goes into the Animal input on the OOP Node πŸ’«, which assembles the full structured prompt (Style: ..., Person: ..., Animal: type:Wolf, color: Purple, action:Playing, and so on), CLIP-encodes it, and gives you both a CONDITIONING and a readable STRING output. Read the string when you want to see exactly what got written.

    Install

    Ships with the pack, so one clone gets you everything:

    cd ComfyUI/custom_nodes
    git clone https://github.com/0xRavenBlack/ComfyUI-OOP
    

    Restart ComfyUI. Manager works too - search ComfyUI-OOP in the Custom Nodes Manager. No requirements.txt, no model files, no pip fights. It's plain Python that never touches the image.

    Gotchas

    • SDXL territory. The pack's aggregator hardcodes CLIP skip βˆ’2 and 1024Γ—1024 sizing, and the demo workflow runs an SDXL empty latent at 1152Γ—896 (euler/karras, cfg 8, 20 steps). type:Wolf reads cleanly on SDXL and booru-trained checkpoints. On Flux or newer LLM-encoder models, these labels are weaker signal - you're outside what the author built and tested.
    • Animal list is fixed. 22 species, no "penguin," no custom slot. If the list doesn't have your animal, pick the closest and edit the final string by hand - that's exactly why the OOP Node surfaces the prompt text.
    • The color space in the label looks odd (color: Purple with a space) but it's harmless - it's just text the encoder reads.

    Small quiet pack, built in early 2025 and dormant since. It won't win any awards for maintenance, but if you want animals in your scenes without typing the same sentence wrong three times, it works.

    CategoryObject-Oriented Prompting

    Inputs (4)

    NameTypeDefaultDescription
    animal_typeCOMBOCat22 options: Horse, Cat, Dog, Elephant, Lion, Tiger, +16
    colorCOMBOBlack20 options: Black, White, Brown, Golden, Gray, Spotted, +14
    actionCOMBOLying21 options: Jumping, Lying, Running, Sleeping, Playing, Eating, +15
    randomizeoptBOOLEANfalseβ€”

    Outputs (1)

    NameTypeDescription
    OOP_ANIMALOOP_ANIMALβ€”