mcpField
G
game-mesh-voxel-conversion

game-mesh-voxel-conversion

github.com/lvtd-llc開発162 回インストール7 週間前に更新
リポジトリ

game-mesh-voxel-conversion について

メッシュ、フィールド、ボクセル表現間の変換を計画するゲーム開発スキルです。開発者が解像度、抽出手法、属性の扱いを選び、変換後の形状とゲーム内動作を検証できるよう支援します。

主な機能

  1. 01変換元と変換先の表現を整理
  2. 02誤差とリソース制約に基づく解像度選定
  3. 03形状に応じた抽出手法の選択
  4. 04形状とゲーム属性の管理
  5. 05変換後の形状と動作の検証

活用シーン

  1. 01複雑なメッシュの修復や結合
  2. 02フィールドから描画用または衝突用形状を生成
  3. 03ゲーム内形状へのボクセル処理
  4. 04大規模またはストリーミング環境の変換計画

インストール

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

$npx skills add https://github.com/lvtd-llc/skills --skill game-mesh-voxel-conversion

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

詳細

ゲームメッシュとボクセルの変換

ゲーム内である表現で操作を行い、別の表現で結果を出力または描画する場合に、このスキルを使用します。解像度、誤差、属性のルールを定めた、明示的なワークフローとして変換を行います。

主な参考資料:Oleksandr Kaleniuk 著『Geometry for Programmers』 (https://www.manning.com/books/geometry-for-programmers)。特に第10〜12章を変換・要約して参照しています。追加の参考資料:「Marching Cubes」(Lorensen、Cline 著、https://dl.acm.org/doi/10.1145/37402.37422)および「Dual Contouring of Hermite Data」(Ju、Losasso、Schaefer、Warren 著、https://dl.acm.org/doi/10.1145/566654.566586)。

基本的なワークフロー

  1. 変換元と変換先の表現を明示します。
  2. 変換が必要な理由を明示します。修復、描画、衝突判定、編集、ブーリアン演算、オフセット、破壊、簡略化、平滑化、またはエクスポートです。
  3. 視覚的な誤差、ゲームプレイ上の許容範囲、メモリ、ストリーミングの制約に基づいて、作業用グリッドまたはサンプリング解像度を選びます。
  4. 法線、UV、マテリアル、スキニング、衝突レイヤー、ゲームプレイタグ、LOD メタデータなどの属性を、意図を持って保持または再生成します。
  5. 形状の要件に基づいて抽出アルゴリズムを選びます。滑らかな有機的なフィールドにはマーチングキューブ/スクエア、より鋭い特徴にはデュアルコンタリング、曲線出力が重要な場合はカスタムコンタリングを使用します。
  6. 変換後のジオメトリとゲームプレイの挙動を検証します。

変換パターン

メッシュから SDF を経由してメッシュへ

メッシュ操作が不安定でも、近似的な出力を許容できる場合に使用します。

  • 穴、亀裂、折れ、反転した三角形を修復します。
  • モデルを近似的に中空化またはオフセットします。
  • 複雑な形状を結合または減算します。
  • 暗黙的な設計工程から、クリーンな衝突メッシュまたは描画メッシュを生成します。

正確なトポロジーが失われる可能性があり、元の UV やマテリアルも失われることがあります。

フィールドからメッシュへ

次の場合はマーチングキューブ/スクエアを使用します。

  • フィールドが滑らかで有機的です。
  • 角を正確に保持する必要がありません。
  • グリッドエッジ上の線形補間で十分です。

次の場合はデュアルコンタリングを使用します。

  • 鋭い特徴が重要です。
  • エルミートデータ、勾配、または法線が利用できます。
  • アクティブセルごとに頂点を1つ配置する出力形状が有用です。
ボクセル操作

正確な表面の細部よりも堅牢性が重要な場合は、ボクセルまたは画像マスクを使用します。

  • 膨張は塗りつぶされた領域を広げます。
  • 収縮は境界のマテリアルを取り除きます。
  • 収縮の後に膨張を行うと、小さなノイズを除去できます。
  • 膨張の後に収縮を行うと、細い亀裂を塞げます。
  • 整列したグリッド上では、ブーリアン和、積、差を簡単に実行できます。
  • 連結成分のラベリングにより、個別のピースの数を数えられます。

解像度と誤差のルール

  • すべてのグリッド変換には誤差予算があります。実装前に明示してください。
  • 解像度を上げると視覚的な細部は向上しますが、特に3Dではメモリと処理コストが急速に増加します。
  • 異方性ボクセルや不均一なワールドスケールは、距離や近傍のルールに反映する必要があります。
  • グリッドの原点、セルサイズ、軸の順序、符号規約をデータとともに保存します。
  • ワールドが大規模な場合は、マルチ解像度またはチャンク化を使用します。

属性保持のチェックリスト

  • 法線:再計算、転送、保持のいずれにしますか?
  • UV:投影、ベイク、破棄、再生成のいずれにしますか?
  • マテリアル:最近傍の表面、ボリュームラベル、プロシージャルなルールのいずれを使って転送しますか?
  • ゲームプレイタグ:変換元プリミティブ、ボリューム領域、クエリのいずれを使って転送しますか?
  • LOD:今生成しますか、それとも後で生成しますか?
  • 衝突:描画と同じメッシュ、簡略化したメッシュ、SDF、ボクセルプロキシのいずれにしますか?

よくある間違い

  • 頂点位置だけを変換し、後になってマテリアルやゲームプレイラベルこそが本当に必要なアセットだと気づく。
  • 主な価値が鋭いエッジにある形状に、マーチングキューブを使用する。
  • ボクセルグリッドをサンプリングされた占有状態ではなく、正確なジオメトリとして扱う。
  • 変換前後の妥当性テストを行わずに、メッシュ修復のワークフローを実行する。
  • ゲームプレイ上の許容範囲やメモリではなく、スクリーンショットを基準に解像度を選ぶ。

コメント