Skip to content

Core concepts

A handful of types appear in almost every Flutter Scene program. This page introduces them so the guides can go deeper without re-explaining the basics.

A Scene is the root of the scene graph and the thing that renders. It owns a root Node, the lighting environment, tone mapping, post-processing, and the render targets. Most programs construct one Scene, add content to it, and render it through a SceneView.

A Node is a transform in the scene graph. A node may carry a Mesh, hold child nodes, and run behavior through attached Components. Child transforms compose with their parent, so moving a parent moves its whole subtree.

A Mesh is a Geometry paired with a Material. The geometry is the shape (vertices and indices), and the material is the shading. Built-in geometry includes primitives such as CuboidGeometry and SphereGeometry, and built-in materials include PhysicallyBasedMaterial, UnlitMaterial, and custom ShaderMaterial.

A Camera, usually a PerspectiveCamera, describes the viewpoint. With SceneView you supply a fixed camera, a cameraBuilder that returns a camera each frame (handy for animating the view), or nothing at all, in which case the view uses the scene’s primary camera or a default. The Cameras guide covers all of these.

SceneView drives the loop. Each frame it advances any Components attached to nodes, builds a camera, and renders the scene. Constructing a Scene starts loading the engine’s shared resources, and rendering is gated on that finishing, so the view simply skips frames until the engine is ready. You can also render a Scene directly onto a dart:ui Canvas from a CustomPainter when you need full control.

The Guides cover each subsystem in depth, each with a live demo.