Currently
Frame by Frame Rome
Based
Berlin, Germany
Contact

40+
Feature Films
12
Years Experience
2
Industry Awards
4
Nominated Awards
Worked on Awarded Films
★ Academy Award — Best VFX · The Jungle Book (2017)
★ VES Award Nomination – NYAD (2024)
Selected Credits View all 40+ →
Aaron Stewart

"As an action sequence consultant and designer, I choreograph blockbuster moments and lead layout teams at the world's premier VFX studios."

With a background in 3D Computer Animation (MA & BA Hons, University of Wales Trinity Saint David), I've spent 12 years at studios including TRIXTER, Method Studios, Scanline VFX, Rising Sun Pictures, and MPC — working across the UK, Australia, Germany and Italy.

My focus is on layout supervision, previs, and pipeline design. Alongside production work I develop custom Python & MEL tools for Maya, and I'm currently expanding into UX/UI design and AI-driven pipeline tooling through additional training at SPICED Academy, Berlin.

Specialisms
Layout Supervision Previs Action Sequences Team Leadership Pipeline Design
Software
Autodesk Maya ShotGrid RV Player Nuke Python · MEL
UX / Design
UX Research UI Design Tool Development
🎙
Podcast Interview
Career interview — how I went from Wales to Marvel blockbusters
An informal conversation about the VFX industry, career path, and working on major productions. Spotify.

Filmography

40+ productions across major VFX studios worldwide

Feature Films 31 credits
Television 10 credits
Commercials 4 credits

Showreels

Layout & previs work across blockbuster features and major TV productions · @aaronstewart1930

Experience

Apr 2026 — Now
Frame by Frame
Rome, Italy
Layout Supervisor
Unannounced Hollywood Feature Film
Feb — Mar 2026
PIXOMONDO
Stuttgart, Germany
Senior Layout Artist
House of the Dragon
Jun — Sep 2025
SPICED Academy
Berlin, Germany
UX Designer
UX/UI Design training — expanding into digital product design
Jun 2024 — Apr 2025
Troll VFX
Tampere, Finland
Previs & Layout Supervisor / Lead
Sisu: Road to RevengeHAVOC
Apr 2022 — Dec 2023
Scanline VFX
Berlin, Germany
Lead Layout Artist
Meg 2: The TrenchNYAD ★ VES6888th BattalionBack In Action
Oct 2020 — Mar 2022
TRIXTER
Berlin, Germany
Lead Layout / Matchmove & Rotomation
The MarvelsShe-HulkMs. MarvelShang-ChiLokiFalcon & Winter SoldierDr Strange MoMDie Känguru-Chroniken
Jun — Oct 2020
Scanline VFX
Stuttgart, Germany
Senior Layout Artist
Marvel EternalsSuicide Squad II
Jan — Apr 2020
Alps VFX
Turin, Italy
Senior Layout Artist
Dracula
Oct — Dec 2019
Mill Film
Adelaide, Australia
Senior Layout Artist
Love and Monsters
Jan 2018 — Sep 2019
Method Studios
Melbourne, Australia
Senior Layout Artist
AquamanJohn Wick 3Terminator: Dark FateIT Chapter TwoMIB 4Christopher RobinFengshen
Oct 2016 — Dec 2017
Rising Sun Pictures
Adelaide, Australia
Layout Artist
Thor: RagnarokDark PhoenixTomb RaiderLoganAlien: Covenant
Oct 2015 — Oct 2016
TRIXTER
Munich, Germany
Matchmove / Layout Artist
Guardians Vol. 2Captain America: Civil WarIndependence Day 2Timm ThalerMercedesAudi
Mar — Jul 2015
MPC London
London, UK
Lead Matchmove Artist
The Jungle Book ★ OscarThe MartianKingsman: Secret Service
2014 — 2015
ENVY / BaseBlack / BBC
London, UK
Roto & Matchmove Artist
Top GearKingsmanBBC CasualtyDoctor Who

Maya Scripts Overview

These scripts and tools were built to accelerate complex layouts, generate dynamic environments, and streamline pipeline diagnostics. They were developed alongside advanced AI models to ensure robust, production-ready code. They are actively used in my daily VFX layout workflow and are available below for anyone to download, review, and integrate into their own pipelines.

🎫
Speed System Forensics
Speedo_v01.py
Download Tool View Documentation

Real-time animated speedometer and telemetry tool. Tracks the velocity of any Maya object frame-by-frame with a live PySide2/6 UI featuring a custom-painted speedometer gauge with glow effects, oscilloscope wave display, and detailed speed logging at keyframes.

  • Custom OpenGL speedometer with animated peak alert & screen shake
  • Oscilloscope telemetry wave display (70-sample history)
