mcpField
T
three-js

three-js

github.com/noklip-io开发1165 次安装39 周前更新
代码仓库

关于 three-js

面向使用原生 Three.js 构建 3D 场景与交互的开发者参考技能,按核心概念、资源、效果、性能和高级渲染组织内容;React Three Fiber 模式建议使用另一技能。

主要功能

  1. 01场景、摄像机与渲染器设置
  2. 02几何体、材质、灯光与纹理
  3. 03动画和交互模式
  4. 04加载器与后期处理效果
  5. 05性能与高级渲染主题
  6. 06按任务查找的参考索引

适用场景

  1. 01构建原生 Three.js 场景
  2. 02添加控制器、动画或对象选择
  3. 03加载 3D 资源并应用视觉效果
  4. 04查找优化或 WebGPU 指引

安装

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

$npx skills add https://github.com/noklip-io/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