メインコンテンツへスキップ
ComfyUI ネイティブ Luma Concepts ノード Luma Concepts ノードは、事前に定義されたカメラコンセプトを Luma 生成プロセスに適用できるようにし、複雑なプロンプト記述を必要とせずに、カメラアングルや視点を精密に制御できます。

ノードの機能

このノードは、Luma 生成ノードの補助ツールとして機能し、ユーザーが事前に定義されたカメラコンセプト(例:上から見たアングルや低角度、クローズアップやロングショットといった撮影距離、プッシュインやフォローといったカメラの動き)を選択・適用できるようにします。これにより、生成結果におけるカメラ効果を直感的に制御でき、クリエイティブなワークフローが簡素化されます。

パラメータ

基本パラメータ

パラメータ説明
concept1選択最初のカメラコンセプト選択肢。各種プリセットおよび「none」を含む
concept2選択2番目のカメラコンセプト選択肢。各種プリセットおよび「none」を含む
concept3選択3番目のカメラコンセプト選択肢。各種プリセットおよび「none」を含む
concept4選択4番目のカメラコンセプト選択肢。各種プリセットおよび「none」を含む

オプションパラメータ

パラメータ説明
luma_conceptsLUMA_CONCEPTSオプションのカメラコンセプト。ここで選択したコンセプトと統合されます

出力

出力説明
luma_conceptsLUMA_CONCEPT選択されたすべてのコンセプトを含む統合オブジェクト

使用例

Luma Text to Video ワークフローの例

Luma Text to Video ワークフローの例

Luma Image to Video ワークフローの例

Luma Image to Video ワークフローの例

動作原理

Luma Concepts ノードは、以下のような多様な事前定義カメラコンセプトを提供しています:
  • 撮影距離(クローズアップ、ミディアムショット、ロングショット)
  • 視点の高さ(アイレベル、オーバーヘッド、ローアングル)
  • カメラの動き(プッシュイン、フォロー、オービット)
  • 特殊効果(ハンドヘルド、スタビライズド、フローティング)
ユーザーは最大4つのコンセプトを同時に選択できます。このノードは、選択されたカメラコンセプトを含むオブジェクトを作成し、それを Luma 生成ノードへ渡します。生成処理中、Luma AI はこれらのカメラコンセプトをもとに出力の視点や構図を制御し、選択された写真表現効果を正確に反映させます。 複数のカメラコンセプトを組み合わせることで、詳細なプロンプト記述を書かずに高度なカメラ指示を実現できます。これは、特定のカメラアングルや構図が求められる場合に特に有効です。

ソースコード

[ノードのソースコード(2025-05-03 更新)]

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,)