import Speedo Speedo.launch() # Select object -> ATTACH SIGNAL # Scrub timeline -> live readout
PythonPySide2/6OpenMayaTelemetry
📷
Camera HUD (Integrated)
Cam_HUD.py
Download Tool View Documentation

Dockable Maya Camera HUD combining a full heads-up display with an integrated OpenMaya 2.0 raycaster — no external dependencies. Displays real-time distance and speed telemetry for any selected camera or object directly in the Maya viewport using MayaQWidgetDockableMixin.

  • Dockable Maya widget (MayaQWidgetDockableMixin)
  • Real-time distance display in Inches / Feet / CM / Meters
import maya.cmds as cmds exec(open('path/to/Cam_HUD.py').read()) run() # Opens dockable HUD panel
PythonOpenMaya 2.0HUDDockable
🎦
VFX Projection & Keyer v2.0
ProjectionKeyerTool_v02.py
Download Tool View Documentation

Master toolset for batch camera projection and greenscreen/bluescreen keying. Automates frustum plane creation, projection shader assignment, and full pro-quality keyer node network construction. Inspired by working alongside Arne Palluck.

  • Batch process all selected cameras simultaneously
  • One-click blue screen / green screen presets with colour tuning
  • Auto-creates camera frustum projection planes
  • Builds complete Chroma Keyer node networks
  • Scene-wide projection cleanup utility
from ProjectionKeyerTool import ProBatchProjectionTool # Select cameras → open tool tool = ProBatchProjectionTool() # → PROCESS ALL SELECTED CAMERAS
PythonProjectionKeyerBatch
Noise System
NOISEMayaTool.py
Download Tool View Documentation

Sophisticated procedural noise generator for Maya attributes. Applies SINE, SQUARE, TRIANGLE, SAW, pseudo-PERLIN, or RANDOM noise to any keyable attribute. Created with Nathan Thompson.

  • 6 noise types including custom pseudo-Perlin algorithm
  • Bakes procedural noise as Maya animation keyframes
  • JSON preset save/load (persists between sessions)
  • Custom pixel-art icon rendering via QPainter
  • Amplitude, frequency, phase, and offset controls
from NOISEMayaTool import run run() # Select attribute → choose noise type # Set amplitude, freq, phase → BAKE
PythonPySide2/6ProceduralAnimation
📹
Cadence Cam Generator
CadenceCamGenerator.py
Download Tool View Documentation

Non-destructive layout camera shake generator. Build the rig once, then tweak Walk / Jog / Sprint presets live — Auto Live re-bakes the shake onto the rig instantly as you adjust, so you can feel the difference in real time. Footstep impacts, handheld sway, breathing and tremor all bake onto a clean offset-group rig that preserves your original camera path.

  • Auto Live mode — parameter changes re-bake the rig automatically
  • Walk / Jog / Sprint presets plus full manual control
  • Footstep engine with damped-spring impacts & humanised timing
  • Live waveform preview and camera velocity heat-map
  • One-click undoable build, bake standalone & clean removal
# Run from Maya Script Editor: exec(open('path/to/CadenceCamGenerator.py').read()) # Build rig → Auto Live on → tweak preset → BAKE STANDALONE
PythonPySide2/6CameraLayout
📷
Camera Sensor Tool
CameraSensorTool.py
Download Tool View Documentation

Dockable sensor & lens switcher that behaves like the Attribute Editor. Pick a camera body (sensor / film-back size) and a lens (focal length) from presets and the viewport gate updates live — no bake. An animated top-view FOV wedge in the header opens and closes as you change focal length, anamorphic squeeze is handled per film-back, and a dotted distortion guide marks the heavy lens-distortion edge zone. Save setups into A/B slots to compare framing on a shot.

  • Live viewport gate — sensor & lens write straight to the cameraShape
  • Animated top-view field-of-view wedge that opens / closes with focal length
  • Real camera presets — Alexa, RED, Venice, Super35, anamorphic, full frame & more
  • Toggleable dotted distortion / frame guide with adjustable inset
  • A/B compare slots — save looks and flip between framings
# Run from Maya Script Editor: exec(open('path/to/CameraSensorTool.py').read()) run() # Pick a target → choose sensor + lens → flip A/B
PythonPySide2/6CameraLayout
🎞
Open Gate Crop Tool
OpenGateCropTool.py
Download Tool View Documentation

