Plugin Documentation

ViewportGPS
Exact editor camera coordinates you can paste, share and navigate

Read, type, copy and paste the position, rotation and field of view of the level editor camera. Paste coordinates in any common format, save named bookmarks per level, share location links that open the right map, and step Back and Forward through your camera jumps.

v1.0
UE 4.27 & 5.8
Win64 & Mac
Category Editor
Editor only
Alpha XP

Overview

ViewportGPS adds a compact box to the toolbar of every level editor viewport in Unreal Engine 4.27 and 5.8. It shows the active viewport camera's position and rotation as editable fields and adds tools that make camera coordinates easy to exchange with teammates, bug reports, logs, scripts and code.

  • Editable position (in cm, m or km) and rotation, with truncation options; moving a piloted actor moves it with the camera.
  • Smart paste: Unreal text, number lists, BugItGo lines, JSON, C++ FVector/FRotator, Python unreal.Vector/unreal.Rotator and location links.
  • Copy As Unreal text, BugItGo command, C++, Python, JSON or a location link.
  • Named bookmarks per level, unlimited, beyond the engine's Ctrl+0-9 slots.
  • Location links (ViewportGPS:/Game/Maps/MyLevel?loc=...) that open the right map and jump.
  • Back / Forward history of camera jumps.
  • Field of view readout and edit, and distance to selection.
  • Keyboard commands for copy, paste & go, history and bookmarks - no need to open the box.
  • Blueprint and Python API for Editor Utility Blueprints and editor scripts.

Requirements

RequirementDetails
Unreal Engine4.27 and 5.8
ModuleViewportGPS (Editor, loading phase PostEngineInit) — editor only, never packaged into games
DependenciesNone (engine modules only; no other plugins are enabled)
LanguageC++, Editor Utility Blueprints and Python
PlatformsWin64 and Mac (the module lists these platforms in the plugin descriptor). The code is platform-independent engine C++ with no OS-specific calls.
Network ReplicatedNo (editor tool)

Installation

  1. Install ViewportGPS from Fab into your engine, or copy the ViewportGPS folder into your project's Plugins folder.
  2. For a C++ project, regenerate project files and build the editor target.
  3. Open the project, enable ViewportGPS in Edit > Plugins and restart the editor.
Verifying the installPress Shift+Alt+C in a level viewport: the position fields appear below the viewport toolbar. Editor Preferences > Plugins > ViewportGPS exists.

Quick start

  1. Press Shift+Alt+C (position) and Shift+Alt+X (rotation) in the level viewport, or tick Toggle Camera Position / Toggle Camera Rotation in the viewport camera menu (UE 5.8) or options menu (UE 4.27).
  2. Type or drag a value in X, Y, Z or Roll, Pitch, Yaw to move the camera.
  3. Paste a location into the Go To field (for example BugItGo 1200 -300 450 -15 90 0) and press Enter.
  4. Open Copy As and choose a format to put the camera on the clipboard.
  5. Open Bookmarks, type a name and press Enter to save the view; pick it later to jump back.
  6. Click < to return to where you were before the last jump, > to go forward again.

The camera box

The box appears in each level viewport while the position and/or rotation fields are toggled on. It always shows the camera of the viewport you used last.

RowDescription
X / Y / ZCamera position in the Position Unit (cm, m or km). Dragging moves 1 cm per step in every unit. Right-click: Copy ((X=.. Y=.. Z=..) in cm), Paste (location from any supported format), Copy Camera As.
Roll / Pitch / YawCamera rotation in degrees. Right-click: Copy ((P=.. Y=.. R=..)), Paste (rotation; a plain list of three numbers is read as Pitch Yaw Roll), Copy Camera As.
FOVEditable perspective field of view (5 to 170 degrees). When the viewport is locked to a camera actor, that camera's field of view is changed, exactly like the engine's own Field of View slider.
DistDistance from the camera to the selected actors: to the centre of their combined bounds or to their (average) pivot, see Distance Mode. Updated ten times per second; shows - when nothing is selected.
< > Bookmarks, Copy AsHistory Back / Forward, the bookmarks menu, and the Copy As menu (which also has Paste & Go From Clipboard).
Go ToType or paste any supported location and press Enter. The field is cleared after a successful jump.
Every row can be turned offUse Show Field Of View, Show Distance To Selection, Show Navigation Row and Show Go To Field in the settings to keep the box as small as you like.

Smart paste formats

