mcpField
T
threejs-agents-scene-builder

threejs-agents-scene-builder

github.com/impertio-studio開発23140 回インストール30 週間前に更新
リポジトリ

threejs-agents-scene-builder について

Three.js でシーン全体を構築する開発者向けの構成ガイドです。判断ツリーで各要素を選び、構成、レンダリング、パフォーマンスを案内します。

主な機能

  1. 01用途別のシーンレシピ
  2. 02R3F または命令型 Three.js の選択
  3. 03ライティングとマテリアルの選択
  4. 04カメラとコントロールの指針
  5. 05環境設定とポストプロセスの選択
  6. 06シーン構築と性能のチェックリスト

活用シーン

  1. 01製品コンフィギュレーターのシーン設計
  2. 02建築ウォークスルーの設定選択
  3. 03インタラクティブな 3D レベルの構築
  4. 04データ可視化シーンの制作

インストール

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

$npx skills add https://github.com/impertio-studio/three.js-claude-skill-package --skill threejs-agents-scene-builder

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitkeep
references/
anti-patterns.md
examples.md
methods.md

詳細

threejs-agents-scene-builder

目的

このスキルは、Three.js のシーン全体を構築するためのオーケストレーションガイドです。ユースケースに応じて、適切なライティング、マテリアル、カメラ、コントロール、環境、ポストプロセッシングの組み合わせを選ぶための判断ツリーを提供します。3D シーンやビジュアライゼーションの作成を依頼された場合は、必ず最初にこのスキルを参照してください。


マスター判断ツリー:ユースケースからシーンのレシピへ

ステップ 1:ユースケースを特定する
ユースケース移動先
製品ビューアー/コンフィギュレーターRecipe A
建築ウォークスルーRecipe B
ゲームレベル/インタラクティブな 3DRecipe C
データビジュアライゼーション/チャートRecipe D
ポートフォリオ/ヒーローセクションRecipe E
CAD/BIM/IFC ビューアーRecipe F
AR/XR エクスペリエンスRecipe G
ステップ 2:R3F と命令型のどちらかを選ぶ
条件判断
プロジェクトで React を使用している必ず React Three Fiber(R3F)を使用する
プロジェクトで Vue、Svelte、またはバニラ JS を使用している必ず命令型の Three.js を使用する
レンダーループを最大限に制御する必要がある命令型の Three.js を優先する
コンポーネントを再利用して迅速にプロトタイピングするR3F + Drei を優先する
インタラクション用フレームワークを使わない静的シーンどちらでも対応できます。命令型のほうが軽量です

相互参照: R3F のパターンについては threejs-impl-r3f、命令型のパターンについては threejs-core-scene-graph を参照してください。


判断ツリー:ライティングの設定

ステップ 1:シーンの種類に応じたライティング戦略
シーンの種類主光源補助光シャドウ
屋外/昼光DirectionalLight(太陽)HemisphereLight(空/地面)DirectionalLight のシャドウ、PCFSoftShadowMap
屋内/部屋PointLight または SpotLight(照明器具)AmbientLight(弱)SpotLight のシャドウ、2~3 個に制限
スタジオ/製品SpotLight(キー)+ SpotLight(リム)AmbientLight または HemisphereLightContactShadows(Drei)または AccumulativeShadows
スタイライズ/トゥーンDirectionalLightHemisphereLight任意。くっきりした輪郭には BasicShadowMap
HDR 環境のみなし(IBL がすべてのライティングを提供)なしContactShadows または AccumulativeShadows
夜間/暗所SpotLight(光だまりに集中)AmbientLight(ごく弱く、約 0.05)SpotLight のシャドウ
ステップ 2:ライティングの強度(物理的に正確、r160 以降)
光源の種類単位屋内の標準値屋外の標準値
DirectionalLightlux1~51~3(シーンのスケールに依存)
PointLightcandela50~200該当なし
SpotLightcandela100~500該当なし
AmbientLight単位なし0.1~0.50.2~0.5
HemisphereLight単位なし0.3~0.80.5~1.0
ステップ 3:光源数の予算
プラットフォームリアルタイム光源の最大数シャドウを投影する光源の最大数
モバイル3~41(DirectionalLight のみ)
デスクトップ8~162~3(モバイルでは PointLight のシャドウは絶対に使用しない)
ハイエンド16 以上(TiledLighting を使用)4~5

重要なルール:

  • モバイルでは PointLight のシャドウを絶対に使用しないでください。1 つにつき 6 回のシャドウマップ描画が必要です。
  • ターゲットを再配置する場合は、必ず directionalLight.target をシーンに追加してください。
  • RectAreaLight を作成する前に、必ず RectAreaLightUniformsLib.init() を呼び出してください。

相互参照: シャドウの調整とアーティファクトの修正については threejs-impl-lighting-shadows を参照してください。


判定ツリー:マテリアルの選択

