RLS Studios
ProjectsPatreonCommunityDocsAbout
Join Patreon
BeamNG Modding Docs

Guides

Reference

Server CommandsGE UtilitiesGame Engine MainNavigation GraphScreenshot CaptureServerServer ConnectionSpawnpoint ManagerSimulation TimeVehicle SpawningSuspension Frequency Tester
Activity ManagerAudio Bank ManagerAudio Ribbon SystemBus Route ManagerCamera SystemCore Chat (IRC)Core CheckpointsCore Command HandlerCoupler Camera ModifierDevices (RGB Peripherals)Dynamic PropsEnvironmentFlowgraph ManagerForestFun StuffGame ContextGame StateGround Marker ArrowsGround MarkersHardware InfoHighscoresHotlappingInventoryJob SystemLap TimesLevelsLoad Map CommandMetricsMod ManagerMultiseatMultiseat CameraMulti SpawnOnlinePaths (Camera Paths)Quick Access (Radial Menu)Recovery PromptRemote ControllerReplayRepositoryRope Visual TestScheme Command ServerCore SnapshotCore SoundsCore TerrainTraffic SignalsTrailer RespawnVehicle Active PoolingVehicle Bridge (GE ↔ VLua Communication)Vehicle MirrorsVehicle PaintsCore VehiclesVehicle TriggersVersion UpdateWeather SystemWindows Console
Camera Mode: AutopointCamera Mode: AutozoomCamera Mode: Big MapCamera Mode: ChaseCamera Mode: CollisionCamera Mode: CrashCamera Mode: DriverCamera Mode: External / Fan CameraCamera Mode: FallbackCamera Mode: Free CameraCamera Mode: Game EngineCamera Mode: HandheldCamera Mode: Manual ZoomCamera Mode: NoiseCamera Mode: ObserverCamera Mode: OnboardCamera Mode: OrbitCamera Mode: Pacenote OrbitCamera Mode: PathCamera Mode: PredictorCamera Mode: RelativeCamera Mode: ShakeCamera Mode: SmoothCamera Mode: Top DownCamera Mode: TrackIRCamera Mode: TransitionCamera Mode: Unicycle

UI

Resources

BeamNG Game Engine Lua Cheat SheetGE Developer RecipesMCP Server Setup

// RLS.STUDIOS=true

Premium Mods for BeamNG.drive. Career systems, custom vehicles, and immersive gameplay experiences.

Index

HomeProjectsPatreon

Socials

DiscordPatreon (RLS)Patreon (Vehicles)

© 2026 RLS Studios. All rights reserved.

Modding since 2024

API ReferenceGE ExtensionscorecameraModes

Camera Mode: Path

Global camera that follows a spline path defined by markers. Uses Catmull-Rom interpolation for smooth position and rotation along timed control points. Supports replay synchronization, manual FOV, bu

Global camera that follows a spline path defined by markers. Uses Catmull-Rom interpolation for smooth position and rotation along timed control points. Supports replay synchronization, manual FOV, bullet-time, looping, and vehicle tracking.


Overview

The path camera flies through a series of markers using Catmull-Rom spline interpolation. Each marker defines position, rotation, FOV, and timing. Supports two data formats: legacy pathName-based (via core_paths) and JSON-based (via customData). Used for cutscenes, camera path editor previews, and replay camera paths.


Class Properties

PropertyTypeDefaultDescription
isGlobalbooltrueAvailable without a vehicle
hiddenbooltrueNot in user camera cycle
ctrlPointnumber0Current control point index
camTnumber0Current time along the path
customDatatablenilExternal path data controller
pathtablenilJSON path object (markers array)
pathNamestringnilLegacy path name for core_paths
fovOffsetnumber0Manual FOV zoom offset

Methods

MethodSignatureDescription
initC:init()Reset all path state
updateC:update(data)Advance time, interpolate, apply
setCustomDataC:setCustomData(data)Set path data controller
resetC:reset()Reset path playback
getTimeToNextC:getTimeToNext(path, index)Time between markers
getGlobalTimeC:getGlobalTime(path, index, looped)Absolute time at marker

Catmull-Rom Interpolation

-- Position interpolation using chordal Catmull-Rom
local tNorm = calculateTnorm(d12, d23, d34, t1, t2, t3, camTLocal)
local pos = catmullRomChordal(p1, p2, p3, p4, tNorm, positionSmooth)

-- Rotation interpolation using centripetal Catmull-Rom
local rot = catmullRomCentripetal(r1, r2, r3, r4, tNorm):normalized()

-- FOV interpolation using monotonic Steffen
local fov = monotonicSteffen(fov1, fov2, fov3, fov4, 0, t1, t1+t2, t1+t2+t3, t1+camTLocal)

Vehicle Tracking

-- Markers with trackPosition=true aim at the vehicle
if markers[n2].trackPosition then
  r2 = quatFromDir(target - pos, vec3(0,0,1))  -- look at vehicle
end

-- Optional tracking offset from camPathEditor
local trackingOffset = extensions.editor_camPathEditor.getTrackingOffset()
target = target + right * trackingOffset.x + forward * trackingOffset.y + up * trackingOffset.z

Custom Data Interface

-- customData object must provide:
customData:getNextPath()                     -- returns next path or pathName
customData:finishedPath()                    -- called when path ends
customData:onNextControlPoint(idx, total)    -- called at each marker
customData:reset()                           -- called on camera reset
customData.useJsonVersion                    -- bool: JSON vs legacy mode
customData.useDtReal                         -- bool: use real dt instead of sim dt
customData.offset                            -- number: initial time offset

Marker Properties

FieldTypeDescription
posvec3World position
rotquatCamera rotation
fovnumberField of view (default 60)
timenumberTime to next marker (legacy) or absolute time (JSON)
trackPositionboolAim at vehicle instead of using fixed rotation
cutboolHard cut (skip interpolation)
movingStartboolVirtual start marker for smooth entry
movingEndboolVirtual end marker for smooth exit
nearClipnumberOptional near clip distance
positionSmoothnumberPosition smoothing parameter
bullettimenumberReplay speed at this marker

Key Notes

  • Uses data.dtSim by default (respects time scaling); useDtReal overrides
  • Replay mode syncs camT to core_replay.getPositionSeconds()
  • Manual FOV mode allows zoom in/out with clamped fovOffset in [-1, 1]
  • Rotation quaternion signs are fixed for consistent interpolation
  • Path loops by resetting ctrlPoint and camT when reaching the end

See Also

  • Camera Mode: Autopoint - Related reference
  • Camera Mode: Autozoom - Related reference
  • Camera Mode: Big Map - Related reference
  • Core Systems Guide - Guide

Camera Mode: Pacenote Orbit

Global orbit camera for the pacenote/rally editor. Orbits a fixed world-space target point with mouse/keyboard rotation, zoom, and terrain collision avoidance.

Camera Mode: Predictor

Filter that shifts the camera's look-at target ahead of the vehicle based on velocity. Creates a forward-looking effect that anticipates the vehicle's movement.

On this page

OverviewClass PropertiesMethodsCatmull-Rom InterpolationVehicle TrackingCustom Data InterfaceMarker PropertiesKey NotesSee Also