Documentation

Documentation

React
Layout cameras

Framer Motion is now Motion for React! Read more

Framer Motion is now Motion for React! Read more

Layout cameras

LayoutCamera and LayoutOrthographicCamera allow us to involve React Three Fiber scenes in Motion's layout animations.

Usage

Motion's layout animations work via the transform style. A drawback to animating width and height via transform is imagery can become distorted.

When involving a React Three Fiber scene into a layout animation, we can use Motion's LayoutCamera and LayoutOrthographicCamera components to pre-distort a 3D scene so that when the CSS transform is applied to the host canvas element, it looks correct throughout the animation.

To implement a camera, we first nee to replace Canvas from @react-three/fiber with the MotionCanvas component. Then, one of the camera components can be added anywhere within the scene:

import { MotionCanvas, LayoutCamera } from "framer-motion"

function Scene() {
  <MotionCanvas>
    <LayoutCamera />
    <Box />
  </MotionCanvas>
}

LayoutCamera provides a normal perspective camera:

Whereas LayoutOrthographicCamera provides an orthographic view:

Props

Internally, LayoutCamera renders a <motion.perspectiveCamera /> and LayoutOrthographicCamera renders a <motion.orthographicCamera /> component, so they can accept all the usual React Three Fiber props like position and zoom, as well as motion props like initial and animate.

<LayoutCamera
  position={[0, 0, 5]}
  zoom={20}
  animate={{ zoom: 100 }}
  transition={{ duration: 2 }}
/>
Support Motion

Support Motion

Support Motion

Support Motion

Support Motion

Support Motion

Motion is open source. Sponsorships keep the project sustainable.

Every sponsor receives access to our private Discord, and an exclusive mobile and desktop wallpaper pack.