視覚的な目標マテリアル備考
リアルな表現/PBRMeshStandardMaterialほとんどのシーンで標準の選択肢です
リアルな表現+クリアコート、透過、シーンMeshPhysicalMaterialStandard より負荷が高いため、必要な場合にのみ使用します
トゥーン/セルシェーディングMeshToonMaterial段階的な表現には gradientMap テクスチャが必要です
ライティングなし/フラットカラーMeshBasicMaterialライティングのコストがゼロで、ワイヤーフレームや UI に適しています
パフォーマンスが重要(オブジェクトが多数)MeshLambertMaterial頂点ライティングを使用するため、Standard より低負荷です
ガラス/透明MeshPhysicalMaterial (transmission: 1)または R3F の Drei MeshTransmissionMaterial
反射する床Drei MeshReflectorMaterialR3F 専用
カスタムシェーダーShaderMaterial または RawShaderMaterialGLSL を完全に制御できます
ノードベース(WebGPU)MeshStandardNodeMaterialTSL ノードシステム。r160+

重要なルール:

  • MeshStandardMaterial で十分な場合、MeshPhysicalMaterial は絶対に使用しないでください。大幅に高負荷です
  • defines または extensions を変更した後は、必ず material.needsUpdate = true を設定してください
  • オブジェクトをシーンから削除するときは、必ずマテリアルを破棄してください

関連項目: マテリアルのプロパティとテクスチャについては threejs-syntax-materials を参照してください。


判定ツリー:カメラの選択

用途カメラの種類一般的な設定
ほとんどの 3D シーンPerspectiveCamerafov: 50-75、near: 0.1、far: 1000
製品ビューアー(遠近感の歪みなし)PerspectiveCamerafov: 35-45(狭いほど歪みが少なくなります)
建築(広角)PerspectiveCamerafov: 60-90
2D ゲーム/アイソメトリックOrthographicCameraワールド単位に合わせてフラスタムを設定します
CAD/テクニカルドローイングOrthographicCamera必ず使用します
データの可視化(平面)OrthographicCameraフラスタム = データ範囲
映画的/ドラマチックな表現PerspectiveCamerafov: 20-35(望遠効果)

重要なルール:

  • fov、near、far、または aspect を変更した後は、必ず camera.updateProjectionMatrix() を呼び出してください
  • near を 0 に設定しないでください。シーン全体で Z ファイティングが発生します
  • near/far の比率はできる限り小さく保ってください(理想は < 1:10000)

関連項目: カメラ API の詳細については threejs-core-renderer-camera を参照してください。


判定ツリー:コントロールの選択

インタラクションのパターンコントロール備考
オブジェクトの周囲をオービット(最も一般的)OrbitControls必ずダンピングを有効にしてください
マップ/トップダウンナビゲーションMapControls左ドラッグ = パン、右ドラッグ = 回転
一人称視点/ウォークスルーPointerLockControlsポインターロック API が必要です
フライスルー(6DOF)FlyControlsキーボード+マウス
ドラッグして回転(プレゼンテーション)Drei PresentationControlsR3F 専用。スプリング物理を使用
スクロール連動アニメーションDrei ScrollControlsR3F 専用
オブジェクトの操作(移動/回転/拡大縮小)TransformControls選択したオブジェクトにアタッチします
モバイルに適したオービットOrbitControlsタッチジェスチャーを内蔵

重要なルール:

  • enableDamping が true の場合、アニメーションループ内で必ず controls.update() を呼び出してください
  • クリーンアップ時には、必ず controls.dispose() を呼び出してください
  • 変形操作中に OrbitControls を無効にせず、OrbitControls と TransformControls を併用しないでください

関連項目: コントロール API の詳細については threejs-syntax-controls を参照してください。


判断ツリー:環境設定

視覚的な目標アプローチ実装
リアルな反射+環境光HDR環境マップscene.environment = pmremGenerator.fromEquirectangular(hdrTexture)
単色の背景scene.background = new Color(...)最もシンプルな方法
グラデーション背景背景平面にカスタムシェーダーを適用または透明なキャンバスの背後にCSSグラデーションを配置
スカイボックスscene.background にCubeTextureを設定6面の画像
プロシージャルな空Dreiの<Sky>またはThree.jsのSkyアドオン太陽の位置を動的に設定
背景なし(透明)renderer = new WebGLRenderer({ alpha: true })背後に表示される内容はCSSで制御
R3F環境Dreiの<Environment preset="studio" />プリセット:apartment、city、dawn、forest、lobby、night、park、studio、sunset、warehouse

重要なルール:

  • PBRマテリアル用の環境マップには、必ずPMREMGeneratorを使って事前フィルタリングしてください
  • 未処理のHDRテクスチャをscene.environmentに設定してはいけません。必ずPMREM処理してください
  • scene.environmentを設定すると、すべてのPBRマテリアルに自動的にIBLが適用されます

関連項目: マテリアルでの環境マップの使用方法についてはthreejs-syntax-materialsを参照してください。


判断ツリー:ポストプロセス

