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?

画像から生成した3Dモデルを使う前に最低限チェックするスクリプト案

0
Last updated at Posted at 2026-06-20

画像から3Dモデルを生成できるツールが増えています。プロトタイプや検証用途ではかなり便利ですが、生成したモデルをそのままゲーム、Web 3D、3Dプリントに使えるとは限りません。

この記事では、画像から生成した3Dモデルを使う前に、最低限チェックするためのスクリプト案をまとめます。

やりたいこと

  • 生成済みの3Dモデルをフォルダに置く

  • ファイル形式とサイズを一覧化する

  • GLBの場合はmesh数やface数をざっくり見る

  • CSVでチェック結果を出す

  • 人間が見るべき項目をメモする

前提

項目 内容
入力 白背景のオブジェクト画像、またはAI生成画像
生成 Image-to-3Dツールでモデル化
出力 GLB、OBJ、STL、FBXなど
用途 ゲーム、Web 3D、AR、3Dプリント、プロトタイプ
考え方 完成品ではなく、確認・修正する底模として扱う

Image

環境

今回はPythonで軽く確認するだけなので、最小構成は以下です。

Windows 11 / macOS
Python 3.10+
trimesh
openpyxl または csv標準ライブラリ

GLBのmesh情報を読む場合は、trimeshを入れておきます。

python -m venv .venv
.\.venv\Scripts\activate
pip install trimesh

ディレクトリ構成

model_check/
  input_images/
    chest.png
    chair.png
  generated_models/
    chest.glb
    chair.glb
    robot.stl
  reports/
  check_models.py

まず見るチェック項目

確認項目 チェック内容 自動化しやすさ
format GLB、OBJ、STLなど想定形式か
file size 重すぎないか
mesh / face count GLBなどで概算を取る
texture 伸び、にじみ、影の焼き込み
silhouette 元画像らしさが残っているか
printability 厚み、穴、接地面

チェック用Pythonスクリプト

以下は、generated_models配下のモデルを走査して、形式、ファイルサイズ、GLBのmesh/face数をCSVに出す例です。

from pathlib import Path
import csv

try:
    import trimesh
except ImportError:
    trimesh = None

MODEL_DIR = Path("generated_models")
REPORT_DIR = Path("reports")
OUT_CSV = REPORT_DIR / "model_check.csv"

TARGET_EXTS = {".glb", ".gltf", ".obj", ".stl", ".fbx", ".usdz"}

def inspect_glb(path: Path):
    if trimesh is None:
        return "", "", "trimesh not installed"

    try:
        scene = trimesh.load(path, force="scene")
        geometries = list(scene.geometry.values())
        face_count = 0
        for geo in geometries:
            if hasattr(geo, "faces"):
                face_count += len(geo.faces)
        return len(geometries), face_count, ""
    except Exception as e:
        return "", "", f"failed to inspect: {e}"

def main():
    REPORT_DIR.mkdir(parents=True, exist_ok=True)
    rows = []

    for path in sorted(MODEL_DIR.iterdir()):
        if path.suffix.lower() not in TARGET_EXTS:
            continue

        size_mb = path.stat().st_size / 1024 / 1024
        mesh_count = ""
        face_count = ""
        note = ""

        if path.suffix.lower() in {".glb", ".gltf"}:
            mesh_count, face_count, note = inspect_glb(path)

        if size_mb > 50:
            note = (note + "; " if note else "") + "large file"

        rows.append({
            "file": path.name,
            "format": path.suffix.lower().replace(".", ""),
            "size_mb": round(size_mb, 2),
            "mesh_count": mesh_count,
            "face_count": face_count,
            "note": note,
        })

    with OUT_CSV.open("w", newline="", encoding="utf-8-sig") as f:
        writer = csv.DictWriter(
            f,
            fieldnames=["file", "format", "size_mb", "mesh_count", "face_count", "note"]
        )
        writer.writeheader()
        writer.writerows(rows)

    print(f"wrote {OUT_CSV}")

if __name__ == "__main__":
    main()

CSV出力例

file,format,size_mb,mesh_count,face_count,note
chest.glb,glb,12.4,3,185432,
chair.glb,glb,38.7,5,642001,
robot.stl,stl,55.2,,,large file

手動で見るべき項目

スクリプトで見られるのは一部だけです。以下は最終的に人間が目視確認したほうがよいです。

  • 元画像のシルエットが残っているか

  • 側面や背面に不自然な補完がないか

  • テクスチャが伸びていないか

  • 3Dプリントする場合、薄すぎるパーツがないか

  • ゲームやWebで使う場合、ファイルサイズが重すぎないか

ツール例:Hi3D

今回のように画像から3Dモデルを作る場合、Hi3D のようなImage-to-3Dツールを使うと、画像入力からモデル生成、形式出力まで試しやすいです。GLB、OBJ、STL、FBX、USDZなど複数形式で出力できる点は、後工程の確認に向いています。

狐狸3.png

まとめ

3Dモデル生成AI は、画像から3Dモデルの底模を作るには便利です。ただし、生成結果の見た目だけで判断せず、用途ごとのチェックをしてから使うのが安全です。

まずはファイル形式、サイズ、face数など自動化しやすい項目をCSV化し、最後に人間が見た目と用途適合性を確認する流れが扱いやすいです。

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?