three-js

This skill should be used when the user asks to "create a 3D scene", "add a mesh", "implement OrbitControls", "load a GLTF model", "add bloom post-processing", "write a custom shader", "create particle effects", "optimize Three.js performance", "use WebGPU", "add shadows", "animate a model", or mentions Three.js, threejs, WebGL, WebGPU, GLTF, raycaster, shader material, PBR material, or post-processing effects. IMPORTANT: This skill is for VANILLA Three.js (imperative JavaScript). For React Three Fiber (@react-three/fiber, R3F, drei), check the `r3f-best-practices` skill, although three-js skills helps when working with R3F since R3F is a React renderer for Three.js. Provides complete Three.js reference for 3D web graphics including scene setup, geometry, materials, textures, lighting, cameras, loaders, animation, controls, interaction, shaders, post-processing, performance optimization, TSL/node materials, WebGPU, physics, and VR/XR integration.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "three-js" with this command: npx skills add noklip-io/agent-skills/noklip-io-agent-skills-three-js

Three.js Complete Reference (Vanilla)

React Three Fiber users: This reference is for vanilla Three.js. For R3F/Drei patterns, use the r3f-best-practices skill. However, understanding Three.js concepts here helps when working with R3F since R3F is a React renderer for Three.js.

Quick Start

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();

Reference Index

Load the appropriate reference file based on task:

Core Foundation

ReferenceUse When
references/01-fundamentals.mdScene setup, renderer config, Object3D hierarchy, coordinate systems
references/02-geometry.mdCreating shapes, BufferGeometry, instancing, points, lines
references/06-cameras.mdCamera types, frustum, viewport, projection
references/13-math.mdVector3, Matrix4, Quaternion, Euler, Color, MathUtils

Visual Appearance

ReferenceUse When
references/03-materials.mdPBR materials, shader materials, all material types
references/04-textures.mdTexture loading, UV mapping, render targets, environment maps
references/05-lighting.mdLight types, shadows, IBL, light probes
references/11-shaders.mdCustom GLSL shaders, uniforms, varyings, shader patterns

Motion & Interaction

ReferenceUse When
references/08-animation.mdKeyframe animation, skeletal, morph targets, procedural motion
references/09-interaction.mdRaycasting, selection, drag, coordinate conversion
references/10-controls.mdOrbitControls, FlyControls, PointerLockControls, etc.

Assets

ReferenceUse When
references/07-loaders.mdGLTF, FBX, textures, HDR, Draco compression, async patterns

Effects

ReferenceUse When
references/12-postprocessing.mdBloom, DOF, SSAO, custom effects, EffectComposer

Advanced

ReferenceUse When
references/14-performance.mdOptimization, profiling, LOD, culling, batching
references/15-node-materials.mdTSL (Three Shading Language), node-based materials
references/16-physics-vr.mdPhysics engines, WebXR, VR/AR integration
references/17-webgpu.mdWebGPU renderer, compute shaders, WGSL
references/18-patterns.mdArchitecture patterns, asset management, cleanup, state

Common Patterns Quick Reference

Resize Handler

window.addEventListener('resize', () => {
  camera.aspect = window.innerWidth / window.innerHeight;
  camera.updateProjectionMatrix();
  renderer.setSize(window.innerWidth, window.innerHeight);
});

Cleanup/Dispose

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();
      }
    }
  });
}

Animation Loop with 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);
}

Import Patterns

// 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';

Version Notes

This reference targets Three.js r150+ with notes for:

  • WebGPU support (r150+)
  • Node materials / TSL
  • Modern ES module imports

For version-specific APIs, check the Three.js migration guide.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

react-19

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

gsap

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

payload

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

theatre-js

No summary provided by upstream source.

Repository SourceNeeds Review