🚙

神威 第三世代 3D静的モデル生成 (要件定義yaml版)

に公開

神威の簡易的なガイドページを作りました 第三世代版です
現在公式さんで簡単操作ガイドを作成されているとのことで繋ぎガイドです

3Dモデルはキャラクターとして動くものにするか、静的なものにするかで最初の画像生成指定が変わってきます。今回は静的なものになります。

生成した3Dモデルの車

https://youtu.be/R8ppC9RDeSM

1. 第三世代にアクセスしてログイン

こちら↓
https://3rd.kamui.ai/ja

2. 一旦、トップページのテキスト欄にtestと入れてページ遷移

「test」と入力してテンプレートのyamlのみ生成
※aだけ入力でもok

現在初期設定されているAPIは(多分)日本語の言語理解力の良さとパフォーマンスのバランスからClaude HAIKUが設定されているのですが、生成するコンテンツやタイミングによってAPIレート制限で全出力がされないことがあります。Anthropicに制限解除の依頼中らしいので一旦はgeminiなどを選択しなおした方がスムーズに行きます

3. gemini or gpt4oを選択

好きなLLMを選択して要望入力後に送信ボタンをクリック
私はなんとなくgemini-2.0-flash-expを選択しています

4. 要件定義yamlのかたまりをチャット欄にそのまま投げる

グリモアと呼ばれる構造を持った要件定義yamlをそのままチャット欄に投げることで
複数の動画が一気に生成できてしまいます。

5. 要件定義yamlの構造と役割

要件定義yamlは柔軟性を持ったプログラムファイルと呼べるようなもので、あらかじめ必要な要素を階層構造でプライオリティをつけながら役割を明確に分けて定義することで、各種必要な要素がぬけ漏れなくきっちり入れることが可能なフォーマットになっています

要件定義yaml 全体

これをチャット欄に入力して実装ボタンクリックで3Dファイルが生成されます

structure.yaml
src:
  structure.yaml:
    content: |-
      車の画像生成・3Dモデル化プロジェクト
      - それぞれの車:
        * 2D画像生成(png)
        * 3Dモデル変換(glb)
      - 技術構成:
        * 画像生成API連携
        * 3Dモデル変換処理
    dependency: []
    agent: "claude-3-5-sonnet-20241022"
    api: []

  unit1:
    car1.png:
      content: |-
        青いスポーツカーの画像生成
        - 鮮明なカラー
        - 流線型で洗練されたデザイン
        - 自然な車の外観
        - 環境に応じた影付け
        - 単体生成       
      dependency: []
      agent: "lumalabs-photon-1"
      api: []
    car1.glb:
      content: |-
        スポーツカーの3Dモデル変換
        - シンプルで綺麗に仕上げることを優先
        - 細部は無理に再現しない
        - 単一モデルでの自然な表現
      dependency:
        - src/unit1/car1.png
      dependency_wait: true
      agent: "rodin-i2-3d"
      api: []

  unit2:
    car2.png:
      content: |-
        緑色のジープの画像生成
        - 鮮明なカラー
        - 力強いジープのフォルム
        - 高い地上高の表現
        - 自然な車の外観
        - 環境に応じた影付け
        - 単体生成
      dependency: []
      agent: "lumalabs-photon-1"
      api: []
    car2.glb:
      content: |-
        ジープの3Dモデル変換
        - シンプルで綺麗に仕上げることを優先
        - 細部は無理に再現しない
        - 単一モデルでの自然な表現
      dependency:
        - src/unit2/car2.png
      dependency_wait: true
      agent: "rodin-i2-3d"
      api: []

Text to Image to 3D

今回はテキストの要望から画像を生成し、その画像を元に3Dモデル(.glb)を生成します
大枠で3つのブロックに分かれています。

1.   全体の定義ブロック
2-1. 画像の定義ブロック
2-2. 3Dモデルの定義ブロック

全体の定義ブロック

プロジェクト全体の指定部、contentの中、1行目にメインプロンプトを、2行目からはリスト形式で指示します

今回はほぼ規定の記載で、1行めのプロンプトで作りたいカテゴリー(車)を指示程度であとはglbの指定などそのままお約束のような形で入れるとよさそうです

prompt
structure.yaml:
  content: |-
    車の画像生成・3Dモデル化プロジェクト
    - それぞれの車:
      * 2D画像生成(png)
      * 3Dモデル変換(glb)
    - 技術構成:
      * 画像生成API連携
      * 3Dモデル変換処理
  dependency: [] //空
  agent: "claude-3-5-sonnet-20241022"  //メインのマネージャーAI
  api: [] //空****

参照画像の定義ブロック

静止画、3Dモデルの記載は並列でセットで記載します
unit1としている項目はcar1などでもいいですが、他の3Dジャンルを生成する際にも使えるように汎用的な表記にしています。

参照する画像単体の指定部、contentの中、1行目に画像のメインプロンプトを、2行目からはリスト形式で指示します。

単体生成の指示を入れて画像内に1つだけイメージを表示させるようにします

prompt
unit1:
  car1.png:
    content: |-
      青いスポーツカーの画像生成
      - 鮮明なカラー
      - 流線型で洗練されたデザイン
      - 自然な車の外観
      - 環境に応じた影付け
      - 単体生成   // 画像内に複数入らないように明記
    dependency: []
    agent: "lumalabs-photon-1"
    api: []

画像生成時に1枚画像の中に俯瞰図、正面図、背面図など細かに構図指定してそれを出力したものと、簡素な画像指示を比較しましたが、簡素な方が3D化の再現性が高い印象。なのでシンプルで自然な指示がよさそうです。静止画像内の構図違いでパーツが変わったりしてしまうのもありそう。

下記は1枚画像に複数構図含めたもの ジープのタイヤ数が変わったりした

3Dモデルの定義ブロック

dependency: 参照する画像のパスと名前 (必須)
dependency_wait: true (必ずtrue)
agent: "rodin-i2-3d" (現行版はrodin-i2-3dを決め打ち)

contentの中、1行目に3Dモデルのメインプロンプトを、2行目からはリスト形式で指示します。
細部を厳密に再現しようとすると逆に3Dモデルの細部がギザギザになったりするので、細部を無理に再現させないでシンプル綺麗仕上げを優先。
単一モデルの指示を入れて1つだけモデルが生成されるようにします

prompt
unit1:
  car1.png:
    // car1の指定部
  car1.glb:  //必ずモデル名.glb
    content: |-
      スポーツカーの3Dモデル変換
      - シンプルで綺麗に仕上げることを優先
      - 細部は無理に再現しない
      - 単一モデルでの自然な表現
    dependency:
      - src/unit1/car1.png
    dependency_wait: true
    agent: "rodin-i2-3d"
    api: [] //空

それぞれの役割を記載しました

6. 実装を押して生成する

依存関係が可視化されています

7. 保存してダウンロード

ページ上部の保存ボタンをクリックすることで一括ダウンロード

8. 生成された3DモデルをCursorで確認

Cursorに拡張機能をインストールします

glTF Model Viewer

インストール後、Cursorでcar1.glbファイルをダブルクリックするとnoticeが表示されるが気にせず、開くをクリックすると、上部にglTF Model Viewerが表示されるのでクリック

あとはぐりぐりドラッグできます
https://youtu.be/R8ppC9RDeSM

Discussion