install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/TerminalSkills/skills/threejs" ~/.claude/skills/comeonoliver-skillshub-threejs && rm -rf "$T"
manifest:
skills/TerminalSkills/skills/threejs/SKILL.mdsource content
Three.js
Overview
Three.js is a JavaScript library for creating interactive 3D graphics in the browser using WebGL. It provides a scene graph, PBR materials, lighting systems, model loaders (glTF, FBX), and performance tools like instanced rendering. React Three Fiber offers a declarative React integration with automatic resource management and Suspense-based loading.
Instructions
- When setting up a scene, create a
,Scene
(orPerspectiveCamera
), andOrthographicCamera
, addingWebGLRenderer
for mouse/touch interaction and configuring anti-aliasing and tone mapping for production quality.OrbitControls - When creating objects, combine geometries (box, sphere, plane, or custom
) with materials (BufferGeometry
for PBR,MeshStandardMaterial
for advanced effects) and apply texture maps for diffuse, normal, roughness, and metalness.MeshPhysicalMaterial - When loading 3D models, use
for glTF/GLB files (the preferred web format), enable Draco compression for models over 1MB, and use KTX2 textures for GPU-compressed formats.GLTFLoader - When building lighting, combine ambient, directional, point, and spot lights with environment maps (HDR) for image-based lighting, and enable shadow maps on lights and meshes that need them.
- When optimizing performance, use
for rendering 100+ identical objects, merge static geometries, implement LOD for distance-based detail levels, and dispose resources manually when removing objects.InstancedMesh - When using React, prefer React Three Fiber with
helpers (OrbitControls, Environment, useGLTF) and@react-three/drei
for effects like bloom and SSAO.@react-three/postprocessing
Examples
Example 1: Build a 3D product configurator
User request: "Create a 3D product viewer where users can change colors and rotate the model"
Actions:
- Load the product model with
in React Three Fiber with Draco compressionuseGLTF() - Set up
for rotation and zoom, with camera animation on option changeOrbitControls - Create material swapping logic that updates
color and roughnessMeshStandardMaterial - Add environment lighting with an HDR map and contact shadows for realism
Output: An interactive 3D product configurator with color options, smooth rotation, and realistic lighting.
Example 2: Create an animated data globe
User request: "Visualize global data points on an interactive 3D globe"
Actions:
- Create a sphere geometry with an earth texture and atmosphere shader
- Plot data points using
with thousands of small spheres at geographic coordinatesInstancedMesh - Add arc connections between points using
with animated dash offsetsTubeGeometry - Implement auto-rotation with mouse-override orbit controls
Output: A 3D globe with data point markers, animated connection arcs, and interactive rotation.
Guidelines
- Use glTF/GLB format for all 3D models since it is the most efficient and widely supported web format.
- Enable Draco compression for models over 1MB to reduce file size significantly.
- Use
when rendering more than 100 identical objects for massive performance gains.InstancedMesh - Set
andantialias: true
for production visual quality.toneMapping: ACESFilmicToneMapping - Use React Three Fiber for React apps for declarative scene management and automatic disposal.
- Dispose resources manually when removing objects:
,geometry.dispose()
,material.dispose()
.texture.dispose() - Test on mobile devices and reduce shadow resolution, pixel ratio, and material complexity for low-end GPUs.