ComfyUIでキャラクター角度差分を生成

ControlNetとプロンプト制御を使って、1枚の画像から様々な角度のキャラクター差分を生成する方法

ノード構成

目次

ComfyUIでキャラクター差分生成する全体フロー

┌─────────────────────────┐
│   Load Image            │ ← 元画像(キャラクターA)
│   (元画像を読み込む)      │
└───────────┬─────────────┘
            │
            ↓
┌─────────────────────────┐
│ ControlNet Preprocessor │ ← OpenPose/Canny/Lineart
│ (画像を解析)             │   から選択
│                         │
│ 推奨: OpenPose          │
│ - detect_hand: false    │
│ - detect_body: true     │
│ - detect_face: true     │
│ - resolution: 512       │
└───────────┬─────────────┘
            │
            ├──────────────────┐
            │                  ↓
            │            ┌─────────────────┐
            │            │ Preview Image   │ (確認用)
            │            │ (前処理結果)     │
            │            └─────────────────┘
            │
            ↓
┌─────────────────────────┐
│ Load Checkpoint         │ ← ここでモデルを選択
│                         │
│ Model選択:              │
│ - anything-v5.safetensors
│ または                  │
│ - meinamix_v11.safetensors
└───────────┬─────────────┘
            │
            ├──────────────────────────────┐
            │                              │
            ↓                              ↓
┌─────────────────────────┐    ┌─────────────────────────┐
│ CLIP Text Encode        │    │ CLIP Text Encode        │
│ (Positive)              │    │ (Negative)              │
│                         │    │                         │
│ 入力: Positive Prompt   │    │ 入力: Negative Prompt   │
└───────────┬─────────────┘    └───────────┬─────────────┘
            │                              │
            └──────────────┬───────────────┘
                           │
                           ↓
            ┌──────────────────────────────┐
            │ Apply ControlNet             │
            │                              │
            │ 設定:                        │
            │ - control_net: OpenPose      │
            │ - strength: 0.8-0.9          │
            │ - start_percent: 0.0         │
            │ - end_percent: 0.8           │
            │                              │
            │ 入力:                        │
            │ - conditioning (Positive)    │
            │ - control_image (前処理画像) │
            └──────────────┬───────────────┘
                           │
                           ↓
            ┌──────────────────────────────┐
            │ KSampler                     │
            │                              │
            │ パラメータ:                  │
            │ - model: (Checkpointから)    │
            │ - positive: (ControlNet適用後)│
            │ - negative: (Negative Prompt)│
            │ - seed: 123456789 (固定推奨) │
            │ - steps: 25-35               │
            │ - cfg: 7-9                   │
            │ - sampler_name: dpmpp_2m_karras
            │ - scheduler: karras          │
            │ - denoise: 0.75-0.85         │
            └──────────────┬───────────────┘
                           │
                           ↓
            ┌──────────────────────────────┐
            │ Load VAE                     │
            │                              │
            │ VAE選択:                     │
            │ - vae-ft-mse-840000-ema-pruned
            │ または                       │
            │ - Automatic (自動)           │
            └──────────────┬───────────────┘
                           │
                           ↓
            ┌──────────────────────────────┐
            │ VAE Decode                   │
            │                              │
            │ 入力:                        │
            │ - samples: (KSamplerから)    │
            │ - vae: (Load VAEから)        │
            └──────────────┬───────────────┘
                           │
                           ↓
            ┌──────────────────────────────┐
            │ Save Image                   │
            │                              │
            │ 設定:                        │
            │ - filename_prefix: angle_diff_
            └──────────────────────────────┘

各ノードの詳細設定

1. Load Image

役割: 元となるキャラクター画像を読み込む

推奨する元画像:
  - 背景がシンプル
  - キャラクターが中央に配置
  - 全身または上半身
  - 解像度: 512x512 以上

2. ControlNet Preprocessor (OpenPose)

役割: 画像からポーズの骨格情報を抽出

