threejs-procedural-fields について
Three.jsのプロシージャルなフィールド設計向けスキルです。マテリアルを組み立てる前に必要なフィールドを定義する方法を示し、座標、スケール、派生フィールド、デバッグ、詳細度の調整を扱います。マテリアル構成や惑星全体の生成との適用範囲も明確にします。
主な機能
- 01座標からマテリアルまでのフィールド定義
- 02複数のマテリアルチャンネルでのフィールド共有
- 03名前付きフィールドのデバッグ表示
- 04微分・メッシュ・距離による詳細度調整
- 05フィールドモデルとマテリアル構成の区分
活用シーン
- 01地形とマテリアルの要因を共有するフィールド設計
- 02プロシージャルオブジェクトの各フィールドのデバッグ
- 03メッシュ解像度を超える高周波ディテールの除去
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ scottstts/ threejs-awesome-graphics-agent-skills --skill threejs-procedural-fieldsインストール後、Claude Code で/threejs-procedural-fieldsを入力して読み込まれたか確認します。
同梱ファイルreferences/field-stack-recipes.mdagents/openai.yaml
詳細
プロシージャルフィールド
ノイズを重ねるところから始めないでください。まず、オブジェクトが物理的またはスタイル上必要とするフィールドを定義します。
フィールドの契約
シェーダーコードを書く前に、フィールドのセットを記述します。
coordinates
→ macro form
→ meso structure
→ derived causes
→ material channels
例:
sphereDirection
→ warpedDirection
→ elevation + ridges + craterDepth
→ slope + cavity + latitude + moisture
→ biome + color + roughness + bump
必須のワークフロー
- カメラやオブジェクトが動いても安定する座標を選びます。
- 各周波数帯の実スケールまたは知覚スケールを固定します。
- 名前付きのプライマリフィールドを作成します。見た目全体を単一の式に隠してはいけません。
- 原因からセカンダリフィールドを導出します。法線から傾斜、海面からの距離から海岸、露出から摩耗、凹部から汚れを求めます。
- 同じフィールドを色、粗さ、法線、ディスプレイスメント、発光、散乱で再利用します。
- 名前付きのフィールドすべてにデバッグ出力を追加します。
- 高周波フィールドは、導関数、テッセレーション密度、またはカメラ距離に基づいてフィルタリングします。
実装の前にreferences/field-stack-recipes.md を読んでください。球体、地形、水、構造化配置のフィールド契約と、 よくあるパリティの不具合について記載されています。
プロシージャルな惑星表面 を参照してください。高さ、大陸、気候、バイオーム、 粗さ、法線をそれぞれ独立して確認できる、CPU/GLSL 共通のフィールドセットが記載されています。
絶対に守るべきルール
- チャンネルごとに独立したノイズを使うと、視覚的にまとまりのない結果になります。構造を共有してください。
- ドメインワープするのは座標であり、各結果ではありません。
- 球面座標は接線方向にワープしてから、再正規化します。
- シルエット、領域、表面の崩し、マイクロ法線には、それぞれ異なる周波数帯を使います。
- メッシュで表現できない周波数を使ってジオメトリをディスプレイスメントしてはいけません。
- 孤立した「泡」のような領域ができないよう、カテゴリーマスクは十分に広く保ちます。
- パラメーター名は知覚的な特徴を表すものにします。
ridgeWidth、coastBlend、cavityDarkeningのようにし、noise3Amountのような名前は使いません。
振り分けの境界
共有フィールドモデル自体がタスクの場合は、このスキルを使います。チャンネルの組み立てとマテリアルの応答がタスクの場合は
$threejs-procedural-materials を使い、成果物が惑星全体の場合は
$threejs-procedural-planets を使います。
コメント
Markdown 対応