Nodes/ComfyUI-OC-Generator/OC Presentation Camera Block
ComfyUI Node

OC Presentation Camera Block

Framing, lenses, and dutch angles without a camera vocabulary

By Zhuozhuo-219·Created 3 months ago·Updated 2 months ago· 0
OC Presentation Camera Block
    • oc_block
    • prompt_preview
    • debug_text
    group__all_groups__
    modefixed
    option特写镜头 | 腋窝偷看 -> armpit_peek
    enabledtrue
    seed0
    step1

    "Shot from below, close-up, cinematic angle" is easy to want and annoyingly easy to typo into tags the model half-ignores. OC Presentation Camera Block fixes that the ComfyUI-OC-Generator way: fifty-one curated framing, lens, and angle options in a dropdown, and out comes a correctly-spelled prompt fragment. It's the part of an anime character prompt that most people write by feel - this node lets you write it by selection.

    In the wider workflow this is one of the "presentation" blocks that describe how the character is shown rather than who they are. Its oc_block output wires into OC Generator (or OC Block Merge), which sorts everything into a stable prompt order - camera lands where it belongs, after pose, before rendering. Wire the prompt_preview output to a text viewer and you'll see plain English fragments like dutch angle, cowboy_shot, or ass_focus sitting alongside tags from the rest of your character.

    The three controls that do everything

    • option - a static dropdown covering the whole camera catalog, split by subgroup: 镜头 (lens/framing like bust and cowboy shot), 特写镜头 (close-ups and focus shots), and 镜头角度 (angles like cinematic and dutch).
    • group - restricts the active pool to one subgroup. Note the warning baked into the tooltip: the dropdown itself doesn't visually shrink. Pick a group, and options outside it are still listed - they just fall back to the first valid item in your group if you select them.
    • mode - fixed keeps your choice (when it's valid for the group); randomize, increment, and decrement all operate inside the current group's pool.

    The two optional inputs complete the picture: enabled (set to false to silence the block without deleting it) and seed/step for reproducible randomize or stepped browsing through the pool. The step input is a genuinely nice touch - set mode to increment with a step of 1 and each run walks the camera catalog in order, a poor man's batch experiment.

    How it actually resolves

    Every option in the catalog is a stored tag plus metadata (Chinese label, English prompt, group). At run time the node picks one via your mode, bundles it into an OC_BLOCK dict, and returns it alongside prompt_preview (the resolved fragment) and debug_text (which shows the selected group, mode, index in the pool, and whether a group mismatch forced a fallback). Selection is deterministic when a seed is set - the pack derives an index from a hash of the block, group, option, and seed, so the same settings always pick the same shot.

    The usual suspects

    The group/static-dropdown mismatch is the classic burn here. You set group to 特写镜头, leave the option on a non-close-up from a previous experiment, and the node quietly substitutes the first close-up in the pool. The clue is always in debug_text, which prints requested option not in current group; fallback applied. Read that output before you start suspecting your checkpoint.

    Install is painless - ComfyUI Manager (search "ComfyUI-OC-Generator") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Zhuozhuo-219/ComfyUI-OC-Generator
    

    Restart, done. No models, no pip dependencies, just JSON catalogs and Python - this whole pack is a prompt-engineering layer for anime SDXL models, not a generator in its own right.

    CategoryOC Generator/Blocks

    Inputs (6)

    NameTypeDefaultDescription
    groupCOMBO__all_groups__Limit selection to one subgroup. The option dropdown itself is static and will not visually shrink when group changes.
    modeCOMBOfixedfixed keeps the chosen option when valid for the current group. randomize / increment / decrement operate only within the selected group pool.
    optionCOMBO特写镜头 | 腋窝偷看 -> armpit_peekStatic dropdown for the whole catalog. If the chosen option does not belong to the current group, execution falls back to the first valid item in that group.
    enabledoptBOOLEANtrueDisable this block without deleting it from the workflow.
    seedoptINT00–4294967295Seed used by randomize mode to get reproducible results inside the current group pool.
    stepoptINT11–1024Step size for increment / decrement mode inside the current group pool.

    Outputs (3)

    NameTypeDescription
    oc_blockOC_BLOCKStructured OC block data for downstream aggregation in OC Generator.
    prompt_previewSTRINGThe prompt fragment resolved by this dimension node.
    debug_textSTRINGExecution details, including group filtering and selection behavior.