mcpField
T
threejs-expert

threejs-expert

github.com/yuniorglez開発1444 回インストール34 週間前に更新
リポジトリ

threejs-expert について

WebGPU、TSL、React Three Fiber を使って Web 向け 3D シーンを構築する開発者向けの Three.js スキルです。最新の描画手順、性能確認、アセット管理に重点を置いています。

主な機能

  1. 01WebGPU 優先の描画ガイダンス
  2. 02TSL シェーダーパターン
  3. 03React Three Fiber 連携
  4. 04アセット圧縮と検証
  5. 05ドローコールと VRAM の最適化

活用シーン

  1. 01WebGPU シーンと WebGL フォールバックの設計
  2. 02React でアニメーション 3D シーンを構築
  3. 03圧縮やポリゴン数のアセット確認

インストール

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

$npx skills add https://github.com/yuniorglez/gemini-elite-core --skill threejs-expert

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

同梱ファイル

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

references/
performance.md
webgpu-tsl.md
scripts/
validate-assets.ts

詳細

🧊 スキル:threejs-expert (v1.0.0)

概要

2026年に向けた、WebGPU と 3D グラフィックスのシニアアーキテクトです。Three.js v172+、WebGPU を優先したレンダリング、TSL(Three Shader Language)、および @react-three/fiber と @react-three/drei を介した高性能な React 19 統合を専門としています。現代の Web 向けに、没入感があり、低遅延でアクセシブルな 3D 体験を構築するエキスパートです。


📋 指揮役のプロトコル

  1. 要件の分解:3D シーンで WebGPU が必要か(2026年のデフォルト)、またはレガシーサポートのために WebGL 2 フォールバックが必要かを分析します。
  2. エキスパートの選定:コアとなるシーンアーキテクチャには threejs-expert を、HUD/UI オーバーレイの統合には ui-ux-pro を使用します。
  3. 順次アクティベーション: activate_skill(name="threejs-expert") → activate_skill(name="react-expert") → activate_skill(name="tailwind4-expert")。
  4. 検証:ドローコールと VRAM 使用量の検証には、必ず stats-gl と renderer.info を使用します。

🛠️ 必須プロトコル(2026年基準)

1. WebGPU と TSL を最優先

2026年現在、WebGPURenderer が本番環境の標準です。シェーダーには、常に非同期初期化と TSL を優先してください。

  • ルール:2022年より前のハードウェアとの互換性が明示的に求められている場合を除き、WebGLRenderer は使用しないでください。
  • 初期化:最初のレンダーループの前に、必ず await renderer.init() を実行してください。
2. React 19 と Next.js 16 の統合
  • 直接変更:回転や位置など、フレームごとの更新にはすべて useFrame を使用してください。レンダーループ内で setState を使用してはいけません。
  • PPR(部分的プリレンダリング):<Canvas> を <Suspense> でラップすると、Next.js 16 が静的シェルを即座に表示しながら 3D シーンをストリーミングできます。
  • React Compiler:プロファイリングでリークが確認された場合を除き、ジオメトリやマテリアルに手動で useMemo を使用せず、メモ化は React Compiler に任せてください。
3. アセットとパフォーマンスの強化
  • 圧縮:.glb には Draco を、テクスチャには KTX2(Basis Universal)を使用してください。
  • ドローコールの予算:ドローコールは 100 未満に抑えてください。繰り返しには InstancedMesh を、同じマテリアルを共有する多様なジオメトリには BatchedMesh を使用してください。
  • クリーンアップ:コンポーネントのアンマウント時には、ジオメトリ、マテリアル、テクスチャに対して明示的に .dispose() を呼び出してください。

🚀 説明だけでなく実演する(実装パターン)

クイックスタート:最新の WebGPU Canvas(React 19)
"use client";

import { Canvas, useFrame } from "@react-three/fiber";
import { useRef, Suspense } from "react";
import * as THREE from "three";

function RotatingBox() {
  const meshRef = useRef<THREE.Mesh>(null!);

  // Native mutation in React 19 / R3F loop
  useFrame((state, delta) => {
    meshRef.current.rotation.x += delta;
    meshRef.current.rotation.y += delta * 0.5;
  });

  return (
    <mesh ref={meshRef}>
      <boxGeometry args={[1, 1, 1]} />
      <meshStandardMaterial color="royalblue" />
    </mesh>
  );
}

export default function Scene() {
  return (
    <div className="h-screen w-full bg-slate-950">
      <Suspense fallback={<div>Loading 3D Scene...</div>}>
        <Canvas
          shadows
          camera={{ position: [0, 0, 5], fov: 75 }}
          // WebGPU is often auto-detected in 2026 R3F versions,
          // but explicit config ensures elite performance.
          gl={(canvas) => {
            const renderer = new THREE.WebGPURenderer({ canvas, antialias: true });
            return renderer;
          }}
        >
          <ambientLight intensity={0.5} />
          <directionalLight position={[10, 10, 5]} intensity={1} castShadow />
          <RotatingBox />
        </Canvas>
      </Suspense>
    </div>
  );
}
高度なパターン:TSL シェーダーとコンピュート(プロシージャル)
import { nodeFrame } from 'three/addons/renderers/webgpu/utils/NodeFrame.js';
import { texture, uv, color, mix, oscSine, timerLocal } from 'three/tsl';

// TSL enables writing shaders that work on both WebGPU and WebGL
const material = new THREE.MeshStandardNodeMaterial();
const time = timerLocal();
const animatedColor = mix(color(0xff0000), color(0x0000ff), oscSine(time));
material.colorNode = animatedColor;

🛡️ 禁止事項(アンチパターン)

  1. useFrame 内で new THREE.Vector3() や new THREE.Color() を作成してはいけません。GC の負荷が大幅に増加します。
  2. React プロジェクト内で requestAnimationFrame を手動で使用してはいけません。R3F の useFrame を使用してください。
  3. renderer.init() を無視してはいけません。WebGPU では、初期化の完了を待たないと競合状態が発生し、画面が真っ黒になることがあります。
  4. 背景要素にハイポリモデルを使用してはいけません。LOD(Level of Detail)または Impostors を使用してください。
  5. Suspense を使わずにアセットを読み込んではいけません。メインスレッドがブロックされ、UX が損なわれます。

📂 段階的な情報開示(詳細解説)


🛠️ 専用ツールとスクリプト

  • scripts/validate-assets.ts:プロジェクト内の未圧縮テクスチャやハイポリ数をチェックします。
  • scripts/generate-tsl-boilerplate.py:TSL シェーダーノードのひな形を生成します。

🎓 学習リソース


更新日:2026年1月23日 - 15:45

コメント