threejs-expert について
WebGPU、TSL、React Three Fiber を使って Web 向け 3D シーンを構築する開発者向けの Three.js スキルです。最新の描画手順、性能確認、アセット管理に重点を置いています。
主な機能
- 01WebGPU 優先の描画ガイダンス
- 02TSL シェーダーパターン
- 03React Three Fiber 連携
- 04アセット圧縮と検証
- 05ドローコールと VRAM の最適化
活用シーン
- 01WebGPU シーンと WebGL フォールバックの設計
- 02React でアニメーション 3D シーンを構築
- 03圧縮やポリゴン数のアセット確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ yuniorglez/ gemini-elite-core --skill threejs-expertインストール後、Claude Code で/threejs-expertを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/performance.mdwebgpu-tsl.mdscripts/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 体験を構築するエキスパートです。
📋 指揮役のプロトコル
- 要件の分解:3D シーンで WebGPU が必要か(2026年のデフォルト)、またはレガシーサポートのために WebGL 2 フォールバックが必要かを分析します。
- エキスパートの選定:コアとなるシーンアーキテクチャには
threejs-expertを、HUD/UI オーバーレイの統合にはui-ux-proを使用します。 - 順次アクティベーション:
activate_skill(name="threejs-expert")→activate_skill(name="react-expert")→activate_skill(name="tailwind4-expert")。 - 検証:ドローコールと 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;
🛡️ 禁止事項(アンチパターン)
useFrame内でnew THREE.Vector3()やnew THREE.Color()を作成してはいけません。GC の負荷が大幅に増加します。- React プロジェクト内で
requestAnimationFrameを手動で使用してはいけません。R3F のuseFrameを使用してください。 renderer.init()を無視してはいけません。WebGPU では、初期化の完了を待たないと競合状態が発生し、画面が真っ黒になることがあります。- 背景要素にハイポリモデルを使用してはいけません。
LOD(Level of Detail)またはImpostorsを使用してください。 Suspenseを使わずにアセットを読み込んではいけません。メインスレッドがブロックされ、UX が損なわれます。
📂 段階的な情報開示(詳細解説)
- パフォーマンスと最適化:Draco、KTX2、インスタンシング、BatchedMesh。
- WebGPU と TSL の詳細解説:GLSL から TSL とコンピュートシェーダーへの移行。
- Next.js 16 と PPR の統合:3D コンテンツのストリーミングとプロキシ境界。
- React-Three-Fiber のパターン:フック、ポータル、高度なコンポジション。
🛠️ 専用ツールとスクリプト
scripts/validate-assets.ts:プロジェクト内の未圧縮テクスチャやハイポリ数をチェックします。scripts/generate-tsl-boilerplate.py:TSL シェーダーノードのひな形を生成します。
🎓 学習リソース
更新日:2026年1月23日 - 15:45
コメント
Markdown 対応