mcpField
3
3d-high-poly-models

3d-high-poly-models

github.com/mengtoクリエイティブ・メディア7.1k546 回インストール3 日前に更新
リポジトリ

3d-high-poly-models について

詳細な3Dモデルを作成し、実行時の描画に備えるスキルです。アーティストや開発者がカメラに応じて形状の詳細度を調整し、LOD、ドローコール、起動コストを管理できます。

主な機能

  1. 01カメラ距離に応じた詳細度の計画
  2. 02シルエットと表面形状の造形
  3. 03実行時LODの用意
  4. 04反復形状のインスタンス化
  5. 05影とジオメトリコストの管理
  6. 06対象ビューアでのアセット検証

活用シーン

  1. 01近景の主役モデルの作成
  2. 02LODによる遠景オブジェクトの最適化
  3. 03反復するシーン要素の準備
  4. 04ジオメトリと起動コストの測定

インストール

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

$npx skills add https://github.com/mengto/skills --skill 3d-high-poly-models

インストール後、Claude Code で/3d-high-poly-modelsを入力して読み込まれたか確認します。

同梱ファイルagents/openai.yamlREFERENCES.md

詳細

3D ハイポリゴンモデル

モデルに求められるクローズアップのディテールを作り込み、実用的なレンダリングができるようにします。ポリゴン数だけでなく、シルエット、プロポーション、マテリアルの反応、ライティングからもリアリティを判断します。

カメラに必要なものを見極める

リファレンス、意図するヒーローアングル、最も近づいたときの距離、オービット範囲、モデルのスケール、現在のメッシュ、対象ハードウェアを確認します。見た目だけでアセットをハイポリと判断せず、現在の三角形数とドローコール数を記録します。新しいジオメトリを作成する際は、高ディテールのソース/マスターを保持し、ランタイム向けの最適化を元に戻せるようにします。

ディテールを3つのスケールに分けます。

  • シルエット: 外形、根元の広がり、彫り込まれたエッジ、布の折り目、屋根の曲線です。ジオメトリを使います。
  • 表面の形状: ベベル、へこみ、継ぎ目、盛り上がった縫い目、深い亀裂です。視点からパララックスや陰影の形状が確認できる場合は、ジオメトリか、妥当性のあるディスプレイスメントを使います。
  • マイクロディテール: 木目、毛穴、浅い傷、繊維構造です。極端なクローズアップでもジオメトリとして認識されない限り、マテリアルマップを使います。

プロジェクトのモデリングツールまたはアセットパイプラインを使います。まず実際の寸法とプロポーションを合わせてから、アダプティブな細分化、サポートトポロジー、スカルプティング、または適切なライセンスのスキャンデータを追加します。密度の高いメッシュでも、プロポーションが正しくなければ正しくありません。

クローズアップで信頼感のあるモデルを作る

製造物のエッジには、ハイライトを捉えられるよう、もっともらしいベベルを付けます。曲面を滑らかにしながら、意図されたハードエッジは維持します。すべての法線を滑らかにしたり、UV シームを無差別に結合したりしないでください。モデリング/エクスポートパイプラインに応じて、法線/接線を再計算するか、そのまま保持します。

投影された曲率が見える箇所にカーブセグメントを割り当てます。ヒーローリム、屋根のシルエット、急な曲がりではセグメントを増やし、小さく遠くにあるパーツでは減らします。細分化の境界でピンチングが発生していないか、ディスプレイスメントによって亀裂や表面の剥離が起きていないか確認します。

プロシージャルな枝では、滑らかなカーブに沿ってリングをスイープし、ローカルフレームを移動させて急なねじれを避け、先細りを連続させます。子の開始部は親の表面内に埋め込みます。根元が広がる箇所や曲率が大きい箇所では、リングを密にします。Seijaku の treeMesh は、一様な細分化ではなく、適応的に半径方向/縦方向のディテールを付ける有用な例です。

