No matches. Try another word (“cut”, “weld”, “paint”, “export”, “license”…).
New here?
— it draws for you, on the blank page, using the same gestures you would.
Draw a closed outline and it inflates into a solid you can keep drawing on. Everything
happens in this one window, on your own machine: nothing is uploaded, there is no account,
and once it has loaded once it works with the wifi off.
The gestures
Draw a closed loop on empty space and it becomes a body. The silhouette is exactly
the line you drew, because Smokey builds the surface on your stroke rather than tracing it back
out of a field afterwards, so a square keeps its corners.
Draw a loop on a shape and you get a new part growing out of it, oriented to the
surface underneath.
Draw a line across a shape and it cuts. The near piece falls away; the rim it leaves
is sharp until you round it.
Draw from a part to the body and the two merge into one smooth solid. The join is
filleted, not welded flat.
Draw from a part out to empty space and it is mirrored across.
Drag from a shape into the DELETE box that appears in the corner
while you draw, and that shape is deleted. Undo brings it back. The bin button in the
toolbar does the same to whatever is selected.
Turning, moving and zooming
Turn the model - tap Turn in the corner cluster and drag
anywhere, or use two fingers, or hold Shift and drag on empty space. Worth
knowing: the scene turns and the camera stays put, which is what keeps
“you draw in the plane of the screen” true no matter how far round you have gone.
Zoom - the wheel, a two-finger pinch, or the + and
− buttons in the corner.
Home puts the view back upright at its starting distance without
moving anything you have built.
Move a shape — tap Move and drag it. With a mouse you
can skip the mode: a right-drag or a Shift-drag slides whatever it starts on, and
turns the scene if it starts on empty space.
Tap a shape to select it. The toolbar's Round, Join and delete buttons all act on
the selection; tap empty space to deselect.
The tools
Points re-opens the outline a shape was made from and puts
draggable points on it. The curve stays curvature-continuous through every point, and if a
drag would fold the outline over itself the curve simply stops following and springs back.
Its row carries two knobs for the selected outline: Points, how many points hold it,
and Smoothness, which pulls it toward a circle of the same area. Smoothness filters
the drawing rather than replacing it, so it comes back when you lower it.
2D and 3D. An outline starts flat, in the plane it was drawn
in. Switch its row to 3D and its points can be pulled out of that plane: turn the
model, and the point you last touched grows an arrow along the plane's own axis. Drag the
point to move it in the plane, the arrow to move it out. The shape follows the outline into
space, so a form can be dished, bent or given a lip and still be an outline you can edit.
Turning back to 2D only stops new height being added - whatever is already there stays.
You have to turn the model first, because at rest that arrow points straight at you.
Points after a weld. A welded body keeps the outlines it was
welded from, each on its own plane inside the model, and shows all of them at once. Drag a
point on any one and the weld is rebuilt around it. The one the two knobs act on is the
bright one; tap a point on another to work on that instead. A body that has been cut or
sculpted since it was welded no longer matches its outlines, so it says so and goes quiet.
Round replaces the sharp rim a cut leaves with a real arc. It
constructs the arc rather than relaxing toward one, which is why it converges at all.
Sculpt holds two brushes for working the surface itself.
Smooth relaxes, softens and evens out the
surface you drag it over — for a lumpy or bumpy patch, a crease, or a join that came out
harder than you wanted. It has its own row: Size is how wide the brush is in screen
pixels and Strength is how far the surface moves under one stroke. Unlike Round it
does not converge, so going back and forth over one place keeps flattening it. Whatever you
have painted comes through untouched; the drawn outline does not survive it, so Points
goes quiet on anything you smooth.
Crease, the other Sculpt tool, draws a sharp feature line along
the surface: a hard edge, a fold, a ridge you want to keep. What it really does is mark the
line as one the surface is not smooth across — so Smooth flattens
everything around it and leaves the line standing, which is how you get a crisp edge on a
soft form. It also keeps the edge of a cut crisp instead of letting the shading round it
off. Strength is how high the ridge stands; Size is how wide a skirt of
surface is drawn up with it.
Mirror the drawing and Repeat around, in Settings, make a
shape symmetric as you draw it — they work on the outline, before it is inflated, so
the symmetry is in the form itself rather than being several bodies stuck together.
Mirror folds your stroke about its own long axis, so a roughly-drawn animal or leaf
comes out properly even. Repeat around repeats it that many times about its center,
turning one lobe into a rosette or a snowflake. They are separate switches and they
combine: six repeats with the mirror on is a snowflake, six without is a pinwheel. Both
need a shape that is round about its middle; a crescent or a C folds back on itself and is
refused by name, and you get the shape you actually drew.
Smooth cuts, in Settings, changes how a cut CLOSES. Off, the
opening gets a flat face — the shape looks sliced. On, it is closed with a rounded
dome that continues the form, so the piece looks pinched or moulded shut rather than cut.
It works where the surface is already closing over the opening; where the shape turns
away from the cut there is nothing to continue, and it says so and leaves the flat face
rather than inventing something.
Weld, left on, smooth-unions every new shape into whatever
body it touches, so you build one continuous solid instead of a pile of parts. The weld
remembers what went into it, so the outlines stay editable and a drag re-welds.
Join merges the selected part into its parent on demand, for when
you would rather decide one at a time.
Paint opens its own row: brush or bucket, the swatches, size and
hardness, and a Through toggle that paints both sides of the model at once. The brush
shows its own footprint on the model — the outer circle is how far the paint reaches and
the dashed one inside it is the hard core, which is what Hardness sets. Strokes are
painted in screen space and unwrapped only where you touched, so there is never a seam to plan
around.
The first two swatches are metal, not color.Chrome is what the
brush starts loaded with; Gold is beside it. They are paint — the metal lands
where you drag, in the stroke, rather than being a property of the whole shape, so you can put a
band of chrome across a form and leave the rest matte. They also go over whatever color is
already there rather than replacing it, which is what makes it lusterware: paint a shape
blue, glaze it chrome, and you get blue mother-of-pearl. Painting an ordinary color over metal
takes the metal off again. With the Bucket, a metal swatch glazes a whole shape at once.
Wireframe shows the mesh the outline produced; Solid shows
the surface. Both can be on at once.
Settings
Puffiness is how far the surface lifts off the drawn outline:
low for a leaf, high for a balloon. Detail is the grid the solid is built on; more is
smoother and slower. Fairing smooths the result afterwards. They apply to the
next shape you draw, not to what is already on screen.
Balloon inflates the next shape like a mylar balloon instead of a
dome. It is flat on top and vertical at the edge — 40% flatter at the same Puffiness —
because a sealed sheet cannot stretch, and Puffiness becomes how far it is blown up.
Wrinkles is how many gathers take up the extra material at the seam: at full inflation the
rim carries about a third more edge than it has room for, so fewer gathers are deeper and more are
shallower. There is nothing to set for their depth — the count decides it. Each gather also
splits into four finer creases towards the seam, the way a real balloon does; how much of the
material each band takes up was measured off a photograph of one rather than chosen. The fine
creases need a mesh fine enough to hold them, so if Detail is too low they are left out
rather than drawn as a stairstep, and the app says so.
Mirror renders everything as polished chrome, painted or not.
It is a setting rather than a brushful, so it acts on what is already on screen and anything
you painted keeps the metal you chose — the rest becomes chrome. Shapes drawn with
Balloon on are mirrored on their own account, because foil is most of what makes a
balloon read as one: a crease can only show by bending something, and a matte surface has
nothing straight in it to bend.
Sound gives each gesture its own short blip, the way the original
SmoothTeddy did. Theme follows your system by default and can be pinned light or dark.
Keys
⌘Z undo · ⌘⇧Z redo - forty steps deep, across
every gesture. Z on its own undoes too.
T turn · M move · H home ·
+− zoom
E points · R round · W wireframe ·
P paint · [] brush size
Backspace delete the selection · ? this panel ·
Esc close whatever is open
Saving and export
Your work is kept automatically, but only in this browser. Smokey writes the model to your browser's own storage
as you go — a full copy periodically, and every gesture in between — so closing the
tab, losing power or a crash all come back to where you were. The dim ember in the bottom-left
breathes each time a copy lands. Nothing leaves your machine — which also means that copy
is not a backup and does not travel with you. Save a .smokey file for anything you want
to keep, hand in, or open on another computer. Saved work, in Settings, deletes that
stored copy outright and starts you completely fresh; Clear only empties the stage, and the
next thing you draw writes the copy again.
Save writes a .smokey file: the shapes, the paint, the
outlines you can still drag the points of, the hierarchy, your settings and the view. Open it
again here and you carry on where you stopped. It is the only format that comes back editable,
and it is plain readable JSON if you ever want to look inside.
Open loads one back, replacing what is on the stage; undo puts
the old one back. You can also drag a .smokey file straight onto the model.
Export downloads the scene as a .glb: the parts, their real
geometry, their hierarchy, and what you painted — the brushwork travels as a
texture, and the metal travels as a proper metallic-roughness map, so a glazed shape opens in
Blender or Rhino glazed rather than as flat plastic. A .glb is still a one-way door: it carries
no outline to edit, so Smokey cannot re-open one. Save a .smokey if you want to carry on
working on it.
Clear empties the stage. It is undoable, and it leaves your
settings alone.
Built on
Smokey is an independent reimplementation of the interaction and geometry described in
three papers by Takeo Igarashi and colleagues. All of the ideas below are
theirs; the code here is not.
Teddy: A Sketching Interface for 3D Freeform Design.
Takeo Igarashi, Satoshi Matsuoka, Hidehiko Tanaka. SIGGRAPH 1999.
Smooth Meshes for Sketch-based Freeform Modeling.
Takeo Igarashi, John F. Hughes. I3D 2003.
Adaptive Unwrapping for Interactive Texture Painting.
Takeo Igarashi, Dennis Cosgrove. I3D 2001.
Implemented in JavaScript and WebGL by Phil Renato with
Claude (Anthropic), 2026.
Where Smokey departs from the original it does so deliberately. Height comes from
the medial-axis transform rather than an interpolated spine, the surface is built on the
drawn outline so the silhouette is exactly the stroke, and merging is volumetric rather
than a mesh boolean.
Credits and license
Smokey is MIT-licensed research software, published as a research artifact
for use, study and teaching at renato.design, free, with no account and no telemetry. What you
make with it is entirely yours, and the models and exports carry no watermark and no
conditions. What the license does not grant is rehosting or redistributing the application
itself. See LICENSE.txt, DISCLAIMER.txt and NOTICES.txt
beside the app.