mcpField
T
three-js

three-js

github.com/jbmanllr開発1168 回インストール39 週間前に更新
リポジトリ

three-js について

three-jsは、バニラのThree.jsで開発する人向けのリファレンススキルです。タスク別の資料で、3Dの基礎から描画、操作、アセット、性能、WebGPUなどの応用分野まで扱います。

主な機能

  1. 01シーン、カメラ、ジオメトリの資料
  2. 02マテリアル、テクスチャ、照明のガイド
  3. 03アニメーション、操作、コントロールのパターン
  4. 04モデル読み込みとポストプロセス
  5. 05性能、物理演算、WebGPUのトピック

活用シーン

  1. 01Three.jsのシーンとレンダラーの構築
  2. 02アニメーションとオブジェクト選択の実装
  3. 03GLTFモデルと環境マップの読み込み
  4. 04WebGPUや性能改善手法の調査

インストール

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

$npx skills add https://github.com/jbmanllr/agent-skills --skill three-js

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

同梱ファイル

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

README.md
references/
01-fundamentals.md
02-geometry.md
03-materials.md
04-textures.md
05-lighting.md
06-cameras.md
07-loaders.md
08-animation.md
09-interaction.md
10-controls.md
11-shaders.md
12-postprocessing.md
13-math.md
14-performance.md
15-node-materials.md
16-physics-vr.md
17-webgpu.md
18-patterns.md

詳細

Three.js 完全リファレンス(Vanilla)

React Three Fiber のユーザーの方へ:このリファレンスは Vanilla Three.js 向けです。R3F/Drei のパターンについては、 r3f-best-practices スキルを使用してください。ただし、R3F は Three.js 用の React レンダラーであるため、 ここで Three.js の概念を理解しておくと、R3F を使用する際にも役立ちます。

クイックスタート

import * as THREE from 'three';

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer({ antialias: true });

renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
document.body.appendChild(renderer.domElement);

const geometry = new THREE.BoxGeometry(1, 1, 1);
const material = new THREE.MeshStandardMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);

scene.add(new THREE.AmbientLight(0xffffff, 0.5));
const light = new THREE.DirectionalLight(0xffffff, 1);
light.position.set(5, 5, 5);
scene.add(light);

camera.position.z = 5;

function animate() {
  requestAnimationFrame(animate);
  cube.rotation.x += 0.01;
  cube.rotation.y += 0.01;
  renderer.render(scene, camera);
}
animate();

リファレンス一覧

タスクに応じて、適切なリファレンスファイルを読み込んでください。

コアとなる基礎
リファレンス使用する場面
references/01-fundamentals.mdシーンのセットアップ、レンダラーの設定、Object3D の階層構造、座標系
references/02-geometry.md形状の作成、BufferGeometry、インスタンシング、ポイント、ライン
references/06-cameras.mdカメラの種類、視錐台、ビューポート、投影
references/13-math.mdVector3、Matrix4、Quaternion、Euler、Color、MathUtils
ビジュアルの外観
リファレンス使用する場面
references/03-materials.mdPBR マテリアル、シェーダーマテリアル、各種マテリアル
references/04-textures.mdテクスチャの読み込み、UV マッピング、レンダーターゲット、環境マップ
references/05-lighting.mdライトの種類、シャドウ、IBL、ライトプローブ
references/11-shaders.mdカスタム GLSL シェーダー、uniform、varying、シェーダーパターン
モーションとインタラクション
リファレンス使用する場面
references/08-animation.mdキーフレームアニメーション、スケルタルアニメーション、モーフターゲット、プロシージャルモーション
references/09-interaction.mdレイキャスティング、選択、ドラッグ、座標変換
references/10-controls.mdOrbitControls、FlyControls、PointerLockControls など
アセット
リファレンス使用する場面
references/07-loaders.mdGLTF、FBX、テクスチャ、HDR、Draco 圧縮、非同期パターン
エフェクト
リファレンス使用する場面
references/12-postprocessing.mdブルーム、被写界深度、SSAO、カスタムエフェクト、EffectComposer
上級編
リファレンス使用する場面
references/14-performance.md最適化、プロファイリング、LOD、カリング、バッチ処理
references/15-node-materials.mdTSL(Three Shading Language)、ノードベースのマテリアル
references/16-physics-vr.md物理エンジン、WebXR、VR/AR 連携
references/17-webgpu.mdWebGPU レンダラー、コンピュートシェーダー、WGSL
references/18-patterns.mdアーキテクチャパターン、アセット管理、クリーンアップ、状態

よく使うパターンのクイックリファレンス

リサイズハンドラー
window.addEventListener('resize', () => {
  camera.aspect = window.innerWidth / window.innerHeight;
  camera.updateProjectionMatrix();
  renderer.setSize(window.innerWidth, window.innerHeight);
});
クリーンアップ/破棄
function dispose(obj) {
  obj.traverse(child => {
    if (child.geometry) child.geometry.dispose();
    if (child.material) {
      if (Array.isArray(child.material)) {
        child.material.forEach(m => m.dispose());
      } else {
        child.material.dispose();
      }
    }
  });
}
Clock を使ったアニメーションループ
const clock = new THREE.Clock();

function animate() {
  const delta = clock.getDelta();
  const elapsed = clock.getElapsedTime();

  // Use delta for frame-rate independent animation
  mixer?.update(delta);

  requestAnimationFrame(animate);
  renderer.render(scene, camera);
}

インポートパターン

// Core
import * as THREE from 'three';

// Addons (controls, loaders, effects)
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import { RGBELoader } from 'three/addons/loaders/RGBELoader.js';
import { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';

// Compression support
import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';
import { KTX2Loader } from 'three/addons/loaders/KTX2Loader.js';

バージョンに関する注意事項

このリファレンスは Three.js r150 以降を対象としており、以下について説明しています。

  • WebGPU のサポート(r150 以降)
  • ノードマテリアル/TSL
  • 最新の ES モジュールインポート

バージョン固有の API については、Three.js の移行ガイドを確認してください。

コメント