Builds a camera with an open-gate image plane (the full sensor / plate), crops a Show region inside it, and toggles the camera's film back between Open Gate and Show with one click. Because the focal length is held constant, the crop is a true sensor punch-in — the field of view narrows exactly like a windowed sensor mode. Define the crop with delivery-aspect presets or exact mm / pixels; the state is stored on the cameraShape so it survives save, reload and tool relaunch.

  • One camera, two film-back states — toggle Open Gate ⟷ Show
  • True sensor crop: same focal length, smaller film back = tighter FOV
  • Crop by aspect presets (2.39, 1.85, 16:9…) or exact crop mm / show pixels
  • Open-gate image plane with optional plates & a dotted crop-guide preview
  • State serialised onto the cameraShape — travels with the scene
# Run from Maya Script Editor: exec(open('path/to/OpenGateCropTool.py').read()) run() # Create camera → set crop → ⇄ TOGGLE OPEN ⟷ SHOW
PythonPySide2/6CameraLayout
🎬
Multi-Camera Playblaster
Playblaster_v02.py
Download Tool View Documentation

Professional multi-camera playblast manager with complete Maya state save/restore. Batch-playblasts up to 4 cameras as image sequences simultaneously, with per-camera resolution presets, HUD options, custom naming, and a progress UI. Compatible Maya 2022–2025.

  • Batch render 1–4 cameras in a single click
  • Saves and fully restores all Maya viewport state after blast
  • Per-camera: resolution, codec, frame range, output path
  • Progress bar with real-time per-camera status
  • Dynamic PySide2/PySide6 import for Maya 2022–2025
from Playblaster import PlayblastManager mgr = PlayblastManager() # Check cameras, set output path # → BLAST ALL (state restored after)
PythonPySide2/6Multi-CameraPipeline
🎥
Solaris Cam Export
SolarisCamExport.py
Download Tool View Documentation

A streamlined tool for exporting Maya cameras to USD with proper Houdini Solaris motion blur support. Injects temporary USD shutter attributes directly into the Maya shape node before export.

  • Select and export any scene camera to .usdc format
  • Customizable shutter presets (180°, 90°, 270°, Custom)
  • Configurable frame step for subframe motion blur accuracy
  • Automatic ±1 frame padding for Solaris velocity calculations
  • Cleans up temporary attributes after export
# Run from Maya Script Editor: exec(open('path/to/SolarisCamExport.py').read())
PythonPySide2/6USDSolaris
📽
FFmpeg Frame Extractor
ExtractFrames.bat
Download Tool

A lightweight, drag-and-drop batch script that automatically extracts high-quality JPEG image sequences from any video file using FFmpeg. Maya strongly prefers image sequences over .mp4 or .mov files for Image Planes and animated textures to maintain viewport stability and frame accuracy.

  • Extracts frames automatically via drag-and-drop
  • Guarantees perfectly sequential, high-quality JPEG output
  • Sanitises complex filenames to ensure Maya compatibility
  • Automatically creates and organises a dedicated output folder
# No installation required. Simply drag your video onto: ExtractFrames.bat
Windows BatchFFmpegVideo TexturesPipeline
📡
Mesh Raycaster
MeshRaycaster.py
Download Tool

Multi-directional world-space mesh raycasting module using OpenMaya 2.0 API. Casts rays from a source object in up to 6 cardinal directions against a list of target meshes, returning exact world-space hit points, face normals, and distances. Optional debug visualisation.

  • Up to 6 simultaneous directional rays per call
  • Returns RayHit namedtuple: mesh, distance, world point, normal
  • Debug mode: draws locators and curves for each ray
  • Clean public API — single cast_rays() function call
  • Supports both transform and mesh node targets
import MeshRaycaster as mr results = mr.cast_rays( "pSphere1", ["pPlane1", "pCube1"], debug=True ) for dir, hit in results.items(): if hit: print(hit.distance)
PythonOpenMaya 2.0RaycastingTD Tool

Master RV Player

RV is the industry-standard review & playback tool for VFX and animation pipelines. Originally developed by Tweak Software, acquired by Autodesk in 2015, and open-sourced in 2022 under the Academy Software Foundation's Open Review Initiative.

Used daily across major VFX studios for dailies review, version comparison, colour inspection, and ShotGrid/Flow integration. RV won a Scientific & Technical Award from the Academy of Motion Picture Arts and Sciences.

# Quick launch with an EXR sequence rv /path/to/shot.1001-1100#.exr # Compare two versions rv versionA.#.exr versionB.#.exr
5
Lessons
60+
Hotkeys
10
Quiz Q's
OverviewWhat RV Does
  • Real-time playback of EXR, DPX, QuickTime, H.264, ProRes
  • A/B version comparison with wipe and stack modes
  • Colour inspection, LUT application, exposure/gamma editing
  • Frame annotation and markup for review sessions
  • Deep ShotGrid / Flow Production Tracking integration
  • Extensible via Python and Mu scripting API
ToolRVIO — Batch Processing

