Live app: colorsculpt.vercel.app
Color Sculpt is an interactive color-grading playground where you sculpt color directly in 3D perceptual space (OKLAB). Load an image, pick a color region, push it through space, and watch related colors shift smoothly in real time.
Most color tools expose sliders. Color Sculpt exposes the color volume itself.
- You see your image as a 3D OKLAB point cloud.
- You choose a center color from either the image preview or the point cloud.
- You move a transform gizmo to bend nearby colors with soft falloff.
- You build nuanced looks by stacking local operations.
- Drag-and-drop or file-picker image loading
- 3D point cloud visualization of sampled image colors (Three.js)
- Direct color sampling from:
- the image preview (with selectable sample size:
3,5, or12) - the 3D point cloud
- the image preview (with selectable sample size:
- Sculpt operations with a draggable translation gizmo
- Adaptive brush influence visualization in the viewport
- Real-time image preview with
Before/Aftercompare toggle - Preview zoom, pan, and reset controls
- Undo / redo / reset editing workflow
- One-click export of transformed output as PNG
npm install
npm run devThen open the local Vite URL shown in your terminal.
npm run build
npm run preview- Load an image.
- Pick a target color by clicking in the preview or clicking a point in the 3D view.
- Adjust brush size with the floating slider near the gizmo.
- Drag the gizmo to translate that color neighborhood in OKLAB.
- Repeat to layer multiple local edits.
- Toggle
Before/Afterto compare. - Download the final transformed image.
| Action | Result |
|---|---|
| Drag viewport background | Orbit camera |
| Scroll in viewport | Zoom camera |
| Click a point in 3D cloud | Set sculpt center |
| Click in image preview | Sample color and set sculpt center |
| Drag transform gizmo | Apply live sculpt translation |
Cmd/Ctrl + Z |
Undo |
Cmd/Ctrl + Shift + Z or Cmd/Ctrl + Y |
Redo |
Reset |
Clear all operations |
Download Result |
Export transformed PNG |
- React + TypeScript + Vite
- Three.js for 3D viewport and controls
- Zustand for app state
- Custom OKLAB math + falloff-based sculpt engine
src/
components/ # Toolbar, viewport, image preview
lib/ # Color math, sculpt engine, image processing, LUT helpers
stores/ # Zustand state store
- Processing happens client-side in the browser.
- The codebase includes LUT export utilities (
.cube) insrc/lib/lutExport.ts, ready to wire into UI actions.





