Use this file to discover all available pages before exploring further.
The Luma Concepts node allows you to apply predefined camera concepts to the Luma generation process, providing precise control over camera angles and perspectives without complex prompt descriptions.
This node serves as a helper tool for Luma generation nodes, enabling users to select and apply predefined camera concepts. These concepts include different shooting angles (like overhead or low angle), camera distances (like close-up or long shot), and movement styles (like push-in or follow). It simplifies the creative workflow by providing an intuitive way to control camera effects in the generated output.
The Luma Concepts node offers a variety of predefined camera concepts including:
Camera distances (close-up, medium shot, long shot)
View angles (eye level, overhead, low angle)
Movement types (push-in, follow, orbit)
Special effects (handheld, stabilized, floating)
Users can select up to 4 concepts to use together. The node creates an object containing the selected camera concepts, which is then passed to Luma generation nodes. During generation, Luma AI uses these camera concepts to influence the viewpoint and composition of the output, ensuring the results reflect the chosen photographic effects.By combining multiple camera concepts, users can create complex camera guidance without writing detailed prompt descriptions. This is particularly useful when specific camera angles or compositions are needed.
class LumaConceptsNode(ComfyNodeABC): """ Holds one or more Camera Concepts for use with Luma Text to Video and Luma Image to Video nodes. """ RETURN_TYPES = (LumaIO.LUMA_CONCEPTS,) RETURN_NAMES = ("luma_concepts",) DESCRIPTION = cleandoc(__doc__ or "") # Handle potential None value FUNCTION = "create_concepts" CATEGORY = "api node/image/Luma" @classmethod def INPUT_TYPES(s): return { "required": { "concept1": (get_luma_concepts(include_none=True),), "concept2": (get_luma_concepts(include_none=True),), "concept3": (get_luma_concepts(include_none=True),), "concept4": (get_luma_concepts(include_none=True),), }, "optional": { "luma_concepts": ( LumaIO.LUMA_CONCEPTS, { "tooltip": "Optional Camera Concepts to add to the ones chosen here." }, ), }, } def create_concepts( self, concept1: str, concept2: str, concept3: str, concept4: str, luma_concepts: LumaConceptChain = None, ): chain = LumaConceptChain(str_list=[concept1, concept2, concept3, concept4]) if luma_concepts is not None: chain = luma_concepts.clone_and_merge(chain) return (chain,)