スキャンした石では、スキャン特有のプロポーションを保ちます。過度な非一様スケーリングは、形状と表面ディテールの両方を引き伸ばします。メッシュを再利用し、回転、配置、スケールの変化は控えめにします。最も見分けやすいヒーロー形状は、それぞれ区別がつくように保ちます。

ランタイム用バージョンを準備する

  1. 作成時のマスターを保持し、検証済みのランタイムアセットをエクスポートします。通常は、スタックが対応していれば glTF/GLB を使います。実際のビューアーで、単位、トランスフォーム、マテリアル、UV シーム、法線、バウンディングを確認します。
  2. 遠景用にディテールを落としたバージョンを作成し、シルエットとベイク済みのシェーディングを維持します。投影サイズからしきい値を決め、実際のカメラで切り替わりを比較します。LOD が頻繁に切り替わらないよう、ヒステリシスまたは適切なトランジションを使います。Three.js LOD を参照してください。
  3. 屋根瓦、石、植生など、繰り返し使うジオメトリ/マテリアルのペアは、適切な場合にインスタンス化します。大規模な反復配置は空間的に分割し、オブジェクトが1つ表示されただけでサイト全体が描画されることのないようにします。
  4. シャドウ用ジオメトリとシャドウ距離は、視覚的な効果に見合う範囲に保ちます。詳細なオブジェクトを複数のシャドウマップに描画すると、ビューティーパスから想定されるよりも大幅にコストがかかる場合があります。
  5. 対応している場合は、ジオメトリの転送を圧縮してから、デコード後のジオメトリと見た目を検証します。圧縮は転送サイズを小さくしますが、ランタイムの三角形数を本質的に減らすものではありません。量子化と簡略化は別々の処理として扱い、それぞれ個別に見た目を確認します。

普遍的に正しい三角形数の予算はありません。実際のマテリアル、ライト、シャドウ、透明度、対象解像度を用いて、代表的なシーンのプロファイルを測定します。アセット固有の三角形数は、インスタンスや描画パス全体で描画される三角形数とは分けて報告します。ジオメトリ圧縮、インスタンシング、LOD は、それぞれ異なるコストを解決します。

起動時の停止を避ける

まず表示範囲内の主要な形状を読み込み、任意の内部構造や遠方のディテールは後回しにします。プロシージャルメッシュはオフライン、または処理量を制限して生成し、必要に応じてワーカーを使い、同一のパーツを再生成する代わりにバッファーを再利用します。詳細なアセットの準備ができるまでは、実用的な低精細表現を維持します。初回使用時のカクつきを大幅に抑えられる場合は、対応している非同期コンパイルでシェーダーバリアントを事前にウォームアップします。

選択と衝突判定には、適切なプロキシまたは空間加速構造を使います。ポインターの移動中にフル解像度の三角形を毎回走査すると、見た目が滑らかなシーンでも反応が遅く感じられることがあります。

検証

  • 中立的な照明と最終的な照明の両方で、最も近いカメラ距離からマスターメッシュと実行時のメッシュを比較します。
  • シルエット、ベベルのハイライト、継ぎ目、接触部分、影の形状、ワイヤーフレームの密度を確認します。
  • LOD のしきい値をまたいで移動し、目に見える穴や気になる切り替わりがないことを確認します。
  • デスクトップとモバイルで、起動時間、初回操作までの時間、フルフレームのドローコール数/三角形数、フレーム時間を測定します。
  • レンダリング結果が裏付ける場合に限り、超リアルな見た目と謳います。測定したジオメトリ数は別途記録します。

出典と API については REFERENCES.md を参照してください。Seijaku は、詳細なスイープ形状の幹とスキャンした岩のジオメトリを、低コストなインスタンス化された葉のカードと組み合わせています。その見た目を根拠に、すべてのオブジェクトに高密度なメッシュが必要だと解釈しないでください。

コメント