TTSP-UM-06 · Revision 0.6 · September 2026

ThriceZed Tracking Studio Pro
User Manual

TTSP is a Blender extension that reconstructs a camera move from video. It produces a keyframed camera that matches the original shot, a colored point cloud of the filmed environment, and a dense mesh of the location for reflections, shadows and occlusion, for use in matchmoving and CG integration.

1Overview

TTSP implements a structure-from-motion pipeline. Each solve passes through the same sequence:

  1. Frame extraction. The video is sampled into still frames at a configurable interval and resolution.
  2. Masking (optional). Regions covering moving objects, either from shapes you have drawn or from a matte video you supply, are excluded from analysis.
  3. Feature detection. Each frame is scanned for thousands of distinctive, trackable points of detail.
  4. Feature matching. The same points are identified across neighboring frames.
  5. Camera solving. From those correspondences, the solver computes the one camera path and 3D point set that explain all observations.
  6. Scene geometry (optional). A depth network estimates depth for a spread of solved frames; each estimate is fitted to the solve, the results are fused, and a surface is meshed from them.
  7. Scene construction. The result is imported into Blender as an animated camera, a point cloud, the scene mesh, and the source footage as a camera background.

All processing runs locally. Solving and geometry building run in a separate background process, so Blender remains fully responsive throughout, and a running job can be cancelled at any time.

2Requirements and installation

To install: Edit ▸ Preferences ▸ Get Extensions ▸ Install from Disk…, select the downloaded ttsp-0.9.1.zip (as-is, do not unzip it), and confirm the extension is enabled in the Add-ons list. The panel appears in the 3D viewport sidebar (N) under the TTSP tab.

Each solved video receives a sidecar folder named <video>_TTSP next to the source file. It holds the extracted frames, baked masks, the solve database, the reconstruction, the geometry, and logs. Results are cached: re-importing a finished solve is immediate.

Updating from 0.7Blender loads the new version on its next start. If TTSP is already open, save your work, restart Blender, then confirm the Masking and Scene geometry panels are present.

3Quick start

  1. In the 3D viewport, press N and select the TTSP tab.
  2. In Footage, select a video file. Its properties and an estimated tracking time appear below the field.
  3. If people or vehicles move through the shot, open Masking and either draw shapes over them or load a matte video (§5). Skip this for static locations.
  4. In Solve, click Track and solve. Progress is reported per stage; Blender remains usable.
  5. When the solve is complete, click Build geometry in Scene geometry if you need a mesh of the location (§6). This is optional.
  6. Click Build scene in Scene import.
  7. Press Numpad 0 to look through the reconstructed camera and Space to play back the move.

4Interface reference

The TTSP tab holds six panels, in workflow order: Footage, Masking, Solve, Scene geometry, Scene import, and System.

4.1Footage

Selects the input video and controls how it is sampled for analysis. When a video is chosen, an information readout shows resolution, frame rate, duration, file size, total frame count, the number of frames that will be analyzed, and an estimated tracking time. The last two update live as the settings change.

SettingDefaultDescription
Analyze every _ frames2Frequency of feature detection. A value of 2 analyzes every second frame. Use 1 for fast camera moves so consecutive frames still overlap; raise the value for long, slow shots.
Max frames analyzed300Maximum number of keyframes. For long videos, the detection frequency is lowered automatically to stay within this limit and keep solve times short.
Analysis resolution (px)1600Downscale size; the value is the long edge of the downscaled video used for analysis. Raise it only if tracking struggles on fine or distant detail.

4.2Masking

Collapsed by default. Holds the tools for hiding moving objects from the tracker; the workflow is described in §5. Masks from selects the source: Shapes to draw them here, or Matte video to supply your own.

ControlSourceDescription
Open mask editorShapesOpens the video in a new window, in Blender's Movie Clip Editor set to Mask mode, with a mask named TTSP Mask <clip> ready to draw on.
Add box shapeShapesAdds a closed four-point polygon in the center of the frame. Drag its points over the moving object.
Clear masks (bin icon)ShapesRemoves every shape drawn for this video.
MatteMatte videoThe black and white video to use. A readout below reports its resolution, frame rate and duration, and confirms that it lines up with the footage.
White isMatte videoThe moving objects treats white as what to ignore, which is what a roto or Magic Mask matte usually looks like. The area to track is the reverse.
Ignore masked areasBothOn by default. Turn off to solve without masks while keeping the shapes or matte for later.

A status line reports how many shapes are drawn, or whether the matte lines up. The Solve panel repeats this as Masking N shapes or Masking from your matte so it is visible at the moment you start a solve.

4.3Solve

The Engine line reports which solver will run: the bundled solver (CPU) or a system COLMAP installation with GPU acceleration, if enabled in §4.7.

ControlDescription
QualityFast (global) solves all frames simultaneously and is the recommended default. Robust (incremental) registers frames one at a time; slower, but more tolerant of difficult footage (motion blur, sparse detail, abrupt moves).
Track and solveStarts the solve in a background process. If masks are enabled and drawn, they are baked first (Blender is briefly busy while the frames render). The progress bar reports each stage; Cancel stops the run immediately.