設定:
  preprocessor: "openpose_full"
  resolution: 512
  
  detect_hand: false
    └─ 理由: 手の認識が不安定な場合はOFF
  
  detect_body: true
    └─ 必須: 体のポーズを維持
  
  detect_face: true
    └─ 必須: 顔の位置を認識

出力: 
  骨格線画像(Preview Imageで確認可能)

OpenPoseを選ぶ理由:

  • ポーズは維持しつつ、顔の向きはプロンプトで変更可能
  • キャラクターの一貫性が最も高い
  • 角度制御がしやすい

代替選択肢:

  • Canny: 輪郭重視(線が細かい)
  • Lineart: 線画調(アニメ向き)

Pose ControlNetの特性

Pose(OpenPose/DWPose)は骨格の位置関係を強く制約する

  • 「腕がこの位置」「顔がこの角度」が厳密に決まってしまう
  • プロンプトや数値を変えても、骨格構造が同じなら似た構図になりやすい
  • 特に顔の向きは骨格点で決まるので、微妙な角度調整が難しい

角度を微調整する方法

1. ControlNetの強度を下げる
Control Weight: 0.5〜0.7程度
Ending Control Step: 0.8程度

これでポーズは維持しつつ、多少の自由度が生まれます

2. プリプロセッサで調整
  • OpenPoseの検出結果を画像として保存
  • その骨格画像を画像編集ソフトで手動で微調整(顔の点を少し移動など)
  • 調整した骨格画像を「プリプロセッサなし」で入力
3. 複数のControlNetを組み合わせる
- Pose (低強度 0.5) + Depth (0.3)
- Pose (0.6) + Canny (0.2)

複数使うことで、一つ一つの制約が緩和されて柔軟性が増

4. Regional PrompterやInpaint併用
  • Poseで大まかな構図を作る
  • 顔部分だけInpaintで角度を変える

3. Load Checkpoint

役割: AIモデル(チェックポイント)を読み込む


【アニメ・イラスト系】
  1. Anything V5
     - ファイル: anything-v5-pruned.safetensors
     - 特徴: 汎用性が高く安定
     - 用途: 初心者におすすめ
  
  2. MeinaMix V11
     - ファイル: meinamix_meinaV11.safetensors
     - 特徴: キャラクター生成に特化
     - 用途: 角度差分に最適
  
  3. Counterfeit V3.0
     - ファイル: counterfeit-v3.0.safetensors
     - 特徴: アニメ調、一貫性◎
     - 用途: アニメキャラの差分

【リアル・写実系】
  1. Realistic Vision V5.1
     - ファイル: realisticVisionV51_v51VAE.safetensors
     - 特徴: 写実的、自然な仕上がり
     - 用途: 実写風の差分

【2.5D・セミリアル系】
  1. GhostMix
     - ファイル: ghostmix_v2.safetensors
     - 特徴: アニメとリアルの中間
     - 用途: 美麗な2.5Dイラスト

配置場所:
  ComfyUI/models/checkpoints/

4. CLIP Text Encode (Positive) – 角度別プロンプト

役割: 生成したい内容を指示する

基本構造:
  "1girl, [角度指定], [視線方向], [補助説明], masterpiece, best quality"

角度別プロンプト完全版

【0度 – 正面】

1girl, front view, looking at viewer, face forward, 
standing straight, centered composition, symmetrical face,
masterpiece, best quality, high resolution

重み付け推奨:
(front view:1.3), (looking at viewer:1.2)

【45度 – 右斜め前】

1girl, three-quarter view, looking to the right, 
head turned 45 degrees right, slightly angled pose,
face at 3/4 angle, partial side visible,
masterpiece, best quality, high resolution

重み付け推奨:
(three-quarter view:1.3), (looking to the right:1.2)

【90度 – 右側面】

1girl, profile view, side view, looking right,
head turned 90 degrees, complete side profile,
nose and chin line visible, perfect profile,
masterpiece, best quality, high resolution

