Every cell with its own skin
We gave every cell of the embryo a real membrane: a surface that keeps its volume, sticks to its neighbours, pushes back when pressed and splits in two when the cell divides. A graphics card computes the first sixteen hours — one cell to 485, through gastrulation — in about twenty-six minutes, and you can turn it in 3D here. Updated 22 September 2026: this page used to stop at eight hours and ninety cells.
Switch the colour to fate and drag to about 13 hours to watch cells leave the surface and go inside; Cut open shows what is in there. It is a 24 MB download — 485 cells, each a closed mesh, at 201 moments — so give it a few seconds on a slow connection.
What happens, and when
Nothing in the list below is placed by hand. The developmental program says which cell divides when and in which direction; everything about where a cell ends up is the mechanics.
| 0–8 h | Cleavage. One cell to about ninety, and the embryo stays a single layer the whole time — no cell ends up stably inside. That is a prediction we can check: it is what Heikes et al. 2023 report, and we did not put it in. |
|---|---|
| ~9 h | The four germ cells are set aside and stop dividing. Everything else keeps going. |
| 13–16 h | Gastrulation. Ventral cells leave the surface and move in: 11 inside at 13 hours, 31 at 14.5, 39 by 16, plus the four germ cells. In every run we have done, every cell that ingresses ends up fully inside, touching no eggshell. |
| ~15 h | The surface becomes an epithelium — 442 cells in one layer, 438 of them in contact with the eggshell. |
485 cells at 16 hours is close to the ~500 by 16.5 hours that Gabriel et al. 2007 counted, but that agreement is weak evidence: the cell count is largely set by the division program we gave it. The mechanical claims — the single layer, the cells ending fully inside, the epithelium on the shell — are the ones the physics has to earn.
What drives it
The developmental rules are the same ones the browser embryo runs, so what changes here is the physics. Cells divide on the measured clock of each generation (Heikes et al. 2023's cycle lengths), the first two cuts run front to back and then back to belly, and two lineages divide unequally toward the middle for three rounds before handing over the four germ cells, which stop dividing. Every other cell splits across its longest axis, now measured from its own membrane rather than guessed.
Each cell is a mesh of 162 points. Tension pulls its surface tight, adhesion holds neighbours together at a small gap, and contact pushes back wherever two cells meet. The eggshell holds them all in. Nothing places the cells: the packing you see is where the forces leave them.
How we know it behaves
- Against a real embryo. The same physics, run on the four-cell embryo of the worm C. elegans with its measured cell volumes, reproduces the measured contact areas between cells to within 23% on average (Kuang et al. 2022).
- Against our first engine. Two cells pressed together settle into the same shape as in the browser engine.
- A result. At four cells the tardigrade embryo stays flat, and any twist between its front and rear pairs follows the tilt of the dividing spindles: the mechanics neither create nor remove it.
- A fix. In the first version, cells from different lineages slid into one another and flattened into stacks. A point buried inside one cell was only tested against whichever cell had the nearest surface point. Testing every point against every neighbour cleared the stacks: at 88 cells, one pair still overlaps by more than 1 µm, down from eight.
- A prediction, not an input. No rule in the program says "stay one layer until 8 hours". The embryo does it anyway, and stops doing it at about the time the real one does.
What is still wrong with it
We are showing you this run with a known fault, because hiding it would make the page prettier and less true.
Cells overlap as the embryo crowds. At 16 hours, 174 pairs of cells are more than a micrometre inside each other — at 88 cells it was one pair. It is not a tuning problem, and we can say why: 114 of those 174 pairs are sisters, still overlapping about two and a half hours after they divided. They are not being pushed together by crowding; they never finished separating. That points at the moment of division itself — the gap the two daughters start with, and how well a 162-point mesh can represent a cell once it is only about three micrometres across.
The obvious knob makes it worse elsewhere. Weakening how strongly surface cells stick to the eggshell cuts the overlapping pairs from 174 to 136, and then to 58 — but the number of outer cells still touching the shell falls from 438 of 442 to 414 of 443, and then to 349 of 443. You trade overlapping cells for a torn epithelium. Stiffer contact does not buy the trade either: one setting gave 121 overlapping pairs but 3,402 deeply buried vertices.
So the fix is not on this dial. It is in how sisters separate at small cell size, and that is the next thing to do here.
Limits
The run stops at sixteen hours, part-way through the embryo's two days. The mechanical settings were tuned on the worm, because no one has measured tension or adhesion in tardigrade cells yet; that is an assumption, and it is listed as one. Cells come out slightly rounder than real ones, so contacts are somewhat small. The player shows 201 of the run's 480 frames, chosen to be as evenly spaced in time as the run allows (1.2 to 6 minutes apart). The run itself writes frames three times faster during cleavage than during gastrulation, so a plain every-Nth-frame export would have spent two-thirds of the scrub bar on the first eight hours; this one spends 60% of it there, which is about what eight of sixteen hours deserves.
How this is built
- Data
- Cycle lengths for each generation from Heikes et al. 2023's lineage (the paper names every cell); stage timings and cell counts from Gabriel et al. 2007; the eggshell's size and shape from Gabriel 2007 and our measurement of their movies; the worm embryo's volumes, division axes and contact areas from Kuang et al. 2022 and CShaper, used to test the physics.
- Built with
- A cell-mechanics engine we wrote in PyTorch (
torchcell.py): 162-point membranes with volume, cortical tension, adhesion and contact. It runs on a graphics card, is driven by the same developmental rules as the browser embryo (embryo_run.py), and exports frames that three.js draws here. - Checked
- The worm four-cell embryo: contact areas within 23% on average (partial). Two cells pressed together match our browser engine. At four cells the tardigrade embryo stays flat (partial). Overlap between cells at 88 cells: one pair left (pass, after a fix). Gastrulation to 16 hpl across five settings: ingression and the single layer pass, overlap fails (partial). All the tests, with the failures, are in the graph.
- Limits
- Tension and adhesion are the worm's settings, since no one has measured them in tardigrades; this is listed as an assumption. The run stops at 16 hours. Sister cells overlap as the embryo crowds: 174 pairs at 16 hpl, 114 of them sisters, which is a structural problem rather than a tuning one.
- More
- How the whole project is built