The Go To field, the Paste entries, the Paste & Go From Clipboard command and the Parse Location String / Go To Location String functions all use the same reader. It finds a location, an optional rotation and an optional field of view.

FormatExampleNotes
Unreal textX=100 Y=200 Z=300
(X=100.000000,Y=200.000000,Z=300.000000)
Details panel / FVector::ToString output.
Unreal rotationP=-10 Y=45 R=0
(Pitch=-10,Yaw=45,Roll=0)
Y after P is Yaw.
Location + rotationLocation=(X=1,Y=2,Z=3) Rotation=(Pitch=0,Yaw=90,Roll=0)The Unreal Text copy format.
Transform text(Rotation=(X=0,Y=0,Z=0.7071,W=0.7071),Translation=(X=..),Scale3D=(..))Quaternion rotation; scale is ignored.
Number lists1 2 3, (1, 2, 3), 1,2,33 = location, 6 = location + Pitch Yaw Roll, 7 = + FOV. Read in the Position Unit unless Plain Numbers Use Display Unit is off.
BugItGoBugItGo 100 200 300 -10 45 0Also inside a log line.
JSON{"x": 1, "y": 2, "z": 3, "pitch": 0, "yaw": 90, "roll": 0, "fov": 90}
{"location": [1, 2, 3], "rotation": {"pitch": 0, "yaw": 90, "roll": 0}}
Keys are case-insensitive; arrays and nested objects work.
C++FVector(1.0f, 2.0f, 3.0f), FRotator(0.0, 90.0, 0.0)FVector3d / FVector3f / FRotator3d too; FRotator order is Pitch, Yaw, Roll.
Pythonunreal.Vector(x=1, y=2, z=3), unreal.Rotator(roll=0, pitch=0, yaw=90)Positional unreal.Rotator(a, b, c) is Roll, Pitch, Yaw, as in the Python API.
Location linkViewportGPS:/Game/Maps/MyLevel?loc=1,2,3&rot=0,90,0&fov=90See Location links.
Units in any formatAny number may end in cm, m, km or mm, for example 12.5m -3m 1.2m or X=1.5km Y=0 Z=20m. Without a suffix, engine formats are centimetres.

Copy As formats

Choose a format in the Copy As menu or the right-click Copy Camera As submenu. The Copy Camera Transform command uses Default Copy Format. Every format pastes back into ViewportGPS.

FormatExample output
Unreal TextLocation=(X=1200.0,Y=-300.0,Z=450.0) Rotation=(Pitch=-15.0,Yaw=90.0,Roll=0.0)
BugItGo CommandBugItGo 1200.0 -300.0 450.0 -15.0 90.0 0.0 — paste into the console of a running game or PIE.
C++FVector(1200.0, -300.0, 450.0), FRotator(-15.0, 90.0, 0.0)
Pythonunreal.Vector(x=1200.0, y=-300.0, z=450.0), unreal.Rotator(roll=0.0, pitch=-15.0, yaw=90.0)
JSON{"x": 1200.0, "y": -300.0, "z": 450.0, "pitch": -15.0, "yaw": 90.0, "roll": 0.0, "fov": 90.0}
Location LinkViewportGPS:/Game/Maps/MyLevel?loc=1200.0,-300.0,450.0&rot=-15.0,90.0,0.0&fov=90.0

Values are centimetres and degrees with up to four decimals.

Bookmarks

Bookmarks are named camera views of a level, as many as you like. They are stored per user and per project in Saved/Config/<Platform>/EditorPerProjectUserSettings.ini, keyed by the map package, so every level has its own list.

ActionDescription
New BookmarkType a name in the field at the top of the menu and press Enter. Names are made unique (Entrance 2).
Add Bookmark HereSaves the view as Bookmark 1, Bookmark 2, ... (also the Add Camera Bookmark command).
(bookmark name)Click to jump. Hover to open: Jump, Update To Current View, Copy Link, Rename (type and press Enter) and Delete.

With Bookmarks Store Field Of View on, new and updated bookmarks also keep the field of view and restore it on jump.

Navigation history

Every jump made by ViewportGPS records the view you left: Go To, Paste, Paste & Go, location links, bookmark jumps and Jump Editor Camera To. < (Camera Back) returns there, > (Camera Forward) goes forward again. A new jump clears the forward list, like a web browser.

  • Up to History Size entries (default 32, 1 to 256) are kept.
  • History belongs to the open level and is cleared when another map is opened.
  • Typing or dragging in the X/Y/Z or rotation fields is not recorded, nor is Set Editor Camera Location / Rotation.

