README.txt in tracksperanto-1.1.1 vs README.txt in tracksperanto-1.2.0
- old
+ new
@@ -4,53 +4,105 @@
== Description
Tracksperanto is a universal 2D-track translator between many apps.
+== Why Tracksperanto?
+
+Historically, every matchmoving app uses it's own UI for tracking 2D features.
+Unfortunately, the UIs of these are all different and not very user-friendly. It happens
+that an app cannot solve a shot that another one will, but you usually have to redo your 2D
+tracks in each one of them.
+
+Another problem with today's matchmoving apps is that they are vastly inefficient when
+doing 2D tracks. Almost all of them use OpenGL and want to load the whole frame into memory
+at once. When doing tracks of long shots at high resolutions (like 2K and HD), especially
+on 32bit platforms, the app usually cannot even cache the whole shot and tracking is very
+very slow.
+
+Compositing apps, in contrast, are very efficient in this. Both Shake and Nuke offer very
+fast trackers because they can load only the search area for the tracker into memory and
+not a pixel more. When you use manual feature selection you can create many tracks very
+quickyl even without having fast IO. Flame is also very fast since it has virtually zero IO
+overhead thanks to it's fast storage. Compositing apps also allow for precise, local
+preprocessing of tracking features like boosting contrast, doing expensive (especially
+temporal) denoise, blurs and so on, while matchmoving apps offer only a single, global
+preprocessing step (like a LUT or a gamma curve adjustment) which is not adequate for all
+of the features being tracked.
+
+It's thusly very natural to track in a modern compositing app that has selective image
+loading, and then export one single group of tracks into all of the matchmoving
+applications and figuring out which one gives a better camera solve. Also, you can always
+escape into the 2D world if no 3D app proves to be adequate. If you need to move from one
+app to another, you won't have to retrack.
+
+Another issue with tracks is adjusting to formats. Very few apps allow you to convert your
+tracks in one stop from format to format - like doing an unproportional scale on the
+tracks, or moving them a few pixels left and right. This comes at a high cost of the
+footage you are tracking came cropped or in a wrong aspect - the only way to solve the shot
+will be to retrack it from scratch. Tracksperanto allows you to work around this
+by applying simple transformations to the tracks.
+
+== Usage
+
+The main way to use Tracksperanto is to use the supplied "tracksperanto" binary, like so:
+
+ tracksperanto -w 1920 -h 1080 /Films/Blockbuster/Shots/001/script.shk
+
+-w and -h stand for Width and Height and define the size of your comp (different tracking
+apps use different coordinate systems and we need to know the size of the comp to properly
+convert these). You also have additional options like -xs, -ys and --slip - consult the
+usage info for the tracksperanto binary.
+
+The converted files will be saved in the same directory as the source, if resulting
+converted files already exist <b>they will be overwritten without warning</b>.
+
+== Format support
+
Import support:
-* Shake script (one tracker node per tracker)
-* Shake tracker node export (textfile with many tracks per file), also exported by Boujou and others
+
+* Flame .stabilizer file (not the .stabilizer.p blob format)
+* Nuke script (Tracker3 nodes, also known as Tracker)
+* Shake script (Tracker, Matchmove and Stabilize nodes)
+* Shake tracker node export (textfile with many tracks per file)
* PFTrack 2dt files
-* Syntheyes 2D tracking data exports (UV coordinates)
+* Syntheyes 2D tracking data exports
+* MatchMover Pro .rz2
Export support:
-* Shake text file (many trackers per file), also accepted by Boujou
+* Shake text file (many trackers per file), also accepted by Boujou.
+ May crash Shake with more than 4-5 tracks.
* PFTrack 2dt file (with residuals)
* Syntheyes 2D tracking data import (UV coordinates)
+* Nuke script
+* MatchMover Pro .rz2
-The main way to use Tracksperanto is to use the supplied "tracksperanto" binary, like so:
-
- tracksperanto -f ShakeScript -w 1920 -h 1080 /Films/Blockbuster/Shots/001/script.shk
-
-ShakeScript is the name of the translator that will be used to read the file (many apps export tracks as .txt files so
-there is no way for us to autodetect them all). -w and -h stand for Width and Height and define the size of your comp (different
-tracking apps use different coordinate systems and we need to know the size of the comp to properly convert these). You also have
-additional options like -xs, -ys and --slip - consult the usage info for the tracksperanto binary.
-
-The converted files will be saved in the same directory as the source, if resulting converted files already exist ++they will be overwritten without warning++.
-
== Modularity
-Tracksperanto supports many export and import formats. It also can help when you need to import and export the same format,
-but you need some operation applied to the result (like scaling a proxy track up). Internally, Tracksperanto talks
-Exporters, Importers and Middlewares. Any processing chain usually works like this:
+Tracksperanto supports many export and import formats. It also can help when you need to
+import and export the same format, but you need some operation applied to the result (like
+scaling a proxy track up). Internally, Tracksperanto talks Exporters, Importers and
+Middlewares. Any processing chain (called a Pipeline) usually works like this:
-1) The tracker file is read and trackers and their keyframes are extracted, converting them to the internal representation.
- For some formats you need to supply the width and height of the source material
-2) The trackers and their keyframes are dumped to all export formats Tracksperanto supports, optionally passing through middleware
+* Tracker file is read and trackers and their
+ keyframes are extracted, converting them to
+ the internal representation.
+* Trackers and their keyframes are dumped to all export
+ formats Tracksperanto supports, optionally passing through middleware
-== Internal coordinate system
+== Importing your own formats
-Frame numbers start from zero (frame 0 is first frame of the track).
+You can easily write a Tracksperanto import module - refer to Tracksperanto::Import::Base
+docs. Your importer should return an array of Tracksperanto::Tracker objects which
+are themselves arrays of Tracksperanto::Keyframe objects.
-Tracksperanto uses the Shake coordinates as base. Image is Y-positive, X-positive, absolute pixel values up and right (zero is in the
-lower left corner). Some apps use a different coordinate system so translation will take place on import or on export, respectively.
+== Exporting your own formats
-We also use residual and not correlation (residual is how far the tracker strolls away, correlation is how sure the tracker is
-about what it's doing). Residual is the inverse of correlation (with total correlation of one the residual excursion becomes zero).
+You can easily write an exporter. Refer to the Tracksperanto::Export::Base docs.
== Limitations
-Information about the search area, reference area and offset is not passed along (outside of scope for the app and different trackers handle
-these differently, if at all). For some modules no residual will be passed along (3D tracking apps generally do not export residual with
-backprojected 3D features).
+Information about the search area, reference area and offset is not passed along (outside
+of scope for the app and different trackers handle these differently, if at all). For some
+modules no residual will be passed along (3D tracking apps generally do not export residual
+with backprojected 3D features).