Individual skill

3d-paper-material

Build a paper sheet in Three.js that reads as paper up close — washi, cotton rag or kraft with baked fibre and tooth relief, laid and chain lines, a torn deckle edge with frayed fibres, four-layer thickness, a rolled corner and crease, ink that wicks along the fibres, toasted aged edges, contact shadows and back-lit translucency. Use for a hung sheet, scroll, page, label, shoji pane or card that must survive a macro close-up, or when paper looks like a flat white plane, has ruler-straight edges, no thickness, or does not glow when lit from behind. Use 3d-wood-material, 3d-cloth-material or 3d-metal-material for those materials, and paper-cinder-transition for burning paper.

agent-skills/3d/3d-paper-material/SKILL.md

Read pinned source

Source commit 5ea1661a0e05d82b054553daaa6baf6d0233c33c

What was checked

Matches the observed repository HEAD
Yes
Scanner rules are current
Yes
Repository scan complete
No
Skill scan complete
Yes
Observed behavior
Network or broad shell
Last checked
Nov 9, 2026

These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.

Install this skill

Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.

An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.

Repository context

Repository stars (not skill ratings)
7,353
Repository last updated
Nov 8, 2026
License
MIT

Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.

Files and excerpt

File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.

Browse files
Read excerpt

# 3D Paper Material

Paper is a fibre field cut out by a torn outline: a height map of laid fibres and formation clouds gives the surface, an alpha mask with pulled-out fibres gives the edge, offset copies give the thickness, and the back light is transmitted by how thin the formation is at each pixel. Drop any one and the sheet is a white plane.

Reach for `paper-cinder-transition` when the paper burns or is revealed by fire; this skill is the unburnt sheet. It is a hung or laid sheet in a scene. A page-turning book needs a bend rig this skill does not provide.

Read `demo.html` for a working build: MeshPhysicalMaterial patched with `onBeforeCompile`, maps baked once into half-float targets, masks painted with Canvas 2D. Its `NOISE` GLSL, formation, kozo-fibre and bark-fleck expressions, back-light transmission, `tearLine` and the fray loop are ported unchanged from the Kibori workshop page (`kibori.html`, `washiMat`, `footTear`).

## The pipeline

1. **Bake fibres (GPU, once).** One full-screen pass writes `R height, G formation, B fibre, A fleck` to a half-float target. Height is `0.5 + fibre*0.34 + (tooth-0.5)*0.1 - fleck*0.2 - crease*0.55`. Keep `samples: 0` on the target and mipmaps on.
2. **Warp the lattice.** Domain-warp the fibre coordinates by 0.014 unit and rotate them by `(gnoise(q*2.1)-0.5)*1.5` rad. Add a finer, fainter fibre set at 2.7x frequency (max 0.55).
3. **Paint the mask (Canvas 2D, on stock change).** `R` thin strip inside the tear, `G` silhouette plus fray fibres, `B` ink with a low-alpha bleed halo, `A` the silhouette blurred by a shadow drawn off to the side (edge age). Read back with `getImageData` and write into a `DataTexture`, rows flipped, alpha as data.
4. **Shape the sheet.** A 168 x 240 plane: hung bow, a mountain crease, pin dimples, and a cylinder roll (radius 0.23, angle `2.6*curl`) that keeps length. Add three copies offset along the normal by `thick/3`, `2thick/3`, `thick`.
Back to top