画像からローポリゴンメッシュへ
1枚の写真を入力として、三角形の予算ごとに1つの編集可能なローポリゴンメッシュを出力します。各メッシュは、同じ固定カメラを通して写真と比較され、4つの独立した方法で評価されます。近似はローポリゴン形状自体が行います。テクスチャ、ビルボード、投影写真、カウントされない形状は形状の代用にはなりません。
入力:参照画像(変更しない)、被写体、予算。実例:リポジトリ内の examples/cat/(1匹のオレンジ色のトラ猫、予算100 / 200 / 500 / 1000)。
開始前
| 状況 | 対応 |
|---|---|
| 1枚の写真、被写体全体が見える、背景が無地 | メインパス |
| 四足動物 | 付属のプロキシテンプレート(fit_camera_proxy.py、build_proxy.py)は四足の猫用です。事前分布を調整してください。 |
| その他の被写体 | まずそのためのプロキシテンプレートを作成してください(部位ごとの一般化された円柱、catlib/skeleton.py 形式)。残りのツールは被写体に依存しません。 |
| 複数の写真、動画、スキャン | 対象外:1視点、1カメラ |
| ユーザーが色やテクスチャを希望 | フラットな面ごとの色のみ可能。開始前にその旨を伝えてください。 |
| Blenderがない | 非対応:カウント、アセンブリ、すべての公式数値には Blender 5.2+ が必要です。 |
開始前に、写真に写っていない部分はすべて推測であり、検証されていないことを伝えてください。
ワークフロー
以下 S は skills/image-to-lowpoly/scripts を意味します。すべてのスクリプトは --case CASE(または LOWPOLY_CASE)を受け取ります。すべてのチェックポイントでラベル付き画像(オーバーレイ、クレイ、ワイヤー、8視点)を投稿します。画像が先、数値が後です。
- ケースと参照。
CASE/reference/reference.png(ユーザー画像のバイト単位のコピー)と、そのSHA-256を含む来歴ファイルを作成します。再生成、リサイズ、編集はしないでください。 - 固定ターゲット。 拡大されたクロップ(猫の場合、鋭い12点:耳の先端、目、鼻、4つの肉球接点、尾の基部/中間/先端。被写体に合わせてリストを調整)を見てランドマークと画像ウィンドウに注釈を付け、次に
python3 $S/preflight_reference.py --case CASEを実行します。mask_overlay.pngとlandmarks_overlay.pngを確認してください。 マスクは床の影とひげを除外します。 - カメラとプロキシ。
fit_camera_proxy.py --case CASE(CPU、数十分)を実行し、次にbuild_proxy.py、build_proxy.py --lock、build_proxy.py --reportを実行します。プロキシを8つの視点すべてから確認してください。これは隠れた部分すべてに対する答えです。その後、フリーズします。予算が評価される前に、参照、マスク、ランドマーク、リージョン、カメラ、シーン、プロキシ、評価コードのハッシュをcontract/FROZEN.jsonに書き込みます(references/contract.md)。 - コントロール。 すべての予算に対して
make_decimation_baseline.py --case CASE --budget Nを実行します。プロキシを正確に N にデシメートしたものと、共有リファイナーを適用した後のものです。これらが打ち破るべき数値です。 - 予算ごとに割り当てて構築。 各予算に独自のワーカーとディレクトリ
variants/<N>/を与えます(references/budget-worker.md)。割り当てテーブル(リージョン、三角形、リング × サイド、理由)を作成し、少なくとも2つの質的に異なる割り当てを構築し、それぞれに同じ短いリファインメントを施し、比較し、選択します。variants/<N>/build.pyは、正確に N 個の三角形(アサート)、リージョン、マテリアル、ランドマークアタッチメントを持つcatmesh-1mesh.jsonを書き込みます。1つの閉じたサーフェス:四肢、尾、耳を胴体に溶接します。 - 初期チェックポイント。
evaluate.py --case CASE --mesh variants/<N>/checkpoints/v0_initial/mesh.json --viewsを実行します。これが「初期」行です。 - リファイン、測定、確認、編集、繰り返し。
refine_vertices.py(--flips、--freeze-vertsはフェイスとフリーズされたキット用)、evaluate.pyを実行し、次にref_overlay.png、ref_clay.png、ref_wire.png、および8つのビューを確認 します。オーバーレイが予算の誤配分を示している箇所で、対象を絞ったトポロジ編集を行います。最も良い検証済みチェックポイントを保持します。最新のものが勝つとは限りません。 - ブラインドレビュー。
make_critic_packet.py --case CASE --round Kは、写真とニュートラルな名前のクレイ、ワイヤー、アウトラインレンダリングをパッケージ化します。そのフォルダのみを見る新しいサブエージェントを起動し、その所見を予算に影響しない幾何学的編集に変換します。テクスチャ、カード、カウントされないジオメトリを示唆するものは拒否します。 - 最終化と集計。
finalize_variant.py --case CASE --budget N --checkpoint TAG --reason "..."はチェックポイントをコピーして再評価します。aggregate_metrics.pyは予算間テーブルを構築し、ハッシュやカウントの不一致を拒否します。make_comparison.pyはシートを作成します。 - 報告して停止。 4つのカウントを含むクレイ/ワイヤーシート、予算ごとの初期、最終、両方のコントロールのテーブル、割り当てテーブル、レビュアーの判定、そして問題点を提示します。設計されたメッシュがコントロールを上回っていない箇所を述べます。ユーザーが次のステップを決定します。
- タイムラプス(オプション)。 構築段階(ビルドスクリプトの
--stages-dir)と最適化スナップショット(refine_vertices.py --snapshot-dir DIR --snapshot-every K)を記録し、次にtimelapse/timelapse.py --case CASEを実行します。固定カメラを通して写真上にメッシュを描画します。
厳格なルール
- カウントは評価され、エクスポートされたジオメトリです。 4つのカウント(メッシュファイル、すべてのオブジェクトに対する評価済み
.blend、再インポートされたGLB、解析されたGLB)は一致し、最大でも N であり、正確に N を目指します。Blenderのポリゴンカウントは絶対に使用しないでください(references/counting.md)。 - 三角形や形状を隠すものはありません。 三角形のみ、1オブジェクト、モディファイアなし、サブディビジョンなし、カーブ、ヘア、インスタンス、アルファカード、重複または退化したパディング、ビルボード、フラットなシルエット押し出しは禁止です。
- ターゲットは決して動きません。 参照、マスク、ランドマーク、ウィンドウ、カメラは一度作成されハッシュ化されます。正当な修正は開示され、すべての予算が再評価されます。
- 単一の数値で判断しません。 IoU、境界距離、ランドマーク、脚の隙間は互いに矛盾してはならず、クレイと8つのビューはより良く見えなければなりません。形状が悪いのにスコアが良いのは後退です。
- 溶接し、貫通させない。 埋もれた三角形は予算の無駄であり、結合部分が目立ちます。
- 最適化器は共有され、割り当てが実験です。 同じリファイナー、同じ設定がすべての予算とコントロールで利用可能です。
- ランドマークはジオメトリとともに移動します。 ランドマークはそれが名付ける特徴にアタッチされます。数値を改善するためにアタッチメントをスライドさせてはいけません。
- 一度に1つのレンダリング。 レンダリングするのは
render_variant.pyのみで、それ自体がロックを取得します。 - マテリアルは形状としてカウントされません。 解剖学的意味を持つフラットな面ごとの色。ジオメトリはクレイとシルエットでのみ評価します。
- それが何でないかを述べます。 推測された隠れた側面。コントロールと同等の結果は引き分けです。頭部と薄い部分は、これらのメッシュが最も弱い箇所です。
参考文献
| ファイル | 読むタイミング |
|---|---|
references/contract.md | ケースの設定時:レイアウト、ユニット、カメラ、メッシュフォーマット、メトリクス、レンダリング、プロキシ、ランドマーク、ヘッドキット |
references/budget-worker.md | 1つの予算を委任または実行する時:手順、優先順位、確認すべき点 |
references/counting.md | 4方向のカウント、ハード障害、開示事項 |
references/lessons.md | 猫の実行で何が問題だったか、および各失敗がルールになった経緯 |