Progress stages, in order:

StageMeaning
Extracting FramesSampled stills are pulled from the video.
Preparing MasksBaked shapes or your matte video are matched to the extracted frames (only when masking is active).
Finding FeaturesEach frame is scanned for trackable detail. Reads (masked) when masks are in use.
Matching FeaturesDetail is matched across neighboring frames.
Solving CameraRotations, then positions, then refinement.
Saving SolveThe reconstruction is written to the sidecar folder.

A new solve discards any geometry built from the previous one, since the mesh is fitted to that specific solve.

4.4Scene geometry

Builds a dense mesh of the location from a finished solve. The engine line reads AI depth + Poisson (CPU); no GPU is used. The workflow and what to expect from the result are described in §6.

ControlDefaultDescription
Frames used40How many solved frames contribute depth, spread evenly across the solve. More frames cover more of the location and take proportionally longer. 40 is enough for most handheld shots; raise it for long walks through large spaces.
DetailNormalLow is quick and coarse, sufficient for shadow catching. Normal balances surface detail against mesh weight and suits reflections and occlusion. High produces the finest surface and the heaviest mesh.
Build geometryStarts the build in the background. Available once a solve has finished. Progress reports the depth pass per frame, then fusing, then meshing; Cancel stops it.
Import geometryAppears once a mesh exists. Adds the mesh to a TTSP rig already in the scene, or replaces the mesh already imported. Use it after rebuilding at a different detail level.

When a mesh exists, a status line reports its face count and how many frames it was built from.

4.5Scene import

OptionDescription
Keyframed cameraCreates a camera keyed on every solved frame, with focal length estimated from the solve.
Point cloudImports the reconstructed 3D points as a cloud of small dots, a sketch of the filmed environment for placing CG against.
Video as camera backgroundDisplays the source footage behind the camera view and sets the render resolution to match the clip.
Scene geometryImports the dense mesh, when one has been built. Ignored otherwise.
Build sceneImports the selected items into a new collection. A best-effort leveling is applied automatically on import.
Align Floor to Selected PointsLevels the scene from points you choose. Select the point cloud, enter Edit Mode (Tab), select three or more points on the ground (box-select works well), and click the button. The whole solve rotates so those points become the level floor at Z = 0, with their center at the origin. The mesh follows.
Open solve folderReveals the <video>_TTSP sidecar folder.

4.6System

Reports the state of TTSP's components. Solver, Frame extractor, Depth runtime and Depth network should all read Bundled. System COLMAP (turbo) indicates whether a separate COLMAP installation was detected. Re-scan re-checks after installing software.

4.7System COLMAP

Enabling Use system COLMAP routes solving through a separate COLMAP installation, which is substantially faster on NVIDIA GPUs. Masks are honored on this path as well. A manual path to a COLMAP executable can be set in the add-on preferences. Geometry building always uses the bundled engine.

5Masking moving objects

The solver assumes the world is still and only the camera moves. A person walking through the frame, a passing car, or an actor in the shot breaks that assumption: detail tracked on them is explained as camera motion, and the solve drifts or fails. Masks tell the solver which regions to disregard.

Masks come from one of two sources, selected by Masks from at the top of the panel. Draw shapes inside Blender (§5.1), or supply a matte video you made elsewhere (§5.2). Either way the solver receives the same thing: one black and white image per analyzed frame, where black is ignored.

5.1Drawing shapes

  1. With the video selected in Footage, expand Masking and click Open mask editor. The clip opens in a new window in Mask mode.
  2. Click Add box shape, or draw freehand: in the editor, Ctrl+click places points, and Mask ▸ Toggle Cyclic (Alt+C) closes the outline.
  3. Select points and press G to move them over the object. Keep the shape generous: a margin of a few pixels around the object is better than a tight outline, and the solver grows the masked area slightly on its own.
  4. Scrub the timeline to a frame where the object has moved, reposition the points, and press I with the mouse over the editor to keyframe the shape. Blender interpolates between keyed frames. Two or three keys per second of movement is usually enough.
  5. Add one shape per moving object. All shapes live on the same mask; the status line in the panel counts them.

The mask window can be closed at any time; the shapes stay with the Blender file. Reopen it with the same button.

5.2Using your own matte video

If you already roto in another application, or want a matte tighter than shapes can follow, set Masks from to Matte video and point the Matte field at the file. Anything that produces a black and white matte works: DaVinci Resolve's Magic Mask, After Effects roto brush, Nuke, or an AI segmentation export.

The matte has to describe the same shot, frame for frame:

White is sets which side is the moving object. Roto mattes usually paint the subject white, which is the default (The moving objects); choose The area to track for a matte built the other way round. The readout under the field reports the matte's resolution, frame rate and duration, and says Lines up with the footage when it is usable.

Shapes and a matte are stored independently, so switching the source back and forth keeps both.

5.3Solving with masks

With Ignore masked areas on, Track and solve prepares the masks before starting the background solve. Shapes are baked for every frame that will be analyzed: baking renders through the compositor at the clip's resolution and takes a few seconds for a typical clip, during which Blender is busy and shows progress in the cursor. A matte video needs no bake and is read directly by the background process. Baked shapes are stored in masks_baked/ inside the sidecar folder, and the solver-ready masks from either source in masks/.

