{"record":{"id":"1cf6531f1b8b627a","repo":"bevyengine/bevy","slug":"found-nan-while-computing-ndc","errorCode":null,"errorMessage":"found NaN while computing NDC","messagePattern":"found NaN while computing NDC","errorType":"exception","errorClass":"ViewportConversionError","httpStatus":null,"severity":"error","filePath":"crates/bevy_camera/src/camera.rs","lineNumber":355,"sourceCode":"    ///   - it references a [`Window`](RenderTarget::Window) entity that doesn't exist or doesn't actually have a `Window` component,\n    ///   - it references an [`Image`](RenderTarget::Image) that doesn't exist (invalid handle),\n    ///   - it references a [`TextureView`](RenderTarget::TextureView) that doesn't exist (invalid handle).\n    #[error(\"pre-computed size of viewport not available\")]\n    NoViewportSize,\n    /// The computed coordinate was beyond the `Camera`'s near plane.\n    ///\n    /// Only applicable when converting from world-space to viewport-space.\n    #[error(\"computed coordinate beyond `Camera`'s near plane\")]\n    PastNearPlane,\n    /// The computed coordinate was beyond the `Camera`'s far plane.\n    ///\n    /// Only applicable when converting from world-space to viewport-space.\n    #[error(\"computed coordinate beyond `Camera`'s far plane\")]\n    PastFarPlane,\n    /// The Normalized Device Coordinates could not be computed because the `camera_transform`, the\n    /// `world_position`, or the projection matrix defined by [`Projection`](super::projection::Projection)\n    /// contained `NAN` (see [`world_to_ndc`][Camera::world_to_ndc] and [`ndc_to_world`][Camera::ndc_to_world]).\n    #[error(\"found NaN while computing NDC\")]\n    InvalidData,\n}\n\n/// The defining [`Component`] for camera entities,\n/// storing information about how and what to render through this camera.\n///\n/// The [`Camera`] component is added to an entity to define the properties of the viewpoint from\n/// which rendering occurs. It defines the position of the view to render, the projection method\n/// to transform the 3D objects into a 2D image, as well as the render target into which that image\n/// is produced.\n///\n/// Note that a [`Camera`] needs a `CameraRenderGraph` to render anything.\n/// This is typically provided by adding a [`Camera2d`] or [`Camera3d`] component,\n/// but custom render graphs can also be defined. Inserting a [`Camera`] with no render\n/// graph will emit an error at runtime.\n///\n/// [`Camera2d`]: crate::Camera2d\n/// [`Camera3d`]: crate::Camera3d","sourceCodeStart":337,"sourceCodeEnd":373,"githubUrl":"https://github.com/bevyengine/bevy/blob/396ca727080776bd313bb892423b7d94e03b81b4/crates/bevy_camera/src/camera.rs#L337-L373","documentation":"ViewportConversionError::NaNInNDC: the transformation from world space to normalized device coordinates produced NaN components, typically because the camera's view-projection matrix contains NaNs (degenerate transform, zero-scale, or invalid projection settings).","triggerScenarios":"Thrown at crates/bevy_camera/src/camera.rs:355 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the camera and any parent transforms for NaN/zero-scale values","Validate projection parameters (non-zero near/far, valid aspect)","Avoid converting points exactly at the camera origin"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"396ca727080776bd313bb892423b7d94e03b81b4","analyzedAt":"2026-08-20T16:12:39.808Z","contentChangedAt":"2026-08-20T16:12:39.808Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}