重み付け推奨:
(profile view:1.4), (side view:1.3)

【135度 – 右斜め後ろ】

1girl, back three-quarter view, looking back,
over shoulder view, head turned back, glancing back,
rear three-quarter angle,
masterpiece, best quality, high resolution

重み付け推奨:
(looking back:1.3), (over shoulder:1.2)

【180度 – 真後ろ】

1girl, back view, from behind, rear view,
back to viewer, complete back visible, facing away,
posterior view,
masterpiece, best quality, high resolution

重み付け推奨:
(back view:1.4), (from behind:1.3)

【-45度 – 左斜め前】

1girl, three-quarter view, looking to the left,
head turned 45 degrees left, slightly angled pose,
face at 3/4 angle, partial side visible,
masterpiece, best quality, high resolution

重み付け推奨:
(three-quarter view:1.3), (looking to the left:1.2)

【-90度 – 左側面】

1girl, profile view, side view, looking left,
head turned 90 degrees, complete side profile,
nose and chin line visible, perfect profile,
masterpiece, best quality, high resolution

重み付け推奨:
(profile view:1.4), (side view:1.3)

プロンプト構成のコツ

必須要素(この順序で記述):
  1. 人数: "1girl"
  2. 角度: "front view"
  3. 視線: "looking at viewer"
  4. 補助: "face forward"
  5. 品質: "masterpiece, best quality"

重み付け記法:
  (keyword:1.3)  = 130%強調
  (keyword:0.8)  = 80%に弱める
  [keyword]      = やや弱める

例:
  "(front view:1.3), (looking at viewer:1.2), face forward"
  
キャラクター固有の要素を追加する場合:
  "1girl, long black hair, blue eyes, school uniform,
   front view, looking at viewer, masterpiece"

5. CLIP Text Encode (Negative) – ネガティブプロンプト

役割: 生成したくない要素を指定

必須項目(重要!):
  multiple views, split screen, reference sheet,
  character sheet, multiple angles, comparison

理由:
  → 1枚の画像に複数の角度が出るのを防ぐ

推奨追加項目:
  bad anatomy, bad hands, missing fingers,
  extra digits, fewer digits, cropped,
  worst quality, low quality, normal quality,
  jpeg artifacts, signature, watermark,
  username, blurry, artist name,
  deformed, ugly, mutation

完全版ネガティブプロンプト:
  multiple views, split screen, reference sheet,
  character sheet, multiple angles, comparison,
  bad anatomy, bad hands, missing fingers,
  extra digits, fewer digits, cropped,
  worst quality, low quality, normal quality,
  jpeg artifacts, signature, watermark,
  username, blurry, artist name

Apply ControlNet

役割: ControlNetを適用し、ポーズを維持しながら生成を制御

入力接続:
  - conditioning: CLIP Text Encode (Positive) から
  - control_net: OpenPoseモデル
  - image: ControlNet Preprocessor から

パラメータ設定:

  strength: 0.8-0.9
    説明: ControlNetの影響度
    0.7以下: 自由度高い(ポーズ崩れやすい)
    0.8-0.9: バランス良い(推奨)
    1.0: 完全固定(角度変更が難しい)
  
  start_percent: 0.0
    説明: 生成の開始時点からControlNet適用
    推奨: 0.0(最初から適用)
  
  end_percent: 0.8
    説明: 生成の80%地点までControlNet適用
    推奨: 0.7-0.8
    理由: 残り20%を自由にして自然な仕上がり

ControlNetモデル:
  control_v11p_sd15_openpose.pth
  または
  control_v11p_sd15_openpose.safetensors

配置場所:
  ComfyUI/models/controlnet/

設定の調整ガイド

角度が変わらない場合:
  → strength を 0.7 に下げる
  → end_percent を 0.7 に下げる

ポーズが崩れる場合:
  → strength を 0.9 に上げる
  → end_percent を 0.85 に上げる

7. KSampler