Keyboard commands

Bind or change them in Editor Preferences > General > Keyboard Shortcuts > ViewportGPS. They work while the level editor has focus, whether the box is shown or not. They are also listed in the viewport camera menu (UE 5.8) / options menu (UE 4.27) under ViewportGPS.

CommandDefaultDescription
Toggle Camera PositionShift+Alt+CShows or hides the position fields.
Toggle Camera RotationShift+Alt+XShows or hides the rotation fields.
Copy Camera TransformunboundCopies the camera in the Default Copy Format.
Copy Location LinkunboundCopies a location link of the current view.
Paste & Go From ClipboardunboundReads any supported format or link from the clipboard and jumps there.
Camera BackunboundHistory back.
Camera ForwardunboundHistory forward.
Add Camera BookmarkunboundSaves the view as a new bookmark.
Why most commands are unboundNew default shortcuts can clash with your own bindings or other tools, so ViewportGPS only keeps the two toggles bound. Pick free chords for the commands you use most.

Blueprint & Python API

All functions are static members of UViewportGPSBlueprintLibrary (category ViewportGPS) and are available in Editor Utility Blueprints/Widgets and in Python as unreal.ViewportGPSBlueprintLibrary.<snake_case_name>. Positions are centimetres, angles degrees.

Camera

Node (Python)TypeDescription
Get Editor Camera Location
get_editor_camera_location()
PureLocation of the active level viewport camera.
Set Editor Camera Location
set_editor_camera_location(v)
CallableMoves the camera (and a piloted actor). Not recorded in the history.
Get Editor Camera Rotation
get_editor_camera_rotation()
PureRotation of the camera.
Set Editor Camera Rotation
set_editor_camera_rotation(r)
CallableRotates the camera (and a piloted actor). Not recorded in the history.
Get Editor Camera FOV
get_editor_camera_fov()
PureField of view in degrees (0 when no level viewport exists).
Set Editor Camera FOV
set_editor_camera_fov(fov)
CallableSets the field of view (clamped to 5..170). Returns false without a level viewport.
Jump Editor Camera To
jump_editor_camera_to(loc, rot, set_rotation=True)
CallableMoves the camera and records the jump for Back / Forward.
Get Distance To Selection
get_distance_to_selection()
CallableDistance (cm) to the selected actors using Distance Mode; false when nothing is selected. Python returns (found, distance).
Get Current Map Package
get_current_map_package()
PurePackage of the open level, for example /Game/Maps/MyLevel.

Text formats

Node (Python)TypeDescription
Parse Location String
parse_location_string(text)
CallableReads a location with the smart paste reader; fills a FViewportGPSParseResult. Python returns (ok, result).
Go To Location String
go_to_location_string(text)
CallableParses and jumps; a link to another map opens it first (on the next editor tick).
Make BugItGo String
make_bug_it_go_string(loc, rot)
PureBugItGo X Y Z Pitch Yaw Roll.
Make Location Link
make_location_link(loc, rot, map_package, fov=0.0)
PureLocation link; empty map = open level, FOV 0 = omitted.
Format Camera Transform
format_camera_transform(format, loc, rot)
PureA transform in any EViewportGPSCopyFormat.
Copy Editor Camera To Clipboard
copy_editor_camera_to_clipboard(format)
CallableCopies the current camera and returns the text.

Bookmarks and history

Node (Python)TypeDescription
Add Bookmark
add_bookmark(name)
CallableSaves the current view; returns the final unique name (empty name = Bookmark N).
Get Bookmarks
get_bookmarks(map_package)
CallableBookmarks of a level (empty = open level).
Jump To Bookmark
jump_to_bookmark(name)
CallableJumps to a bookmark of the open level.
Rename Bookmark
rename_bookmark(old, new)
CallableRenames a bookmark (the new name is made unique).
Update Bookmark
update_bookmark(name)
CallableStores the current view in an existing bookmark.
Remove Bookmark
remove_bookmark(name)
CallableDeletes a bookmark.
History Back / History Forward
history_back() / history_forward()
CallableNavigation history.
Can History Back / Can History ForwardPureTrue when there is an entry to go to.
Clear History
clear_history()
CallableEmpties Back and Forward.

Python example

import unreal