ポストプロセスを追加するタイミング
条件判断
シーンが平坦に見える、または奥行きが足りないSSAO/GTAO+控えめなブルームを追加
グロー/発光ハイライトが必要UnrealBloomPassを追加
アンチエイリアスが必要(MSAAなし)FXAAまたはSMAAを追加
映画のような見た目にしたいBokehPass(DoF)+FilmPass(グレイン)+LUTPass(カラーグレーディング)を追加
選択範囲をアウトライン表示したいOutlinePassを追加
パフォーマンスが最優先(モバイル)ポストプロセスは絶対に追加しないでください。ベイク済みエフェクトを使用してください
ポストプロセスのパイプライン順序

パスは必ず次の順序にしてください:

  1. RenderPass(美麗なレンダリング)— 必ず最初
  2. ジオメトリパス:SSAO、GTAO、SSR
  3. エフェクトパス:Bloom、DoF、Outline
  4. アンチエイリアス:FXAAまたはSMAA
  5. カラーグレーディング:LUT、Film
  6. OutputPass(トーンマッピング+色空間)— 必ず最後
R3Fのポストプロセス

R3Fでは、@react-three/postprocessing(pmndrs/postprocessingライブラリをラップ)を使用します:

import { EffectComposer, Bloom, SSAO } from '@react-three/postprocessing'

<EffectComposer>
  <SSAO />
  <Bloom luminanceThreshold={0.9} intensity={0.5} />
</EffectComposer>

重要なルール:

  • ウィンドウのサイズが変更されたら、必ずコンポーザーのサイズを変更してください:composer.setSize(w, h)
  • 最後にOutputPassを忘れてはいけません。これがないと、トーンマッピングと色空間変換がスキップされます
  • R3Fでは、@react-three/postprocessingがパスの順序を自動的に処理します

関連項目: パスの設定と調整についてはthreejs-impl-postprocessingを参照してください。


シーン構成チェックリスト

シーンを構築する際は、必ず次のチェックリストに従ってください:

  1. レンダラー — antialias: trueでWebGLRendererを作成し、ピクセル比とサイズを設定
  2. シーン — Sceneを作成し、背景や環境を設定
  3. カメラ — 判断ツリーに従って種類を選び、位置を設定
  4. ライティング — 判断ツリーに従ってレシピを選び、予算を守る
  5. 地面/環境 — 地面の平面、環境マップ、または空を追加
  6. コンテンツ — ジオメトリの追加、モデルの読み込み、マテリアルの作成
  7. コントロール — 判断ツリーに従って選び、制約を設定
  8. シャドウ — レンダラー+ライト+オブジェクトで有効化(3段階での明示的な有効化)
  9. ポストプロセス — 必要に応じて追加し、パイプラインの順序に従う
  10. リサイズ処理 — 必ずウィンドウのリサイズに対応する(カメラ+レンダラー+コンポーザー)
  11. アニメーションループ — requestAnimationFrameまたはR3FのuseFrame
  12. 破棄処理 — クリーンアップ時にジオメトリ、マテリアル、テクスチャを必ず破棄する

パフォーマンス早見表

最適化適用するタイミング
InstancedMesh同一のオブジェクトが50個を超える場合
LOD(Level of Detail)遠方のオブジェクトがある大規模なシーン
frustumCulled: true(デフォルト)オブジェクトを画面外にも描画する必要がない限り、常に有効にしておきます
matrixAutoUpdate: false決して移動しない静的オブジェクト
テクスチャ圧縮(KTX2/Basis)本番環境では常に使用します。GPU メモリを4〜6倍削減します
ジオメトリの結合同じマテリアルを使用する小さな静的メッシュが多数ある場合
frameloop="demand"(R3F)静的なシーン/コンフィギュレーター
ライティングのベイク静的な環境
オブジェクトプーリング頻繁に作成・破棄されるオブジェクト

相互参照: 詳細な最適化戦略については、threejs-errors-performance を参照してください。


参考リンク

関連スキル
スキル参照するタイミング
threejs-core-scene-graphシーン階層、Object3D API、破棄処理
threejs-core-renderer-cameraレンダラーのセットアップ、カメラの設定
threejs-core-math-transformsベクトル、行列、座標変換
threejs-syntax-geometryBufferGeometry、組み込み形状、InstancedMesh
threejs-syntax-materialsマテリアルのプロパティ、テクスチャ、環境マップ
threejs-syntax-loadersGLTF、FBX、OBJ の読み込みと最適化
threejs-syntax-controlsカメラコントロールのセットアップと設定
threejs-impl-lighting-shadowsライトの種類、シャドウの設定、アーティファクト
threejs-impl-animationキーフレームアニメーション、モーフターゲット、スケルタルアニメーション
threejs-impl-postprocessingEffectComposer、ブルーム、SSAO、アンチエイリアス
threejs-impl-physicsRapier/Cannon.js の統合
threejs-impl-r3fReact Three Fiber のパターンとフック
threejs-impl-webgpuWebGPU レンダラー、TSL ノードマテリアル
threejs-impl-ifcIFC/BIM モデルの読み込みと処理
threejs-errors-performanceFPS の最適化、メモリリーク、ドローコール
threejs-errors-rendering視覚的なアーティファクト、Zファイティング、色の問題
threejs-agents-model-optimizerGLTF の最適化、圧縮、LOD の生成
公式ソース

コメント