mcpField
T
three-js

three-js

github.com/jbmanllr开发1168 次安装39 周前更新
代码仓库

关于 three-js

three-js 是面向原生 Three.js 开发的参考技能,供构建 Web 3D 场景的开发者按任务查阅。它按核心、视觉、交互、资源和高级主题组织指南,并覆盖 WebGPU 与性能优化。

主要功能

  1. 01场景、相机与几何体参考
  2. 02材质、纹理和照明指南
  3. 03动画、交互与控制器模式
  4. 04模型加载和后期处理
  5. 05性能、物理与 WebGPU 主题

适用场景

  1. 01搭建 Three.js 场景与渲染器
  2. 02实现模型动画和对象选择
  3. 03加载 GLTF 与环境贴图
  4. 04查找 WebGPU 或性能相关做法

安装

复制下面的命令,在终端中运行。

$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 完整参考(原生版)

React Three Fiber 用户:本参考适用于原生 Three.js。有关 R3F/Drei 模式, 请使用 r3f-best-practices 技能。不过,了解这里的 Three.js 概念 有助于使用 R3F,因为 R3F 是 Three.js 的 React 渲染器。

快速入门

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();
      }
    }
  });
}
使用时钟的动画循环
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 迁移指南。

评论

支持 Markdown