gps = unreal.ViewportGPSBlueprintLibrary

# Jump to a BugItGo line from a bug report
gps.go_to_location_string("BugItGo 1200 -300 450 -15 90 0")

# Share the current view
link = gps.make_location_link(gps.get_editor_camera_location(), gps.get_editor_camera_rotation(), "", gps.get_editor_camera_fov())
print(link)

# Save and list bookmarks of the open level
gps.add_bookmark("Boss Arena")
for b in gps.get_bookmarks(""):
    print(b.name, b.location, b.rotation)

C++

Add "ViewportGPS" to an editor module's dependencies and use UViewportGPSBlueprintLibrary, or the native helpers FViewportGPSCamera, FViewportGPSFormat (parse / format) and FViewportGPSNavigator::Get() (jumps, history, bookmarks).

Types

TypeKindDescription
FViewportGPSBookmarkStructName, Location, Rotation, Field Of View (0 = keep current).
FViewportGPSParseResultStructHas Location/Location, Has Rotation/Rotation, Has Field Of View/Field Of View, Is Link, Map Package.
EViewportGPSCopyFormatEnumUnreal Text, BugItGo Command, C++, Python, JSON, Location Link.
EViewportGPSUnitEnumCentimeters, Meters, Kilometers.
EViewportGPSTruncTypeEnumNo Truncation, Two Decimals, Zero Decimals.
EViewportGPSDistanceModeEnumSelection Bounds Centre, Actor Pivot.

Settings

Editor Preferences > Plugins > ViewportGPS (saved to the project's DefaultEditor.ini, section [/Script/ViewportGPS.ViewportGPSSettings]).

SettingDefaultDescription
Enable Camera PositionOnAllows the position fields and their toggle.
Enable Camera RotationOnAllows the rotation fields and their toggle.
Position TruncationTwo DecimalsDisplay truncation of the position, applied to the centimetre value (same precision in every unit).
Rotation TruncationTwo DecimalsDisplay truncation of the rotation.
Position UnitCentimetersUnit of the X/Y/Z fields, the distance readout and plain pasted numbers.
Show Field Of ViewOnShows the FOV field.
Show Distance To SelectionOnShows the distance readout.
Distance ModeSelection Bounds CentreMeasure to the combined bounds centre or to the actor pivot (average for several actors).
Show Navigation RowOnShows Back / Forward, Bookmarks and Copy As.
Show Go To FieldOnShows the smart paste field.
Box Width300Width of the box (200 to 800).
Default Copy FormatUnreal TextFormat of the Copy Camera Transform command.
Plain Numbers Use Display UnitOnPlain lists such as 1 2 3 are read in the Position Unit; off = always centimetres.
Show NotificationsOnShort toasts after copy, jump and bookmark actions. Errors are always shown.
Record HistoryOnRecords jumps for Back / Forward.
History Size32Entries kept (1 to 256).
Confirm Map ChangeOnAsks before a location link opens another map.
Enable BookmarksOnShows the Bookmarks menu and enables the Add Camera Bookmark command.
Bookmarks Store Field Of ViewOffSaves and restores the FOV with bookmarks.

The visibility of the position and rotation fields (the two toggles) is stored in the same section.

Troubleshooting

SymptomCause and fix
The box does not appearToggle it with Shift+Alt+C / Shift+Alt+X while the level viewport has focus, or tick the toggles in the viewport camera / options menu. Check that Enable Camera Position / Rotation are on.
"No camera location found in ..."The text has no recognisable location. Plain lists need exactly 3, 6 or 7 numbers; Unreal text needs X, Y and Z.
Pasted plain numbers land 100 times too farPlain lists are read in the Position Unit. Turn off Plain Numbers Use Display Unit or add a unit (120cm).
A link says the map does not existThe link names a map package that is not in this project (for example a different /Game/... path).
Nothing happens after opening a linked mapThe jump runs a couple of frames after the map has loaded; if the load was cancelled at the save prompt, nothing is applied.
Back is disabledOnly ViewportGPS jumps are recorded, and history is cleared when another map is opened.
The FOV field shows a different value than expectedWhen the viewport pilots or is locked to a camera actor, the field reflects and edits that camera's field of view.
Bookmarks are missing on another machineBookmarks are per user (Saved/Config). Share views with location links.

Credits

© 2026 Alpha XP — alphaxp.net · Support: support@alphaxp.net. Built for Unreal Engine 4.27 and 5.8.