役割: 実際に画像を生成する

入力接続:
  - model: Load Checkpoint から
  - positive: Apply ControlNet から
  - negative: CLIP Text Encode (Negative) から
  - latent_image: Empty Latent Image から

パラメータ詳細:

  seed: 123456789 (固定推奨)
    説明: 乱数のシード値
    固定する理由: 同じキャラクターを維持
    -1: ランダム(毎回違うキャラ)
    任意の数値: 同じキャラクターを維持
  
  control_after_generate: "fixed"
    説明: シード値を固定
    "randomize": 毎回変更
    "fixed": 固定
  
  steps: 25-35
    説明: 生成のステップ数
    20以下: 荒い
    25-30: バランス良い(推奨)
    35-50: 高品質(時間かかる)
  
  cfg (CFG Scale): 7-9
    説明: プロンプト遵守度
    5以下: プロンプト無視気味
    7-8: バランス良い(推奨)
    10以上: プロンプトに忠実だが不自然
  
  sampler_name: "dpmpp_2m_karras"
    説明: サンプリング方法
    推奨:
      - dpmpp_2m_karras(高速・高品質)
      - euler_a(シンプル)
      - dpmpp_sde_karras(詳細重視)
  
  scheduler: "karras"
    説明: スケジューラー
    推奨: karras(安定)
  
  denoise: 0.75-0.85
    説明: ノイズ除去強度
    ControlNet使用時:
      0.75-0.85(推奨)
    ControlNet未使用時:
      1.0
    
    低い(0.5-0.7): 元画像に近い
    高い(0.85-1.0): 大きく変化

モデル別推奨設定:

【Anything V5】
  steps: 25-30
  cfg: 7-8
  sampler: dpmpp_2m_karras
  denoise: 0.8

【MeinaMix V11】
  steps: 28-35
  cfg: 7-9
  sampler: dpmpp_2m_karras
  denoise: 0.85

【Realistic Vision V5.1】
  steps: 30-40
  cfg: 6-8
  sampler: dpmpp_sde_karras
  denoise: 0.75

8. Load VAE

役割: 色彩や質感を最適化するVAEを読み込む

推奨VAE:

【アニメ・イラスト系】
  vae-ft-mse-840000-ema-pruned.safetensors
  理由: 色鮮やか、コントラスト良好

【リアル系】
  モデル内蔵VAEを使用(別途不要)
  または
  Automatic(自動選択)

【安全策】
  Automatic
  理由: モデルに最適なVAEを自動選択

配置場所:
  ComfyUI/models/vae/

注意:
  VAEを使わない場合は色がくすむことがある

9. VAE Decode

役割: 潜在空間から画像に変換

入力接続:
  - samples: KSampler から
  - vae: Load VAE から

設定:
  特になし(自動処理)

10. Save Image

役割: 生成画像を保存

設定:
  filename_prefix: "angle_diff_"
  
  出力例:
    angle_diff_00001.png
    angle_diff_00002.png
    ...

保存先:
  ComfyUI/output/

推奨命名規則:
  "character_angle000_"  (正面)
  "character_angle045_"  (右45度)
  "character_angle090_"  (右90度)
  ...

バッチ生成時:
  自動で連番が付く

実践ワークフロー

STEP
準備
  1. 元画像を用意
  2. OpenPose ControlNetモデルをダウンロード
  3. チェックポイント(Anything V5など)をダウンロード
  4. VAEをダウンロード(オプション)
STEP
ノード配置
  1. 上記のノード構成図に従って配置
  2. 各ノードを接続
  3. パラメータを設定
STEP
テスト生成
  1. 正面(0度)のプロンプトを入力
  2. Queue Promptをクリック
  3. 生成結果を確認
  4. 満足したらシード値を記録
STEP
角度差分生成
  1. プロンプトを45度用に変更
  2. シード値は同じまま
  3. Queue Promptをクリック
  4. 90度、135度… と繰り返し

