0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI生成画像から3Dモデル部品をバッチ生成するワークフロー案

0
Posted at

AIで小さな部屋やゲーム背景のコンセプト画像を作ることは簡単になりました。ただし、その画像を3Dシーンとして使うには、机、椅子、ランプ、棚、植物などを部品として扱える必要があります。
この記事では、AI生成画像から3Dモデル部品を作るワークフロー案を整理します。実コードではなく、実装方針に近いメモです。
シーン全体をそのまま3D化しにくい理由
1枚のシーン画像をそのまま3D化しようとすると、部品同士がくっついたり、背面や側面が曖昧になったり、後から配置変更しにくくなったりします。
ゲームやWeb 3Dで使うなら、シーン全体ではなく、部品ごとに3Dモデル化したほうが管理しやすいです。
房间6.PNG

全体ワークフロー

  1. AIでシーン画像を作る
  2. 椅子、机、ランプなどを部品ごとに切り出す
  3. 白背景の単体画像に整える
  4. image-to-3Dで部品ごとに3Dモデル化する
  5. GLB、OBJなどで保存する
  6. 生成ログと失敗ログを残す
  7. 必要に応じて後工程で配置・調整する
    【画像说明占位|流程图】Scene Image → Object Extraction → Individual Cleanup → Image-to-3D → GLB/OBJ Export → Scene Assembly のフロー図。飞书内で作成可。
    [图片]
    シーン画像のプロンプト例
    部品化しやすいシーンにするには、物体同士を重ねすぎないことが重要です。
    isometric small cozy room scene,
    separate visible furniture objects,
    desk, chair, table lamp, bookshelf, potted plant, rug,
    consistent toy-like style, clean composition,
    objects not overlapping too much,
    no people, no text, no logo
    部品画像のプロンプト例
    切り出した部品を生成し直す場合は、白背景で単体オブジェクトとして作るとImage-to-3Dに渡しやすいです。
    single wooden chair object,
    white background, full object visible,
    front three-quarter view, clear silhouette,
    soft studio lighting, no text, no logo, no shadow
    ディレクトリ構成
    batch_3d_parts/
    scene_images/
    room_scene_001.png
    object_images/
    room001_chair_001.png
    room001_desk_001.png
    room001_lamp_001.png
    room001_plant_001.png
    generated_models/
    room001_chair_001.glb
    room001_desk_001.glb
    logs/
    jobs.csv
    errors.csv
    batch_generate.py
    命名規則
    あとでシーンに戻すことを考えると、ファイル名にscene id、object名、連番を入れておくと便利です。
    {scene_id}{object_name}{index}.png
    room001_chair_001.png
    room001_lamp_001.png
    room001_bookshelf_001.png
    API呼び出し風の擬似コード
    実際のAPI仕様は使うサービスに合わせる必要がありますが、バッチ処理の構造はだいたい以下のようになります。
    from pathlib import Path
    import csv
    import time

IMAGE_DIR = Path("object_images")
MODEL_DIR = Path("generated_models")
LOG_DIR = Path("logs")

MODEL_DIR.mkdir(parents=True, exist_ok=True)
LOG_DIR.mkdir(parents=True, exist_ok=True)

def submit_image_to_3d(image_path: Path) -> str:
"""
ここでImage-to-3Dサービスに画像を送信する。
戻り値はjob_idを想定。
"""
# response = requests.post(...)
# return response.json()["job_id"]
return "dummy_job_id"

def wait_result(job_id: str) -> str:
"""
job_idをポーリングして、生成モデルのURLまたはファイルパスを返す想定。
"""
# while True:
# status = requests.get(...)
# if status == "done":
# return result_url
# time.sleep(5)
return "dummy_result_url"

def download_model(result_url: str, out_path: Path):
"""
生成結果を保存する。
"""
# data = requests.get(result_url).content
# out_path.write_bytes(data)
out_path.write_text("placeholder")

rows = []
errors = []

for image_path in sorted(IMAGE_DIR.glob("*.png")):
out_path = MODEL_DIR / f"{image_path.stem}.glb"
try:
job_id = submit_image_to_3d(image_path)
result_url = wait_result(job_id)
download_model(result_url, out_path)
rows.append({
"image": image_path.name,
"model": out_path.name,
"job_id": job_id,
"status": "done"
})
except Exception as e:
errors.append({
"image": image_path.name,
"error": str(e)
})

with (LOG_DIR / "jobs.csv").open("w", newline="", encoding="utf-8-sig") as f:
writer = csv.DictWriter(f, fieldnames=["image", "model", "job_id", "status"])
writer.writeheader()
writer.writerows(rows)

with (LOG_DIR / "errors.csv").open("w", newline="", encoding="utf-8-sig") as f:
writer = csv.DictWriter(f, fieldnames=["image", "error"])
writer.writeheader()
writer.writerows(errors)
ローカル生成とクラウド生成の比較
方式
メリット
注意点
ローカル生成
環境を管理できる、検証しやすい
GPU、依存関係、セットアップが重い
クラウド生成
環境構築が軽い、すぐ試せる
API制限、コスト、ジョブ管理が必要
クラウド型ツールを使う場合
部品ごとに画像を用意して3D化する用途では、Hi3D のようなツールが使いやすいです。単体画像から3Dモデルを生成し、複数形式で出力できるため、部品管理のワークフローに組み込みやすくなります。
房子6.png

部品化するときの注意点
注意点
理由
部品を重ねすぎない
切り出し時に形が分かりにくくなる
白背景に整える
生成対象を明確にできる
小物は大きめに切り出す
細部が潰れにくい
失敗ログを残す
再生成やプロンプト修正に使える
用途ごとに形式を選ぶ
GLB、OBJ、STLなどで後工程が変わる
まとめ
3Dモデル生成AI を使う場合、シーン全体を一気に3D化するより、部品ごとに生成したほうが扱いやすいケースがあります。特に小物、家具、背景パーツのような単体オブジェクトでは、部品化ワークフローが有効です。
AI生成シーンを3D化するなら、まずは「部品に分ける」ことを前提にすると、後から編集・配置しやすくなります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?