image-to-sculpt について
Image 2 Sculptは、画像から確認可能な3Dスカルプトを作り、各工程を記録するワークフローです。見えている面は入力画像に合わせ、隠れた部分は相互に整合する生成ビューで補い、Blenderで工程を再生できます。
主な機能
- 011枚の画像からスカルプトを作成
- 02複数角度のビュー生成と選別
- 03画像の法線と輪郭に沿った表面フィット
- 04領域の修整と見える隙間の切り出し
- 05ビューごとの確認と指標比較
- 06Blenderで再生しOBJ、STL、GLBへ出力
活用シーン
- 01キャラクターや物体のレンダーをスカルプト化
- 02実物写真からフィギュアや製品を再構築
- 03同一物体の写真で生成ビューを置き換える
- 04輪郭や部分構造を確認してスカルプトを修整
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ gokayfem/ image-to-sculpt --skill image-to-sculptインストール後、Claude Code で/image-to-sculptを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/blender-and-delivery.mdchecking.mdconventions.mdfitting.mdinputs.mdlessons.mdviews.mdscripts/i2s.pyscripts/blender/build.pyscripts/i2s/__init__.pycase.pyfalio.pyfilm.pyfit.pygeom.pyhull.pyinputs.pymaps.pyregister.pyreport.pysdf.pysynth.pytemplates/acceptance.jsonCONTRACT.md詳細
Image 2 Sculpt
画像を入力するだけで、根拠を示せるスカルプトを出力します。画像に映るすべての表面は、画像自身のカメラにおける法線、輪郭、奥行きに合わせてフィットされます。隠れた表面は、互いに一致することを確認した生成ビューから作られ、構築の全工程が Blender に記録され、再生されます。
入力の振り分け
どの入力も同じケースのレイアウトに収まります(i2s.py new CASE --input ...)。詳細は references/inputs.md を参照してください。
| 入力 | 操作 | 備考 |
|---|---|---|
| キャラクター、クリーチャー、物体のレンダー画像またはAI画像 | new → run | 基本の手順です |
| 実物の物体(フィギュア、おもちゃ、製品、彫像)の写真 | new --kind photo → run | MoGe が実際の焦点距離と奥行きを推定します |
| 透過情報付きの切り抜きPNG | new → run | アルファチャンネルがマスクになるため、マスク処理の呼び出しは不要です |
| 複数の物体が写った複雑な画像 | prep --select "the red dragon" | SAM-3 が対象を選択します |
| 絵、スケッチ、フラットなイラスト | prep --restyle | nano banana がポーズを維持したまま、まず3Dレンダーに変換します |
| 同じ物体の複数の写真 | views --import DIR | 生成ビューの代わりに写真を使います。角度は位置合わせによって特定します |
| アイデアだけ | imagine OUT.png "idea" → new | 最初に使う、全身がきれいに収まったレンダーを生成します |
| APIキーがない場合 | 切り抜きPNG(+独自のビュー) | 正面だけでも動作します。シルエットを膨らませ、奥行きは推定します |
ワークフロー
各チェックポイントでラベル付きビジュアルを記録します(checks/sheet_*.png、ビューシート、ターンテーブルのフレーム):まず画像、次に数値です。修正ラウンドではステップを追加します。記録済みのものは編集しません。
- スキャフォールド。
i2s.py new CASE --input IMG --subject "short noun phrase"。画像を見て、主題を表すフレーズを自分で書きます(「ずんぐりした漫画風のトロール」「陶器のフクロウの置物」など)。このフレーズはすべてのビューのプロンプトに入ります。入力画像は sha256 とともにコピーされ、最も近いジェネレーターのアスペクト比に合わせて余白が追加されるため、すべてのビューで同じレンズが使われます。 - 正面マップ。
i2s.py prep CASE(マスク、MoGe-3 による深度と焦点距離、Marigold による法線。単位は主題に合わせて正規化)。次に進む前に、ref/front_mask.pngとref/front_normals.pngを確認します。選択された主題が違う場合は--selectを使います。描画の場合は--restyleを使います。 - ビュー。
i2s.py views CASE(9 ビュー+保留 1 ビュー、推定約 2 ドル。5 ビューにするには--set minimal)。生成された画像をすべて確認します。ポーズが変わっている、余分な手足がある、主題が切れている場合、そのビューは不適切です。登録処理では、他のビューの外殻と一致しないビュー(IoU < 0.80)は除外されますが、目にした内容を伝えてください。どのビューからも見えない領域には、さらに平滑化するのではなく、その領域を見通せる角度の新しいビューが必要です(--angles "-30:25")(references/views.md)。 - 外殻。
i2s.py hull CASE:すべてのビューの登録(指定した角度はあくまで事前情報です。左右の入れ替わりは検出され、前後は維持されます)、再センタリング、スクリーニング、記録されたカービング、対称性の検出を行います。case.jsonに記録された登録角度を確認します。i2s.py symmetry CASE on|offで検出された対称面を上書きできます。 - フィット。
i2s.py fit CASE --stage all(フォーム → サーフェス → ディテール、記録されたパスは 38 回)を実行し、続けてcut(写真に写っている指、脚、腕と胴体の隙間を開きます)、smooth(網状の部分や小さなノイズを取り除きます)、fit --stage polishを実行します。i2s.py run CASEは、このデフォルトのプランでステップ 2~8 を順番に実行します(references/fitting.md)。 - 確認と反復。
i2s.py check CASEはビューごとにシートを出力します。内容は、参照画像、参照法線、彫刻、法線誤差、シルエットの差分です。こぶ、網状の部分、不足している隙間、平坦化した特徴を探します。対象を絞り込みます。parts CASE --prompt "hands"の後にfit --stage focus --region hands、cut --region hands、smooth --region box:...を実行します(references/checking.md)。修正前後のシートなしに、修正したと主張してはいけません。 - 仕上げ、Blender、動画。
finish(ファセットの平滑化、OBJ/STL)、blender(写真のカメラから各ステップを再生、360°ターンテーブル、各ビュー、sculpt.blend、GLB)、film(360°回転、ターンテーブル、ビューシート、ヒーロー画像で終わる2画面のタイムラプス)を実行します(references/blender-and-delivery.md)。 - 報告して終了。
reportはout/REPORT.md、out/index.html、ステップごとのグラフを出力します。タイムラプス、ビューシート、計測値の表を提示し、弱い部分を伝えたら終了します。次に何をするかはユーザーが決めます。
厳守事項
- 写真が捉えているものを基準にします。 生成ビューは写真に写っていない部分だけを補います。深度は決して使用しません(ビューごとに数センチずれて一致しないためです)。生成ビューの法線を写真の法線と平均してはいけません。
- すべてのビューを位置合わせし、指定された角度を信用してはいけません。 トロールでは、生成ビューの角度が20~155°ずれており、その多くは左右が入れ替わっていました。検索ではそのようなずれも許容しますが、正面ビューは前方、背面ビューは後方に保ちます(対称的な対象では、背面の輪郭が正面と似ているためです)。位置合わせ後の角度は
case.jsonで確認してください。 - 彫り始める前にスクリーニングします。 ほかのビューと一致しないビューは別の対象またはポーズです。そのビューを拒否し、理由を伝えてください。そのビューでスカルプトを削ってはいけません。
- 1つのビューを検証用に残します。 このビューはサーフェスを動かしません。フィッティングの前にカメラを固定します。フィッティングに使用したビューとは分けて報告してください。このビューも生成されたものなので、真実ではなく一貫性を測定します。
- 目視だけに頼らず、測定してください。 IoU、輪郭距離、法線角度、参照画像自身の粗さに対する粗さ、写真の深度を測定します。1つの数値だけで「品質」を表すことはできません。並べて報告してください。
- 距離フィールドは常に正確に保ちます。 すべての操作でグリッドの距離を再計算します(帯域内では三角形からの正確な距離を、それ以外ではEDTを使用します)。不正確なフィールドのオフセット、フィールド自体のミラーリング、法線ターゲットのぼかしは、このケースの元になった事例で階段状のアーティファクト、モアレ状のリング、平坦化した鼻を生みました(
references/lessons.md)。 - すべてを記録します。 すべての彫り込み、パス、カット、スムージングを
build/steps/とbuild/log.jsonlのステップとして記録し、Blenderで再生してタイムラプスに表示します。記録済みのステップは編集せず、新しいステップを追加してください。 - 有料の呼び出し: falの呼び出しはすべてケースの予算(
settings.budget_usd)を通し、待機前にリクエストIDをcase.jsonに保存し、むやみに再送信しないでください。FAL_KEYを出力したり書き込んだりしてはいけません。 - すべてのチェックポイントで視覚的なフィードバックを行い、すべての映像のフレーム0には完成したサムネイルを表示します。
- 何を創作したかを明示します。 正面からしか見ていない対象の背面は、生成モデルの推測です。
参考資料
| ファイル | 読むタイミング |
|---|---|
references/inputs.md | 特殊な入力の振り分け、マスク、スタイル変更、選択、取り込み写真、アイデアのみの入力 |
references/views.md | ビューの生成、評価、位置合わせ、スクリーニング、追加 |
references/fitting.md | パスの動作、段階、パラメーター、カット/スムージング/フォーカス、デフォルトプラン |
references/checking.md | マップシートと測定値、検証用ビュー、次に修正する内容の確認 |
references/blender-and-delivery.md | Blenderでの再生、映像、エクスポート、レポート、レビューページ |
references/conventions.md | ワールド座標系、カメラ、単位、ファイル形式(新しいツールの作成用) |
references/lessons.md | 最初のケースで起きた問題と、上記のルールが設けられた理由 |
テンプレート:templates/CONTRACT.md(すべてのケースにコピー)、templates/acceptance.json(目標)。
コメント
Markdown 対応