Masked regions are excluded from feature detection only. The camera is still keyed on every frame, and the point cloud simply has no points where the object was. Geometry building (§6) reads the same masks, whichever source produced them, so a masked person never appears in the mesh.

The masked area is grown by a few pixels on the solver's side, so a matte that traces an object exactly still excludes the detail clinging to its edge.

When to maskMask anything that moves independently of the camera and covers a meaningful part of the frame. Small distant movement (a bird, a car three blocks away) is handled by the solver's own outlier rejection and does not need a mask. Reflections in glass or water can also mislead the solver; mask them if they dominate the frame.

6Scene geometry

The point cloud from a solve is sparse: a few thousand points where the tracker found detail. Many integration tasks need a continuous surface instead: a floor to catch a shadow, walls to reflect in a chrome object, buildings to occlude a character walking behind them. Scene geometry builds that surface.

6.1How it is built

  1. A spread of solved frames (the Frames used setting) is passed through a bundled monocular depth network, which estimates relative depth for every pixel.
  2. Each depth estimate is fitted to the solve. The tracked 3D points give true depth at hundreds of pixels per frame, and the fit brings the estimate onto the same scale and position as the camera track.
  3. Pixels along depth discontinuities and at the image border are dropped, and a point is kept only where neighboring frames agree on its depth. This removes the inconsistencies a single-image estimate always contains.
  4. The fused point cloud is meshed with Poisson surface reconstruction, and the footage colors are carried onto the vertices.

On Apple Silicon, a 40-frame build at Normal detail takes well under a minute. The result is written to geometry/ in the sidecar folder as fused.ply (the point cloud) and meshed.ply (the surface).

6.2Using the mesh

The mesh is imported as TTSP Geometry <clip>, parented to the rig alongside the camera and points, with a material that displays the vertex colors. Because it is fitted to the solve, it lines up with the footage through the camera on every frame.

The mesh follows the rig: leveling with Align Floor, scaling, and re-orienting (§7) apply to it as well.

6.3What to expect

The surface is a proxy, not a survey scan. Flat and gently curved surfaces (floors, walls, roads, furniture) come out clean; thin structures (railings, poles, foliage) are approximated or dropped; sky and very distant background are excluded on purpose. The mesh covers what the camera saw from the frames used, so areas the camera never looked at have no surface. Raise Frames used for coverage and Detail for finer relief; lower both for a lighter mesh on long shots.

7The imported scene

Build scene creates a collection named TTSP <clip> containing an empty, with the camera, point cloud and geometry parented to it. The empty is the master transform for the whole solve: rotating or scaling it moves everything together, keeping the parts registered to each other.

An automatic best-effort leveling is applied on import. If the result is not level (footage varies) use Align Floor to Selected Points (§4.5) to set the ground plane exactly from points you pick. Two properties still require judgment:

CG elements placed among the points will hold their position in the shot when viewed through the camera. Parent them to the empty if you expect to re-orient or re-scale the world afterward.

8Troubleshooting

SymptomCause and remedy
"No reconstruction produced"The footage lacks parallax (camera rotated without traveling) or trackable texture. Reshoot with lateral movement, or try Robust quality.
Erratic camera pathMotion blur, insufficient frame overlap, or a moving object dominating the frame. Set "Analyze every _ frames" to 1, raise "Max frames analyzed", mask the moving object (§5), and try Robust quality.
Solve drifts when a person passesMask them. Make the shape generous and keyframe it through the whole pass, including the frames where they are partly out of frame.
"Mask bake failed"The clip could not be rendered through the compositor. Confirm the video still plays in the mask editor window, then retry. The message includes the underlying cause.
"The matte covers N of the M analyzed frames"The matte video is shorter than the footage. Re-export it over the full shot length.
"The matte is WxH, a different shape than the footage"The matte's aspect ratio differs from the footage. Re-export at the footage's aspect ratio; the resolution itself does not have to match.
Solve ignores the wrong half of the frameThe matte's polarity is reversed. Flip White is in the Masking panel.
Build geometry is greyed outIt needs a finished solve for the selected video. Run Track and solve first.
"Could not fit depth to the solve on enough frames"The solve has too few tracked points per frame for the fit. Solve again at a higher analysis resolution, or with "Analyze every _ frames" set to 1.
Mesh has holes or floating fragmentsCoverage gaps where frames disagreed or the camera never looked. Raise Frames used; small fragments are removed automatically on import, larger ones can be deleted in Edit Mode.
"Poisson meshing failed"Rebuild at a lower Detail level.
"Solve data missing on disk"The solve predates the current TTSP version. Run Track and solve again for that video.
Only part of the clip solvedExpected on difficult footage; the camera is keyed only where solving succeeded. More texture and slower moves raise the solved fraction.
Panel missing after updateConfirm the extension is enabled: Edit ▸ Preferences ▸ Get Extensions ▸ Installed. Restart Blender after installing over an older version.
Other failuresThe complete engine log is written to solve.log or geometry.log in the sidecar folder.

9Shooting guidelines