Wrap layers in <code><Scene3D></code> and they share ONE perspective 3D world: each becomes a flat plane placed by <code>position3d={[x, y, z]}</code> and tilted by <code>rotation3d</code>, viewed through a perspective camera with a real depth buffer. Left, three cards laid out flat in 2D; right, the same cards in 3D — the centre faces us while the side cards YAW inward, foreshortening into trapezoids a 2.5D scale can never fake. The mograph core of "3D": camera fly-throughs, card walls / cover-flow, parallax, exploded UI, 3D titles. A layer at <code>z=0</code> with no rotation matches its 2D placement, so going 3D costs nothing until you move in z. The GPU runs the true perspective and out-of-plane rotation; the live preview and CPU reference degrade to a 2.5D depth-sorted projection — so judge the tilt on a native/export render.
<Scene3D camera={{ position: [640, 360, -1150], fov: 46 }}>
<Card position3d={[250, 360, 260]} rotation3d={[0, 55, 0]} />
<Card position3d={[640, 360, 0]} />
<Card position3d={[1030, 360, 260]} rotation3d={[0, -55, 0]} />
</Scene3D>