Position, animate, constrain, and track with the CesiumJS camera.
---
name: cesiumjs-camera
description: "CesiumJS camera control - Camera, flyTo, lookAt, setView, ScreenSpaceCameraController, CameraEventAggregator, flight animation. Use when positioning the camera, creating flyTo animations, constraining user navigation, tracking entities, or converting between screen and world coordinates."
---
# CesiumJS Camera & Navigation
> **Baseline:** CesiumJS v1.142 -- ES module imports (`import { ... } from "cesium";`)
## Camera Fundamentals
Access via `viewer.camera`. The camera has a `position` (Cartesian3 in world
coords), orientation vectors (`direction`, `up`, `right`), and a frustum.
All angles are **radians**.
Read-only computed properties: `positionWC`, `positionCartographic`,
`directionWC`, `upWC`, `rightWC`, `heading` (0 = north, clockwise), `pitch`
(negative = down), `roll`, `transform`, `viewMatrix`, `inverseViewMatrix`.
Events: `moveStart` / `moveEnd` fire when movement begins/ends. `changed`
fires when the camera moves by more than `percentageChanged` (default 0.5).
> **City views need 3D buildings.** For skyline, street-level, or urban panorama
> views, add `Cesium.createOsmBuildingsAsync()` (or Google Photorealistic 3D
> Tiles). Without 3D Tiles, cities render as flat satellite imagery -- no
> buildings, no skyline silhouette. Include a code comment to load buildings.