An in-browser 3D editor where owners pose, light and render their Wassie NFT characters, then export high-resolution images. Built at Piqo Design for Krew Studios.
The problem
NFT communities wanted an easy way to create custom artwork and social media content from their 3D assets, but existing tools required desktop software or lacked flexibility. Wassieverse Canvas needed browser-based 3D editing, wallet NFT import, real-time posing and rig manipulation, facial expression controls, professional lighting, high-quality image export, and performance that could support thousands of unique character models.
What I built
I developed a complete online 3D editor so users can customise their NFT characters entirely in the browser: wallet-based NFT importing, interactive rig controls, a facial expression editor, a professional lighting system, scene manipulation, high-resolution PNG export, and an optimised rendering pipeline for thousands of character variations.
NFT import
WalletConnect, automatic NFT loading, model selection, asset management
Pose editor
interactive joint controls, custom rig controller, real-time pose editing
Facial expression editor
blend shapes, model-bound variables, live updates, presets
Lighting studio
directional, spot, and point lights with shadow controls
Scene export
one-click PNG export, hidden editor overlays, high-resolution social-ready output
Screens
Hard parts
- 01
Large-scale model support
rendering pipeline for 3,000+ unique NFT models with responsive editing
- 02
Real-time character rigging
custom joint controller for natural poses in the browser
- 03
GPU rendering & custom shaders
GLSL with Three.js materials for visual quality without losing real-time performance
- 04
Clean export pipeline
one-click PNG that hides editor UI and helpers for presentation-ready artwork
My role
- 3D application architecture
- Three.js development
- React Three Fiber implementation
- GLSL shader development
- Animation & rigging system
- Performance optimisation
- UI/UX for creative tools
- Export pipeline