Command-line companion for format conversion, slate generation, watermarking and transcoding.

# EXR → ProRes with watermark rvio input.#.exr -overlay watermark "CONFIDENTIAL" 0.5 -o out.mov # Add slate rvio input.#.exr -leader simpleslate "Studio" "Shot=SH010" -o out.mov

Lessons

01 · BeginnerLoading Media
  • Drag & drop sequences, movies, or folders directly onto RV
  • Ctrl+O — File browser · Ctrl+I — Add extra source
  • Command line: rv /path/seq.1001-1100#.exr
  • Ctrl+S — Save .rv session (stores all sources, LUTs, annotations)
Supports EXR, DPX, TIFF, JPEG, PNG, QuickTime, H.264, ProRes and more.
02 · BeginnerPlayback Controls
  • Space — Play / Pause
  • — Step one frame back/forward
  • — Toggle forward/backward playback direction
  • P — Ping-Pong playback mode
  • G — Jump to specific frame number
  • [ ] — Set in/out points · m — Mark frame
  • F2 — Toggle HUD timeline
03 · IntermediateColour & Exposure
  • e — Exposure · y — Gamma · k — Contrast · S — Saturation
  • D — Toggle Display LUT · L — Log to Linear (DPX/Cineon)
  • r g b a — Isolate colour channels · c — Return to normal
  • Shift+Home — Reset all colour adjustments
Always reset colour with Shift+Home before sharing screenshots with supervisors.
04 · IntermediateVersion Comparison
  • Load multiple sources → switch to Stack mode
  • ( ) — Cycle between stacked layers
  • F6 — Wipes mode: drag split line to compare A/B
  • F7 — Info strip showing version metadata
  • View menu → Side-by-side or contact sheet layout
05 · AdvancedAnnotations & Export
  • Tools menu → paint tools for per-frame annotations
  • Annotations are frame-specific and saved in the .rv session
  • Ctrl+E — Export QuickTime with annotations baked in
  • RVIO for batch export with slates and watermarks
# Bake annotations into QuickTime rvio session.rv -o review_v001.mov

Hotkey Reference

Complete keyboard shortcuts — search or filter by category

Dailies Workflow

Click each step to see a typical VFX dailies review pipeline

RVIO Reference

FMT
Format Conversion
# EXR → ProRes rvio input.#.exr -codec apcn -o output.mov # Movie → JPEG sequence rvio input.mov -o output.#.jpg
SLT
Slates & Watermarks
# Production slate rvio in.#.exr -leader simpleslate "Studio" "Shot=SH010" -o out.mov # Watermark at 50% opacity rvio in.#.exr -overlay watermark "CONFIDENTIAL" 0.5 -o out.mov
RSZ
Resize & Combine
# Resize to 1920×1080 rvio in.#.exr -resize 1920 1080 -o out.mov # Side-by-side combine rvio [ a.#.exr b.#.exr ] -o compare.mov

Quiz

Test your RV knowledge

0 / 10

Checklist

Track your RV learning progress

0 / 15
Aaron Stewart

Get in
touch

Available for layout supervision, previs, and pipeline consulting roles worldwide. Based in Berlin, currently working in Rome.

Base
Berlin, Germany
Currently at Frame by Frame, Rome · Apr 2026
Status
Open to new projects
Links

[ Video / Breakdown Embed Placeholder ]

Legal Notice & Privacy

Impressum (Legal Notice)

Information according to § 5 TMG:

Aaron Stewart
Auf dem Rücken 3
44869 Bochum
Germany

Contact:
Email: info@aaron-stewart.com

Responsible for content according to § 55 Abs. 2 RStV:
Aaron Stewart

Privacy Policy

General Information
As the operator of this website, I take the protection of your personal data very seriously. I treat your personal data confidentially and in accordance with the statutory data protection regulations (GDPR) and this privacy policy.

Hosting
This website is hosted by STRATO AG (Germany). STRATO collects server log files (IP address, browser type, time of access). This is necessary for the technical operation and security of the website based on my legitimate interest (Art. 6 Para. 1 lit. f GDPR).

Cookies & Local Storage
This site uses "Local Storage" to remember your preference for Light or Dark mode. This is a functional requirement and does not track your personal behavior across other sites.

External Services (YouTube/Vimeo)
This site embeds videos from YouTube and Vimeo. To protect your privacy, I use YouTube's "Privacy Enhanced Mode" (youtube-nocookie.com). However, clicking "Play" or interacting with these videos may result in data being processed by Google/YouTube or Vimeo according to their respective privacy policies.

Your Rights
You have the right to receive information about the origin, recipient, and purpose of your stored personal data at any time free of charge. You also have the right to request the correction, blocking, or deletion of this data.