Skip to content

Instantly share code, notes, and snippets.

@mili-inch
Last active February 28, 2023 07:20
Show Gist options
  • Save mili-inch/88ef6a79b16d477a4cb126bd94392a30 to your computer and use it in GitHub Desktop.
Save mili-inch/88ef6a79b16d477a4cb126bd94392a30 to your computer and use it in GitHub Desktop.

B2ControlNet

カメラから見たボーンの配置をCOCOの2d keypoint配列準拠で書き出すBlenderアドオンです

このアドオンはControlNetを使用した指定ポーズでの画像生成を目的として作られています

ControlNet: https://github.com/lllyasviel/ControlNet

アニメーションのフレームをまとめて書き出したり、複数アーマチュアの書き出しも可能です

Rigifyで生成されたリグはボーン対応関係の自動設定が可能です

キーポイント画像から実際の画像を生成するには以下のAUTOMATIC1111 WebUI向けExtensionなどが便利です。

https://github.com/Mikubill/sd-webui-controlnet

書き出したjsonから画像を生成する実装は以下のColab、リポジトリがあります

ローカルでの生成はVRAM8GB以上のGPUが必要です

Open In Colab

https://github.com/mili-inch/ControlNet

インストール方法

Blender上部の編集メニューよりプリファレンス->アドオンから右上のインストールをクリックし、zipファイルを解凍せずに選択してください
Animation:B2ConrtolNetのチェックボックスをオンにするとインストール完了です

基本機能

3DViewにて、Nキーより呼び出せる右メニュー中に操作パネルが追加されます シーン中にカメラが最低一つ必要です

image

  • アーマチュア: 出力するアーマチュアを設定します チェックボックスで出力するか切り替えが可能です アーマチュアの名前はjsonに書き出されます
  • 各ボーン: 指定されたボーンがkeypointとして座標がjsonに書き出されます
    • ヘッド・テール: ボーンの根本・先端のどちらをkeypointの座標とするかを選択できます
  • Output Size: 出力される画像のサイズ 縦横のうち短い側がこの長さに揃えられます
  • Export as Image: カメラから見た現在のキーポイントを画像として保存します
  • Export All Frames as Images: カメラから見た全フレームのキーポイントを連番画像として保存します
  • Export as JSON: カメラから見た現在のキーポイントをjsonとして保存します
  • Export All Frames as JSON: カメラから見た全フレームのキーポイントをjsonとして保存します

Q&A

  • Q.生成するフレーム数を変更したい
    • A.プロパティパネルの開始フレーム・終了フレームで設定してください
  • Q.ボーンとKeypointの対応関係は?
  • Q.生成画像の身体が裏返ったりする
    • A.Rigifyの標準よりも首のボーンを下げた方が良いようです
  • Q.jsonの形式は?
    • A.以下のような感じです
{
  resolution: int[2],
  fps: int,
  frames: [
    {
      frame_current: int
      armatures: [
        {
          name: str,
          keypoint_indices: int[18]
        }
      ],
      keypoints: int[len(armatures)*18, 2]
    }
  ]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment