Real-world scale
AR only works if the dish is the size the dish actually is. Every model carries physicalSizeM — the length of its longest side, in metres.
Two numbers, not one
physicalSizeM is a measurement — how big the dish is. viewSettings.arScale is a multiplier the restaurant applies on top, for when the measurement is right but the placed result still reads wrong. Native clients apply both; the SDKs do it for you.
Placement is not resizable
Both native SDKs pass allowScaling: false, and the web SDK sets ar-scale="fixed". The mesh is already life-size, and life-size is the entire question a diner is asking. Letting them pinch it turns the answer back into a guess.
overriding it, if you must
await ArmenusNative.presentAr({
url: item.model.usdzUrl,
title: item.name,
allowScaling: true, // the diner can now resize; the size no longer means anything
});Reference sizes
What restaurants pick from in the dashboard. Nobody knows their dish is “0.27 m” — they know it is on a dinner plate.
| Reference object | physicalSizeM |
|---|---|
| Espresso cup | 0.08 |
| Small bowl / mezze dish | 0.14 |
| Side plate | 0.20 |
| Dinner plate | 0.27 |
| Large pizza / platter | 0.35 |
| Sharing platter | 0.50 |