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

全体ワークフロー
- AIでシーン画像を作る
- 椅子、机、ランプなどを部品ごとに切り出す
- 白背景の単体画像に整える
- image-to-3Dで部品ごとに3Dモデル化する
- GLB、OBJなどで保存する
- 生成ログと失敗ログを残す
- 必要に応じて後工程で配置・調整する
【画像说明占位|流程图】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モデルを生成し、複数形式で出力できるため、部品管理のワークフローに組み込みやすくなります。

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