Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

3d Web Experiences

ASecurity

Create 3D web experiences: scene setup, models, materials, lighting, animation, scroll-driven scenes, and performance budgets. Use when adding 3D to websites beyond basic demos.

2 stars
0 votes
0 copies
0 views
Added 9/29/2026
ai-agentsgobashnodeperformance

Security Analysis

A100/100

Scanned 9/29/2026

$npx -y skills add aicodedecode/awesome-muse-skills --skill 3d-web-experiences --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 3d Web Experiences?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for 3d Web Experiences
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aicodedecode-3d-web-experiences/badge)](https://www.skillsdirectory.com/skills/aicodedecode-3d-web-experiences)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: 3d-web-experiences
description: Create 3D web experiences: scene setup, models, materials, lighting, animation, scroll-driven scenes, and performance budgets. Use when adding 3D to websites beyond basic demos.
category: development
---

# 3D Web Experiences

A practical guide to shipping 3D on the web — product viewers, hero scenes, scroll-driven storytelling, configurators — with an emphasis on the asset pipeline and performance budgets that separate smooth experiences from janky tech demos.

## Overview

Web 3D = WebGL (or WebGPU) + a scene graph library (three.js dominates) + 3D assets + disciplined performance work. The hard parts are rarely the rendering code: they're **asset weight** (a 50MB model kills mobile), **draw calls** (hundreds of meshes = slow), and **frame budget** (16.6ms at 60fps, less on low-end devices).

Rule of thumb: design the experience for the weakest device you support, then enhance — not the reverse.

## When to use

- 3D product viewers and configurators (color/material/parts switching).
- Animated hero scenes and scroll-driven 3D storytelling.
- Interactive data visualizations in 3D.
- Choosing model formats and compression.
- Diagnosing 3D performance problems.

## Core concepts

- **Scene graph.** Scene → meshes (geometry + material) → lights → camera. Everything is a positioned node; groups organize parts.
- **Geometry.** BufferGeometry of triangles. Polygon count is a budget: hero models 50–200k tris desktop, far less for mobile; background props much less.
- **Materials.** PBR (physically based rendering): `MeshStandardMaterial` with color/roughness/metalness maps. Fewer unique materials = fewer shader programs = faster.
- **Lighting.** Key + fill + rim, or environment maps (IBL) for realistic reflections. Real-time shadows are expensive — one shadow-casting light max on mobile, or bake shadows into textures.
- **glTF.** The standard interchange format. Prefer `.glb` (binary) with Draco mesh compression and KTX2/Basis texture compression.
- **Animation.** `requestAnimationFrame` loop with delta-time (never fixed steps); `THREE.AnimationMixer` for skeletal/glTF animations; lerp for smooth interpolation.
- **Scroll-driven scenes.** Map scroll progress → camera path / object transforms. Use a smoothed (lerped) scroll value, never raw scroll events, to avoid judder.
- **Draw calls.** Each mesh+material = at least one draw call. Merge static geometry, use instancing (`InstancedMesh`) for repeated objects (grass, bolts, stars).

## Practical workflow

**1. Prepare assets first.**
```bash
# Typical pipeline: Blender -> glTF -> compress
# - Apply transforms, merge materials, bake AO/shadows where possible
# - Export .glb, then compress:
gltfpack -i model.glb -o model-packed.glb -cc   # meshopt compression
```
Target: hero model under 3–5MB, textures ≤2048px (1024 for mobile), KTX2 compressed.

**2. Scaffold the scene.**
```js
import * as THREE from 'three';
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';

const renderer = new THREE.WebGLRenderer({ antialias: true, powerPreference: 'high-performance' });
renderer.setPixelRatio(Math.min(devicePixelRatio, 2));
const scene = new THREE.Scene();
scene.environment = await loadEnvironment(); // RoomEnvironment or HDRI for PBR reflections
```

**3. Load with feedback.** Show a real loading UI with progress (`onProgress` bytes) — 3D assets are heavy; a blank canvas reads as broken.

**4. Animate correctly.**
```js
const clock = new THREE.Clock();
function tick() {
  const dt = Math.min(clock.getDelta(), 0.05); // clamp tab-switch spikes
  controls.update();
  mixer?.update(dt);
  renderer.render(scene, camera);
  requestAnimationFrame(tick);
}
```

**5. Budget and measure.** Use the browser's frame profiler + `renderer.info` (draw calls, triangles, geometries). Set budgets: e.g., <150 draw calls, <500k tris, <10MB assets for a marketing hero.

**6. Degrade gracefully.** `WebGL2` check → fallback to a static image or video. Respect `prefers-reduced-motion` (pause auto-rotation/camera moves).

## Common pitfalls

- **Uncompressed assets.** Shipping raw 40MB FBX/OBJ exports. glTF + meshopt/Draco + KTX2 routinely cuts 80–95%.
- **Draw call explosion.** A model with 300 separate meshes renders 300+ draw calls. Merge, instance, or atlas.
- **Pixel ratio blindness.** `setPixelRatio(devicePixelRatio)` on a 3x phone = 9x pixels. Cap at 2 (or 1.5 for heavy scenes).
- **Shadow abuse.** Multiple shadow-casting lights or huge shadow maps tank mobile GPUs. One directional light with tight shadow camera, or baked shadows.
- **Memory leaks.** Geometries, materials, and textures not disposed on scene teardown (`geometry.dispose()`, `material.dispose()`, `texture.dispose()`). SPAs navigating between 3D views leak fast.
- **Z-fighting.** Coplanar surfaces flicker — offset with polygonOffset or tiny positional gaps.
- **Blocking the main thread.** Parsing a big glTF synchronously freezes the page. Load async, show progress, consider Web Workers for heavy prep.
- **No loading state.** Users stare at black. Always: skeleton → progress → reveal.
- **Ignoring color management.** Set `renderer.outputColorSpace = SRGBColorSpace` and use sRGB textures correctly, or colors look washed out/wrong.

Attribution

aicodedecodeaicodedecode
View sourceSee grades on GitHubMore from aicodedecode →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698431 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →