mcpField
C
contour-to-mesh

contour-to-mesh

github.com/roble3クリエイティブ・メディア128840 回インストール2 週間前に更新
リポジトリ

contour-to-mesh について

参照シルエットからメッシュを作る Blender 用ワークフロースキルです。正面輪郭の忠実さが必要な制作者向けに、塗りつぶした2D輪郭から始め、境界を変えずに奥行きを加えます。

主な機能

  1. 01マスクから三角メッシュを生成
  2. 02正面投影 UV の割り当て
  3. 03シルエットを保った奥行き追加
  4. 04正面レンダーと元マスクの照合
  5. 05メッシュとソースのメタデータ記録
  6. 06ソース固定の2.5Dスキン作成

活用シーン

  1. 01ロゴやマスコットの輪郭からメッシュを作成
  2. 02検証済みシルエットへの浅い奥行き追加
  3. 03様式化された参照の正面表示をソースに固定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/roble3/cc-blender-skill --skill contour-to-mesh

インストール後、Claude Code で/contour-to-meshを入力して読み込まれたか確認します。

同梱ファイルscripts/mask_to_mesh_recipe.pyscripts/source_locked_skin_recipe.py

詳細

輪郭からメッシュへ

参照シルエットが基準となる場合に使用します。メッシュは正面視の X/Z 平面上に塗りつぶされた 2D 輪郭として始まり、検証後に浅い Y 方向の奥行き/曲面を加えます。

ワークフロー

  1. 1 つの構造パーツについて、きれいな輪郭/マスクを抽出または選択します。
  2. scripts/mask_to_mesh_recipe.py で三角形分割されたメッシュレシピを生成します。
  3. 生成された Blender Python を実行し、名前付きの GEO_* メッシュを作成します。
  4. 直ちに正面投影 UV を割り当てます。
  5. X/Z 境界位置を保つモディファイアまたは頂点変位としてのみ奥行きを加えます。
  6. 正面レンダーを元のマスクと照合して検証します。

厳守事項

  • マニフェストに元データが対称と記載されていない限り、放射状複製は使用しないでください。
  • 輪郭がある場合、汎用的な楕円は使用しないでください。
  • 境界頂点は元データの X/Z 座標を維持する必要があります。
  • 奥行き変形では Y と内側の頂点を移動できますが、正面シルエットを変更してはいけません。
  • 1 つの構造パーツの元データから、名前付きの構造メッシュを 1 つ作成してください。

Blender のパターン

生成するメッシュ座標は、画像の x を Blender の X に、画像の y を上下反転して Blender の Z に対応させます。厚み/奥行きには Y のみを使用します。

正面平面での回転ルール

この Blender の座標規約では、正面カメラは Y 軸方向を向き、参照シルエットは X/Z 平面上にあります。そのため、正面視での 2D 回転は Z ではなく Y 軸 を中心に行います。正面投影での 2D コンポーネントの向きには、rotation_euler = (0, angle, 0) を使用してください。Z 回転では、X/Z 平面メッシュが画面の内外に回転してしまい、意図した結果になりません。

要点をまとめた情報源

  • Blender Mesh API:from_pydata を使って頂点/面からメッシュを作成します。
  • Blender BMesh:クリーンアップ、三角形分割、法線、スムージングに使用します。
  • OpenCV の輪郭:境界の検出と簡略化に使用します。
  • ドロネー三角形分割:マスク内包でフィルタリングする場合に、塗りつぶされた内部メッシュの作成に役立ちます。

パーツインベントリの引き継ぎ

マスクが source-part-segmentation から作成された場合は、part_inventory.json の名前を Blender 内でも保持してください。 GEO_<part_name>、MAT_<part_name>、および UV レイヤー名を使用します。メッシュ生成では、次の情報を記録する必要があります。

  • 元画像のサイズ;
  • 元マスクのパス;
  • 輪郭境界の点数;
  • 検出可能な場合は境界のランドマーク点(先端、左下端、右下端、重心/極値);
  • アトラスの UV 矩形または投影モード。

マスコット/ロゴを正確に作成する場合は、輪郭から境界頂点を生成し、表面を支えるためにのみ内部頂点を追加します。 境界は基準です。新しい元マスクを作成しない限り、ベベル、ソリッド化、サブディビジョン、シュリンクラップ、スカルプト処理によって、正面視の X/Z 境界頂点を移動してはいけません。

穴とストロークの扱い

  • 塗りつぶされた構造マスクはメッシュにします。
  • ワイヤーフレームのストロークは境界/ランドマークのガイドです。マニフェストで装飾的な線画に分類されていない限り、構造メッシュにはしません。
  • シルエットに影響する穴/負領域は、個別の切り抜きマスクとして保持します。それ以外の場合は、デカール/マテリアルマスクとして実装します。

元データ固定の正面スキンによるフォールバック

デザインシートが絵画的/様式化されており、個別の正投影ビューに CAD としての整合性がない場合は、立体的に解釈する前に正面スキンの工程を使用します。

  1. 正準の正面/マスター画像を選択します。
  2. 見えている被写体のマスクを、塗りつぶされた輪郭として抽出します。
  3. X/Z の境界がその輪郭となる、浅い 2.5D メッシュを作成します。
  4. 画像全体の正面投影 UV を割り当て、レンダリングした正面が元画像のピクセルと一致するようにします。
  5. 奥行きは Y 方向と正面の表面より奥にのみ加えます。
  6. 側面の妥当性を補うために、別個のレリーフ/裏打ちパーツを追加してもかまいません。ただし、見た目の合否判定には正面スキンを使用します。

これは、推測による立体形状よりも忠実な正面の見え方が重要となるロゴ/マスコット向けの汎用的なフォールバックです。完全に解決されたターンテーブルモデルではなく、front_locked_visual_skin として指定してください。

スクリプト

  • scripts/source_locked_skin_recipe.py は、最大/正準の前景コンポーネントを抽出し、画像全体の正面投影 UV 座標を使ったマスクと輪郭メッシュのレシピを出力します。

コメント