推奨パラメータ一覧表

パラメータ初心者標準高品質
Steps20-2525-3030-40
CFG Scale77-88-9
ControlNet Strength0.80.850.9
Denoise0.80.80.75-0.85
Resolution512512-768768-1024
生成時間(目安)10-20秒20-40秒40-90秒

ファイル配置まとめ

ComfyUI/
├── models/
│   ├── checkpoints/
│   │   ├── anything-v5-pruned.safetensors
│   │   ├── meinamix_meinaV11.safetensors
│   │   └── realisticVisionV51_v51VAE.safetensors
│   │
│   ├── controlnet/
│   │   └── control_v11p_sd15_openpose.pth
│   │
│   └── vae/
│       └── vae-ft-mse-840000-ema-pruned.safetensors
│
├── input/
│   └── character_source.png (元画像)
│
└── output/
    ├── angle_diff_00001.png (正面)
    ├── angle_diff_00002.png (45度)
    └── ...

応用テクニック

1. 微妙な角度調整

15度刻みで生成:
  0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180度

プロンプト例(22.5度):
  "1girl, slightly three-quarter view, 
   head turned 22.5 degrees right,
   subtle angle, almost front view, (slight turn:1.1)"

2. 上下の角度も制御

見下ろし角度:
  "from above, looking down at viewer, 
   top-down angle, overhead view, bird's eye view"

見上げ角度:
  "from below, looking up at viewer, 
   low angle, bottom-up view, worm's eye view"

3. 表情との組み合わせ

各角度 + 表情バリエーション:
  
  正面 + 笑顔:
    "1girl, front view, looking at viewer, 
     smiling, happy expression, open mouth"
  
  横顔 + 真剣:
    "1girl, profile view, looking right, 
     serious expression, closed mouth, focused"

4. バッチ生成の効率化

Queue Promptを使って複数角度を連続生成:
  
  1. 最初の角度を設定
  2. Queue Promptをクリック
  3. すぐにプロンプトを次の角度に変更
  4. 再度Queue Promptをクリック
  5. 繰り返し
  
  → キューに溜まり、順次生成される

参考情報

ダウンロードリンク

Civitai(チェックポイント・ControlNet) https://civitai.com

Hugging Face(VAE) https://huggingface.co

ComfyUI公式 https://github.com/comfyanonymous/ComfyUI

パラメータ調整ガイド

問題と解決策

角度が変わらない

原因: ControlNetの影響が強すぎる

解決策:
✓ Apply ControlNet の strength を 0.7 に下げる
✓ end_percent を 0.7 に下げる
✓ KSampler の denoise を 0.85 に上げる
✓ プロンプトの重み付けを強化: (front view:1.5)

ポーズが崩れる

原因: ControlNetの影響が弱すぎる

解決策:
✓ Apply ControlNet の strength を 0.9-1.0 に上げる
✓ end_percent を 0.85 に上げる
✓ KSampler の denoise を 0.75 に下げる

複数角度が同時に出る

原因: Negative Promptが不足

解決策:
✓ “multiple views, split screen” を追加
✓ CFG Scaleを 9 に上げる
✓ プロンプトをより具体的に

キャラクターが変わる

原因: シード値が固定されていない

解決策:
✓ KSampler の seed を固定値に
✓ control_after_generate を “fixed” に
✓ Apply ControlNet の strength を上げる

画質が悪い

原因: ステップ数不足 or VAE未使用

解決策:
✓ KSampler の steps を 30-35 に
✓ VAEを読み込む
✓ 解像度を上げる (512 → 768)

生成に時間がかかりすぎる

Steps を 20-25 に下げる、解像度を 512×512 にする

メモリ不足エラーが出る

解像度を下げる、batch size を 1 にする

ControlNetが効かない

strength を確認、モデルのパスが正しいか確認

色がくすむ

VAEを読み込む、または Automatic に設定

よかったらシェアしてね!
  • URLをコピーしました!
目次