tracksperanto 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,74 @@
1
+ == Extending Tracksperanto
2
+
3
+ === Importing your own formats
4
+
5
+ You can easily write a Tracksperanto import module - refer to Tracksperanto::Import::Base
6
+ docs. Your importer will be configured with width and height of the comp that it is importing, and will get an IO
7
+ object with the file that you are processing. The parse method should then return an array of Tracksperanto::Tracker objects which
8
+ are themselves arrays of Tracksperanto::Keyframe objects.
9
+
10
+ === Exporting your own formats
11
+
12
+ You can easily write an exporter. Refer to the Tracksperanto::Export::Base docs. Note that your exporter should be able to chew alot of data
13
+ (hundreds of trackers with thousands of keyframes with exported files growing up to 5-10 megs in size are not uncommon!). This means that
14
+ the exporter should work with streams (smaller parts of the file being exported will be held in memory at a time).
15
+
16
+ === Ading your own processing steps
17
+
18
+ You probably want to write a Middleware (consult the Tracksperanto::Middleware::Base docs) if you need some processing applied to the tracks
19
+ or their data. A Middleware is just like an export module, except that instead it sits between the exporter and the exporting routine. Middlewares wrap export
20
+ modules or each other, so you can stack different middleware modules together (like "scale first, then move").
21
+
22
+ === Writing your own processing routines
23
+
24
+ You probably want to write a descendant of Tracksperanto::Pipeline::Base. This is a class that manages a conversion from start to finish, including detecting the
25
+ input format, allocating output files and building a chain of Middlewares to process the export. If you want to make a GUI for Tracksperanto you will likely need
26
+ to write your own Pipeline class or reimplement parts of it.
27
+
28
+ === Reporting status from long-running operations
29
+
30
+ Almost every module in Tracksperanto has a method called report_progress. This method is used to notify an external callback of what you are doing, and helps keep
31
+ the software user-friendly. A well-behaved Tracksperanto module should manage it's progress reports properly.
32
+
33
+ === Sample script
34
+
35
+ require "rubygems"
36
+ require "tracksperanto"
37
+
38
+ include Tracksperanto
39
+
40
+ # Create the importer object
41
+ some_importer = Importer.new(:width => 1024, :height => 576)
42
+
43
+ # Some object responding to #push has to be the receiver
44
+ # In this case we will use an array but this might get out of hand
45
+ # if you have alot of trackers - Tracksperanto uses a disk-based
46
+ # buffer for this instead (see Accumulator)
47
+ some_importer.receiver = []
48
+
49
+ # Run the import with the importer
50
+ some_importer.stream_parse((File.open("source_file.fmt")))
51
+
52
+ # Now the receiver contains trackers! Weeee!
53
+ trackers = importer.receiver
54
+
55
+ # Create the exporter and pass the output file to it
56
+ some_exporter = Exporter.new(File.open("exported_file.other", "wb"))
57
+
58
+ # Now add some middlewares, for example a Scale
59
+ scaler = Middleware::Scaler.new(some_exporter, :x_factor => 2)
60
+ # ... and a slip
61
+ slipper = Middleware::Slipper.new(scaler, :offset => 2)
62
+ # Middlewares wrap exporters and other middlewares, so you can chain them
63
+ # ad nauseam
64
+
65
+ # Now when we send export commands to the Slipper it will play them through
66
+ # to the Scaler and the Scaler in turn will send commands to the exporter.
67
+ slipper.start_export(1024, 576)
68
+ trackers.each do | t |
69
+ slipper.start_tracker_segment(t.name)
70
+ t.each {|kf slipper.export_point(kf.frame, kf.abs_x, kf.abs_y, kf.residual) }
71
+ slipper.end_tracker_segment
72
+ end
73
+
74
+ # And we are done!
data/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ === 2.1.1 / 2011-02-14
2
+
3
+ * Fix handling of Shake scripts containing stabilizer nodes with no animation
4
+ * Remove underscores from tracker names exported to Syntheyes to prevent spaces from being generated
5
+
1
6
  === 2.1.0 / 2011-02-08
2
7
  * Adds PFMatchit import support. Also all PFTrack imported cameras will have a camera name injected into the tracker
3
8
  * Adds a PFMatchit exporter (PFMatchit only wants cameras with numbers in the name)
data/Manifest.txt CHANGED
@@ -1,3 +1,4 @@
1
+ DEVELOPER_DOCS.rdoc
1
2
  History.txt
2
3
  MIT_LICENSE.txt
3
4
  Manifest.txt
@@ -118,6 +119,7 @@ test/import/samples/shake_script/shake_tracker_with_no_anim.shk
118
119
  test/import/samples/shake_script/shake_trackers_with_Nspline.shk
119
120
  test/import/samples/shake_script/stabilize_nodes_with_hermite.shk
120
121
  test/import/samples/shake_script/three_tracks_in_one_stabilizer.shk
122
+ test/import/samples/shake_script/track.shk
121
123
  test/import/samples/shake_script/two_tracks_in_one_tracker.shk
122
124
  test/import/samples/shake_text/one_shake_tracker.txt
123
125
  test/import/samples/shake_text/one_shake_tracker_from_first.txt
data/README.txt CHANGED
@@ -94,36 +94,4 @@ Middlewares. Any processing chain (called a Pipeline) usually works like this:
94
94
  Information about the search area, reference area and offset is not passed along (outside
95
95
  of scope for the app and different trackers handle these differently, if at all). For some
96
96
  modules no residual will be passed along (3D tracking apps generally do not export residual
97
- with backprojected 3D features).
98
-
99
- == Extending Tracksperanto
100
-
101
- === Importing your own formats
102
-
103
- You can easily write a Tracksperanto import module - refer to Tracksperanto::Import::Base
104
- docs. Your importer will be configured with width and height of the comp that it is importing, and will get an IO
105
- object with the file that you are processing. The parse method should then return an array of Tracksperanto::Tracker objects which
106
- are themselves arrays of Tracksperanto::Keyframe objects.
107
-
108
- === Exporting your own formats
109
-
110
- You can easily write an exporter. Refer to the Tracksperanto::Export::Base docs. Note that your exporter should be able to chew alot of data
111
- (hundreds of trackers with thousands of keyframes with exported files growing up to 5-10 megs in size are not uncommon!). This means that
112
- the exporter should work with streams (smaller parts of the file being exported will be held in memory at a time).
113
-
114
- === Ading your own processing steps
115
-
116
- You probably want to write a Middleware (consult the Tracksperanto::Middleware::Base docs) if you need some processing applied to the tracks
117
- or their data. A Middleware is just like an export module, except that instead it sits between the exporter and the exporting routine. Middlewares wrap export
118
- modules or each other, so you can stack different middleware modules together (like "scale first, then move").
119
-
120
- === Writing your own processing routines
121
-
122
- You probably want to write a descendant of Tracksperanto::Pipeline::Base. This is a class that manages a conversion from start to finish, including detecting the
123
- input format, allocating output files and building a chain of Middlewares to process the export. If you want to make a GUI for Tracksperanto you will likely need
124
- to write your own Pipeline class or reimplement parts of it.
125
-
126
- === Reporting status from long-running operations
127
-
128
- Almost every module in Tracksperanto has a method called report_progress. This method is used to notify an external callback of what you are doing, and helps keep
129
- the software user-friendly. A well-behaved Tracksperanto module should manage it's progress reports properly.
97
+ with backprojected 3D features).
data/lib/export/base.rb CHANGED
@@ -2,14 +2,22 @@
2
2
  # The exporters in Tracksperanto are event-driven and follow the same conventions - your
3
3
  # exporter will be notified when a tracker will be exported and when a tracker has been passed
4
4
  # (the last keyframe has been sent). Here's how you can operate any exporter module
5
- # separately:
5
+ # separately (this also demonstrates the calling convention and sequence):
6
6
  #
7
7
  # File.open("destination.txt", "wb") do | f |
8
8
  # exporter = SomeExporter.new(f)
9
9
  # exporter.start_export(720, 576)
10
+ #
11
+ # # Export the first tracker
10
12
  # exporter.start_tracker_segment("FirstPoint")
11
13
  # exporter.export_point(2, 123.43, 456.2, 0.2)
14
+ # exporter.export_point(3, 23423.43, 768.1, 0.1)
12
15
  # exporter.end_tracker_segment
16
+ #
17
+ # # Export the second tracker
18
+ # exporter.start_tracker_segment("AnotherPoint")
19
+ # ....
20
+ # exported.end_tracker_segment
13
21
  # exporter.end_export
14
22
  # end
15
23
  #
@@ -64,4 +72,4 @@ class Tracksperanto::Export::Base
64
72
  # The calls come after start_tracker_segment and before end_tracker_segment
65
73
  def export_point(at_frame_i, abs_float_x, abs_float_y, float_residual)
66
74
  end
67
- end
75
+ end
data/lib/export/mux.rb CHANGED
@@ -1,40 +1,12 @@
1
1
  # Multiplexor. Accepts a number of exporters and replays
2
2
  # the calls to all of them in succession.
3
3
  class Tracksperanto::Export::Mux
4
- attr_accessor :outputs
5
-
6
4
  def initialize(*outputs)
7
5
  @outputs = outputs.flatten
8
6
  end
9
-
10
- # Called on export start
11
- def start_export( img_width, img_height)
12
- @outputs.each do | output |
13
- output.start_export( img_width, img_height)
14
- end
15
- end
16
7
 
17
- # Called on tracker start, one for each tracker
18
- def start_tracker_segment(tracker_name)
19
- @outputs.each do | output |
20
- output.start_tracker_segment(tracker_name)
21
- end
22
- end
23
-
24
- def end_tracker_segment
25
- @outputs.each do | output |
26
- output.end_tracker_segment
27
- end
28
- end
29
-
30
- # Called for each tracker keyframe
31
- def export_point(at_frame_i, abs_float_x, abs_float_y, float_residual)
32
- @outputs.each do | output |
33
- output.export_point(at_frame_i, abs_float_x, abs_float_y, float_residual)
34
- end
35
- end
36
-
37
- def end_export
38
- @outputs.each{|o| o.end_export }
8
+ %w( start_export start_tracker_segment end_tracker_segment
9
+ export_point end_export).each do | m |
10
+ define_method(m){|*a| @outputs.map{|o| o.send(m, *a)}}
39
11
  end
40
- end
12
+ end
@@ -15,7 +15,7 @@ class Tracksperanto::Export::SynthEyes < Tracksperanto::Export::Base
15
15
  end
16
16
 
17
17
  def start_tracker_segment(tracker_name)
18
- @last_registered_frame, @tracker_name = nil, tracker_name
18
+ @last_registered_frame, @tracker_name = nil, camelize(tracker_name)
19
19
  end
20
20
 
21
21
  def export_point(frame, abs_float_x, abs_float_y, float_residual)
@@ -42,6 +42,9 @@ class Tracksperanto::Export::SynthEyes < Tracksperanto::Export::Base
42
42
  # OUTCOME_JUMPED = 16
43
43
  # OUTCOME_OUTASIGHT = 32
44
44
  # We actually provide pregenerated status codes instead of that to get the desired outcome codes.
45
+ # When you set all frames to be keyframes this affects the solver in a negative way because Syntheyes
46
+ # (reasonably) gives priority to keyframes over standard frames of the tracker - and also
47
+ # the transition frames parameter does not work too well over keyframes
45
48
  def get_outcome_code(frame)
46
49
  outcome = if @last_registered_frame.nil? || (@last_registered_frame != (frame - 1))
47
50
  STATUS_REENABLE
@@ -51,4 +54,17 @@ class Tracksperanto::Export::SynthEyes < Tracksperanto::Export::Base
51
54
  @last_registered_frame = frame
52
55
  outcome
53
56
  end
57
+
58
+ # The import script in Syntheyes is designed to transform "Tracker_1"
59
+ # into "Tracker 1" by replacing underscores with spaces. This is all good and
60
+ # well but downstream when Syntheyes exports the matchmove some apps will be
61
+ # getting the features reinstated with spaces in their names. In some cases
62
+ # (for example in Maya) this leads to dangling groups because primitives with spaces
63
+ # in names cannot even be created! The reach of this problem is dependent on the
64
+ # sanity of the one who wrote the export sizzle script for Syntheyes. The morale of the
65
+ # story is - we will use CamelCase instead of underscores and avoid having
66
+ # spaces in feature names as such
67
+ def camelize(lower_case_and_underscored_word)
68
+ lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
69
+ end
54
70
  end
@@ -16,7 +16,7 @@ class Tracksperanto::Import::PFTrack < Tracksperanto::Import::Base
16
16
  next if (!line || line =~ /^#/)
17
17
 
18
18
  if line =~ CHARACTERS_OR_QUOTES # Tracker with a name
19
- t = Tracksperanto::Tracker.new{|t| t.name = unquote(line.strip) }
19
+ t = Tracksperanto::Tracker.new(:name => unquote(line.strip))
20
20
  report_progress("Reading tracker #{t.name}")
21
21
  parse_tracker(t, io)
22
22
  send_tracker(t)
@@ -10,18 +10,22 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
10
10
  ".shk"
11
11
  end
12
12
 
13
- # Extractor. The injection should be an array of two elements: the array collecting
14
- # trackers and the progress proc
13
+ def stream_parse(script_io)
14
+ progress_proc = lambda{|msg| report_progress(msg) }
15
+ Traxtractor.new(script_io, [method(:send_tracker), progress_proc])
16
+ end
17
+
18
+ private
19
+
20
+ # Extractor. Here we define copies of Shake's standard node creation functions.
15
21
  class Traxtractor < Tracksperanto::ShakeGrammar::Catcher
16
22
  include Tracksperanto::ZipTuples
17
23
 
18
24
  # Normally, we wouldn't need to look for the variable name from inside of the funcall. However,
19
25
  # in this case we DO want to take this shortcut so we know how the tracker node is called
20
26
  def push(atom)
21
- return super unless (atom.is_a?(Array)) &&
22
- (atom[0] == :assign) &&
23
- (atom[2][0] == :retval) &&
24
- (atom[2][1][0] == :trk)
27
+ return super unless atom_is_tracker_assignment?(atom)
28
+
25
29
  node_name = atom[1][-1]
26
30
  trackers = atom[2][1][1..-1]
27
31
  trackers.map do | tracker |
@@ -30,6 +34,10 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
30
34
  end
31
35
  end
32
36
 
37
+ def atom_is_tracker_assignment?(a)
38
+ (a.is_a?(Array)) && (a[0] == :assign) && (a[2][0] == :retval) && (a[2][1][0] == :trk)
39
+ end
40
+
33
41
  # For Linear() curve calls. If someone selected JSpline or Hermite it's his problem.
34
42
  # We put the frame number at the beginning since it works witih oru tuple zipper
35
43
  def linear(extrapolation_type, *keyframes)
@@ -206,7 +214,7 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
206
214
  end
207
215
 
208
216
  def collect_stabilizer_tracker(name, x_curve, y_curve)
209
- return if (x_curve == :unknown || y_curve == :unknown)
217
+ return unless valid_curves?(x_curve, y_curve)
210
218
 
211
219
  keyframes = zip_curve_tuples(x_curve, y_curve).map do | (frame, x, y) |
212
220
  Tracksperanto::Keyframe.new(:frame => frame - 1, :abs_x => x, :abs_y => y)
@@ -216,10 +224,7 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
216
224
  end
217
225
 
218
226
  def collect_tracker(name, x_curve, y_curve, corr_curve, *discard)
219
- unless x_curve.is_a?(Array) && y_curve.is_a?(Array)
220
- report_progress("Tracker #{name} had no anim or unsupported interpolation and can't be recovered")
221
- return
222
- end
227
+ return unless valid_curves?(x_curve, y_curve)
223
228
 
224
229
  report_progress("Scavenging tracker #{name}")
225
230
 
@@ -237,21 +242,14 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
237
242
  curve_set << corr_curve if (corr_curve.respond_to?(:length) && corr_curve.length >= x.length)
238
243
  curve_set
239
244
  end
240
- end
241
-
242
- class PushCall
243
- def initialize(proc)
244
- @proc = proc
245
- end
246
245
 
247
- def push(t)
248
- @proc.call(t)
246
+ private
247
+
248
+ def valid_curves?(x_curve, y_curve)
249
+ return false if (x_curve == :unknown || y_curve == :unknown)
250
+ return false unless x_curve.is_a?(Array) && y_curve.is_a?(Array)
251
+ true
249
252
  end
253
+
250
254
  end
251
-
252
- def stream_parse(script_io)
253
- progress_proc = lambda{|msg| report_progress(msg) }
254
- Traxtractor.new(script_io, [method(:send_tracker), progress_proc])
255
- end
256
-
257
255
  end
@@ -9,23 +9,23 @@ class Tracksperanto::Import::ShakeText < Tracksperanto::Import::Base
9
9
  io.each do | line |
10
10
  if line =~ /TrackName (.+)/
11
11
  send_tracker(@last_tracker) if @last_tracker && @last_tracker.any?
12
- @last_tracker = Tracksperanto::Tracker.new{|t| t.name = $1 }
12
+ @last_tracker = Tracksperanto::Tracker.new(:name => $1)
13
13
  # Toss the next following string - header
14
14
  io.gets
15
15
  else
16
16
  keyframe_values = line.split
17
17
  next if keyframe_values.length < 4
18
18
 
19
- @last_tracker.keyframes << Tracksperanto::Keyframe.new do | kf |
20
- kf.frame = (keyframe_values[0].to_i - 1)
21
- kf.abs_x = keyframe_values[1]
22
- kf.abs_y = keyframe_values[2]
23
- kf.residual = (1 - keyframe_values[3].to_f)
24
- end
19
+ @last_tracker.keyframe!(
20
+ :frame => (keyframe_values[0].to_i - 1),
21
+ :abs_x => keyframe_values[1],
22
+ :abs_y => keyframe_values[2],
23
+ :residual => (1 - keyframe_values[3].to_f)
24
+ )
25
25
  end
26
26
  end
27
27
 
28
28
  send_tracker(@last_tracker) if @last_tracker && @last_tracker.any?
29
29
  end
30
30
 
31
- end
31
+ end
@@ -20,29 +20,9 @@ class Tracksperanto::Middleware::Base
20
20
  super
21
21
  end
22
22
 
23
- # Called on export start
24
- def start_export( img_width, img_height)
25
- @exporter.start_export(img_width, img_height)
23
+ %w( start_export start_tracker_segment end_tracker_segment
24
+ export_point end_export).each do | m |
25
+ define_method(m){|*a| @exporter.send(m, *a)}
26
26
  end
27
-
28
- # Called on export end
29
- def end_export
30
- @exporter.end_export
31
- end
32
-
33
- # Called on tracker start, one for each tracker. Start of the next tracker
34
- # signifies that the previous tracker has passed by
35
- def start_tracker_segment(tracker_name)
36
- @exporter.start_tracker_segment(tracker_name)
37
- end
38
-
39
- # Called on tracker end
40
- def end_tracker_segment
41
- @exporter.end_tracker_segment
42
- end
43
-
44
- # Called for each tracker keyframe
45
- def export_point(at_frame_i, abs_float_x, abs_float_y, float_residual)
46
- @exporter.export_point(at_frame_i, abs_float_x, abs_float_y, float_residual)
47
- end
48
- end
27
+
28
+ end
@@ -2,10 +2,6 @@
2
2
  class Tracksperanto::Middleware::Golden < Tracksperanto::Middleware::Base
3
3
  attr_accessor :enabled
4
4
 
5
- def enabled
6
- @enabled || false
7
- end
8
-
9
5
  def export_point(frame, float_x, float_y, float_residual)
10
6
  super(frame, float_x, float_y, (enabled ? 0.0 : float_residual))
11
7
  end
@@ -19,9 +19,4 @@ class Tracksperanto::Middleware::Reformat < Tracksperanto::Middleware::Base
19
19
  @exporter = Tracksperanto::Middleware::Scaler.new(@exporter, :x_factor => x_factor, :y_factor => y_factor)
20
20
  super
21
21
  end
22
-
23
- def end_export
24
- @exporter = @stash
25
- @exporter.end_export
26
- end
27
22
  end
@@ -1,15 +1,10 @@
1
1
  # Slips the keyframe positions by a specific integer amount of frames, positive values slip forward (later in time). Useful if you just edited some stuff onto
2
2
  # the beginning if your sequence and need to extend your tracks.
3
3
  class Tracksperanto::Middleware::Slipper < Tracksperanto::Middleware::Base
4
- DEFAULT_SLIP = 0
5
4
  attr_accessor :slip
6
5
  cast_to_int :slip
7
6
 
8
- def slip
9
- @slip.to_i || DEFAULT_SLIP
10
- end
11
-
12
7
  def export_point(frame, float_x, float_y, float_residual)
13
- super(frame + slip, float_x, float_y, float_residual)
8
+ super(frame + @slip.to_i, float_x, float_y, float_residual)
14
9
  end
15
10
  end
data/lib/pipeline/base.rb CHANGED
@@ -118,7 +118,6 @@ class Tracksperanto::Pipeline::Base
118
118
 
119
119
  accumulator = Tracksperanto::Accumulator.new
120
120
  importer.receiver = accumulator
121
- @ios << accumulator # Ensure the accumulator gets closed and tempfile unlinked
122
121
 
123
122
  importer.stream_parse(io_with_progress)
124
123
 
@@ -177,4 +176,4 @@ class Tracksperanto::Pipeline::Base
177
176
  @ios ||= []
178
177
  @ios.push(File.open(path_to_file, "wb"))[-1]
179
178
  end
180
- end
179
+ end
data/lib/tracksperanto.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  require 'stringio'
2
2
  require 'delegate'
3
+ require 'forwardable'
3
4
  require 'tempfile'
4
5
 
5
6
  module Tracksperanto
6
7
  PATH = File.expand_path(File.dirname(__FILE__))
7
- VERSION = '2.1.0'
8
+ VERSION = '2.1.1'
8
9
 
9
10
  module Import; end
10
11
  module Export; end
@@ -106,4 +107,4 @@ end
106
107
  # Load pipelines
107
108
  Dir.glob(File.dirname(__FILE__) + '/pipeline/*.rb').sort.each do | i |
108
109
  require i
109
- end
110
+ end
@@ -1,41 +1,42 @@
1
1
  # An accumulator buffer for Ruby objects. Use it to sequentially store a shitload
2
2
  # of objects on disk and then retreive them one by one. Make sure to call #close! when done with it to
3
3
  # discard the stored blob. This object is intended to be used as a Tracksperanto::Import::Base#receiver
4
- class Tracksperanto::Accumulator < DelegateClass(IO)
4
+ class Tracksperanto::Accumulator
5
5
 
6
6
  # Stores the number of objects stored so far
7
7
  attr_reader :num_objects
8
+ alias_method :length, :num_objects
8
9
 
9
10
  def initialize
10
- __setobj__(Tracksperanto::BufferIO.new)
11
+ @store = Tracksperanto::BufferIO.new
11
12
  @num_objects = 0
13
+ super
12
14
  end
13
15
 
14
16
  # Store an object
15
17
  def push(object_to_store)
16
-
17
18
  @num_objects += 1
18
-
19
19
  d = Marshal.dump(object_to_store)
20
- bytelen = d.size
21
- write(bytelen)
22
- write("\t")
23
- write(d)
24
- write("\n")
20
+ [d.size, "\t", d, "\n"].map(&@store.method(:write))
25
21
  end
26
22
 
27
23
  # Retreive each stored object in succession and unlink the buffer
28
24
  def each_object_with_index
29
- rewind
30
- @num_objects.times { |i| yield(recover_object, i - 1) }
25
+ begin
26
+ @store.rewind
27
+ @num_objects.times { |i| yield(recover_object, i - 1) }
28
+ ensure
29
+ @store.close!
30
+ end
31
31
  end
32
+
32
33
 
33
34
  private
34
35
 
35
36
  def recover_object
36
37
  # Up to the tab is the amount of bytes to read
37
- demarshal_bytes = gets("\t").strip.to_i
38
+ demarshal_bytes = @store.gets("\t").strip.to_i
38
39
  # Then read the bytes and unmarshal it
39
- Marshal.load(read(demarshal_bytes))
40
+ Marshal.load(@store.read(demarshal_bytes))
40
41
  end
41
- end
42
+ end
@@ -14,15 +14,12 @@ class Tracksperanto::BufferIO < DelegateClass(IO)
14
14
  def write(s)
15
15
  returning(super) { replace_with_tempfile_if_needed }
16
16
  end
17
+ alias_method :<<, :write
17
18
 
18
19
  def puts(s)
19
20
  returning(super) { replace_with_tempfile_if_needed }
20
21
  end
21
22
 
22
- def <<(s)
23
- returning(super) { replace_with_tempfile_if_needed }
24
- end
25
-
26
23
  def putc(c)
27
24
  returning(super) { replace_with_tempfile_if_needed }
28
25
  end
@@ -1,20 +1,32 @@
1
1
  # Many importers use this as a standard. This works like a wrapper for any
2
- # IO object with a couple extra methods added.
2
+ # IO object with a couple extra methods added. Note that if you use this in an
3
+ # importer you need to wrap the incoming input with it yourself (that is, an IO passed
4
+ # to the import module will NOT be wrapped into this already)
5
+ #
6
+ # io = ExtIO.new(my_open_file)
7
+ # io.gets_non_empty #=> "This is the first line after 2000 linebreaks"
8
+ #
3
9
  class Tracksperanto::ExtIO < DelegateClass(IO)
4
10
  def initialize(with)
5
11
  __setobj__ with
6
12
  end
7
13
 
14
+ # Similar to IO#gets however it will also strip the returned result. This is useful
15
+ # for doing
16
+ # while non_empty_str = io.gets_and_strip
17
+ # because you don't have to check for io.eof? all the time or see if the string is not nil
8
18
  def gets_and_strip
9
19
  s = gets
10
20
  s ? s.strip : nil
11
21
  end
12
22
 
23
+ # Similar to IO#gets but it skips empty lines and the first line returned will actually contain something
13
24
  def gets_non_empty
14
- line = gets
15
- return nil if line.nil?
16
- s = line.strip
17
- return gets_non_empty if s.empty?
18
- s
25
+ until eof?
26
+ line = gets
27
+ return nil if line.nil?
28
+ s = line.strip
29
+ return s unless s.empty?
30
+ end
19
31
  end
20
32
  end
@@ -1,39 +1,39 @@
1
- Parabolic_1_from_top_left 0 -1.000000 -1.000000 15
2
- Parabolic_1_from_top_left 1 -0.900000 -0.620000 7
3
- Parabolic_1_from_top_left 2 -0.800000 -0.280000 7
4
- Parabolic_1_from_top_left 3 -0.700000 0.020000 7
5
- Parabolic_1_from_top_left 4 -0.600000 0.280000 7
6
- Parabolic_1_from_top_left 5 -0.500000 0.500000 7
7
- Parabolic_1_from_top_left 6 -0.400000 0.680000 7
8
- Parabolic_1_from_top_left 7 -0.300000 0.820000 7
9
- Parabolic_1_from_top_left 8 -0.200000 0.920000 7
10
- Parabolic_1_from_top_left 9 -0.100000 0.980000 7
11
- Parabolic_1_from_top_left 12 0.200000 0.920000 15
12
- Parabolic_1_from_top_left 13 0.300000 0.820000 7
13
- Parabolic_1_from_top_left 14 0.400000 0.680000 7
14
- Parabolic_1_from_top_left 15 0.500000 0.500000 7
15
- Parabolic_1_from_top_left 16 0.600000 0.280000 7
16
- Parabolic_1_from_top_left 17 0.700000 0.020000 7
17
- Parabolic_1_from_top_left 18 0.800000 -0.280000 7
18
- Parabolic_1_from_top_left 19 0.900000 -0.620000 7
19
- Parabolic_1_from_top_left 20 1.000000 -1.000000 7
20
- Parabolic_2_from_bottom_right 0 1.000000 1.000000 15
21
- Parabolic_2_from_bottom_right 1 0.900000 0.620000 7
22
- Parabolic_2_from_bottom_right 2 0.800000 0.280000 7
23
- Parabolic_2_from_bottom_right 3 0.700000 -0.020000 7
24
- Parabolic_2_from_bottom_right 4 0.600000 -0.280000 7
25
- Parabolic_2_from_bottom_right 5 0.500000 -0.500000 7
26
- Parabolic_2_from_bottom_right 6 0.400000 -0.680000 7
27
- Parabolic_2_from_bottom_right 7 0.300000 -0.820000 7
28
- Parabolic_2_from_bottom_right 8 0.200000 -0.920000 7
29
- Parabolic_2_from_bottom_right 9 0.100000 -0.980000 7
30
- Parabolic_2_from_bottom_right 12 -0.200000 -0.920000 15
31
- Parabolic_2_from_bottom_right 13 -0.300000 -0.820000 7
32
- Parabolic_2_from_bottom_right 14 -0.400000 -0.680000 7
33
- Parabolic_2_from_bottom_right 15 -0.500000 -0.500000 7
34
- Parabolic_2_from_bottom_right 16 -0.600000 -0.280000 7
35
- Parabolic_2_from_bottom_right 17 -0.700000 -0.020000 7
36
- Parabolic_2_from_bottom_right 18 -0.800000 0.280000 7
37
- Parabolic_2_from_bottom_right 19 -0.900000 0.620000 7
38
- Parabolic_2_from_bottom_right 20 -1.000000 1.000000 7
1
+ Parabolic1FromTopLeft 0 -1.000000 -1.000000 15
2
+ Parabolic1FromTopLeft 1 -0.900000 -0.620000 7
3
+ Parabolic1FromTopLeft 2 -0.800000 -0.280000 7
4
+ Parabolic1FromTopLeft 3 -0.700000 0.020000 7
5
+ Parabolic1FromTopLeft 4 -0.600000 0.280000 7
6
+ Parabolic1FromTopLeft 5 -0.500000 0.500000 7
7
+ Parabolic1FromTopLeft 6 -0.400000 0.680000 7
8
+ Parabolic1FromTopLeft 7 -0.300000 0.820000 7
9
+ Parabolic1FromTopLeft 8 -0.200000 0.920000 7
10
+ Parabolic1FromTopLeft 9 -0.100000 0.980000 7
11
+ Parabolic1FromTopLeft 12 0.200000 0.920000 15
12
+ Parabolic1FromTopLeft 13 0.300000 0.820000 7
13
+ Parabolic1FromTopLeft 14 0.400000 0.680000 7
14
+ Parabolic1FromTopLeft 15 0.500000 0.500000 7
15
+ Parabolic1FromTopLeft 16 0.600000 0.280000 7
16
+ Parabolic1FromTopLeft 17 0.700000 0.020000 7
17
+ Parabolic1FromTopLeft 18 0.800000 -0.280000 7
18
+ Parabolic1FromTopLeft 19 0.900000 -0.620000 7
19
+ Parabolic1FromTopLeft 20 1.000000 -1.000000 7
20
+ Parabolic2FromBottomRight 0 1.000000 1.000000 15
21
+ Parabolic2FromBottomRight 1 0.900000 0.620000 7
22
+ Parabolic2FromBottomRight 2 0.800000 0.280000 7
23
+ Parabolic2FromBottomRight 3 0.700000 -0.020000 7
24
+ Parabolic2FromBottomRight 4 0.600000 -0.280000 7
25
+ Parabolic2FromBottomRight 5 0.500000 -0.500000 7
26
+ Parabolic2FromBottomRight 6 0.400000 -0.680000 7
27
+ Parabolic2FromBottomRight 7 0.300000 -0.820000 7
28
+ Parabolic2FromBottomRight 8 0.200000 -0.920000 7
29
+ Parabolic2FromBottomRight 9 0.100000 -0.980000 7
30
+ Parabolic2FromBottomRight 12 -0.200000 -0.920000 15
31
+ Parabolic2FromBottomRight 13 -0.300000 -0.820000 7
32
+ Parabolic2FromBottomRight 14 -0.400000 -0.680000 7
33
+ Parabolic2FromBottomRight 15 -0.500000 -0.500000 7
34
+ Parabolic2FromBottomRight 16 -0.600000 -0.280000 7
35
+ Parabolic2FromBottomRight 17 -0.700000 -0.020000 7
36
+ Parabolic2FromBottomRight 18 -0.800000 0.280000 7
37
+ Parabolic2FromBottomRight 19 -0.900000 0.620000 7
38
+ Parabolic2FromBottomRight 20 -1.000000 1.000000 7
39
39
  SingleFrame 0 0.010417 -0.018519 15
@@ -20,4 +20,4 @@ class MuxTest < Test::Unit::TestCase
20
20
  mux.end_tracker_segment
21
21
  mux.end_export
22
22
  end
23
- end
23
+ end
@@ -12,4 +12,4 @@ class SynthEyesExportTest < Test::Unit::TestCase
12
12
  assert_equal "syntheyes_2dt.txt", Tracksperanto::Export::SynthEyes.desc_and_extension
13
13
  assert_equal "Syntheyes 2D tracker paths file", Tracksperanto::Export::SynthEyes.human_name
14
14
  end
15
- end
15
+ end
@@ -0,0 +1,349 @@
1
+ // Shake v4.10.0606 - (c) Apple Computer, Inc. 1998-2006. All Rights Reserved.
2
+ // Apple, the Apple logo and Shake are trademarks of Apple Computer, Inc., registered in the U.S. and other countries.
3
+
4
+
5
+ SetTimeRange("292023-292283");
6
+ SetFieldRendering(0);
7
+ SetFps(25);
8
+ SetMotionBlur(1, 1, 0);
9
+ SetQuality(1);
10
+ SetUseProxy("Base");
11
+ SetProxyFilter("default");
12
+ SetPixelScale(1, 1);
13
+ SetUseProxyOnMissing(1);
14
+ SetDefaultWidth(1920);
15
+ SetDefaultHeight(1080);
16
+ SetDefaultBytes(2);
17
+ SetDefaultAspect(1);
18
+ SetDefaultViewerAspect(1);
19
+ SetMacroCheck(2);
20
+ SetTimecodeMode("25 FPS");
21
+
22
+ DefineProxyPath("../<dir1>/<name>.<range>.<format>", 1, 1, -1, "Auto", 0, 1, 0, "",1);
23
+ DefineProxyPath("../<dir1>/full/<name>_full.<range>.iff", 1, 1, 1, "Auto", 1, 1, 1, "/Volumes/P|/Volumes/Localdisk;/Volumes/O|/Volumes/Localdisk;/Volumes/R|/Volumes/Localdisk;");
24
+ DefineProxyPath("../<dir1>/half/<name>_half.<range>.iff", 0.5, 1, 1, "Auto", 1, 1, 2, "/Volumes/P|/Volumes/Localdisk;/Volumes/O|/Volumes/Localdisk;/Volumes/R|/Volumes/Localdisk;");
25
+ DefineProxyPath("../<dir1>/qtr/<name>_qtr.<range>.iff", 0.25, 1, 1, "Auto", 0, 1, 3, "/Volumes/P|/Volumes/Localdisk;/Volumes/O|/Volumes/Localdisk;/Volumes/R|/Volumes/Localdisk;");
26
+ SetAudio("100W@E0000qFdsuHW962Dl9BOW0mWa06w7mCJ000000000008");
27
+
28
+ // Input nodes
29
+
30
+ redacted = SFileIn("redacted@@@@@@@.dpx", "Auto", 0, 0, "v1.1",
31
+ "3", "", "//Bigbuk/Volumes/Localdisk/_projekte/DWDNW/0015/full/0015__full.<range>.iff",
32
+ 1, 1, "Auto", "//Bigbuk/Volumes/Localdisk/_projekte/DWDNW/0015/half/0015__half.<range>.iff",
33
+ 0.5, 1, "Auto", "//Bigbuk/Volumes/Localdisk/_projekte/DWDNW/0015/qtr/0015__qtr.<range>.iff",
34
+ 0.25, 1, "Auto");
35
+ IRetime(redacted, 292022, 292023, 292284, "Freeze", "Freeze");
36
+
37
+ // Processing nodes
38
+
39
+ Reorder1 = Reorder(redacted, "ggg");
40
+ Stabilize1 = Stabilize(redacted, 1, 0, "1 point", (Tracker1.track2X+Tracker1.track1X)/2,
41
+ (Tracker1.track2Y+Tracker1.track1Y)/2, 1, 1, 2*width/3, height/3,
42
+ 0, 0, 2*width/3, 2*height/3, width/3, 2*height/3, "default",
43
+ xFilter, "trsx", 0, 0.5, 0, 1, 1, 0, 1, "v2.0", 584045, "1/64",
44
+ "luminance", 0.3, 0.59, 0.11, 0.75, "use start frame", 0.5,
45
+ "stop", 0, 0, 25, "track1", 545.1935, 631.5935, 278.4805,
46
+ 364.880524, 516.3935, 660.3935, 249.680511, 393.6805, "track2",
47
+ 1244, 1316, 324, 396, 1208, 1352, 288, 432, "track3", 1244,
48
+ 1316, 684, 756, 1208, 1352, 648, 792, "track4", 604, 676,
49
+ 684, 756, 568, 712, 648, 792);
50
+ Blur1 = Blur(Reorder1, 16.7, xPixels/GetDefaultAspect(), 0, "gauss",
51
+ xFilter, "rgba");
52
+ Expand1 = Expand(Blur1, 0.12, 0.12, 0.12, 0, 0.4133, 0.4133,
53
+ 0.4133, 1);
54
+ Blur2 = Blur(Expand1, 8, xPixels/GetDefaultAspect(), 0, "gauss",
55
+ xFilter, "rgba");
56
+ Tracker1 = Tracker(Blur2, "292023-292283", "1/64", "luminance",
57
+ 0.75, "use start frame", 0.5, "stop", 1, 292023, "v2.0",
58
+ 0.3, 0.59, 0.11, 0, 10, "track1", Linear(0,554.292@292023,553.98@292024,554.355@292025,554.776@292026,554.636@292027,554.183@292028,553.855@292029,554.214@292030,554.573@292031,554.542@292032,554.323@292033,554.339@292034,554.776@292035,555.214@292036,555.526@292037,555.026@292038,555.011@292039,555.48@292040,555.636@292041,556.151@292042,557.136@292043,557.558@292044,558.308@292045,558.651@292046,559.245@292047,559.745@292048,560.605@292049,561.37@292050,562.495@292051,563.386@292052,564.12@292053,565.62@292054,567.245@292055,568.417@292056,570.542@292057,571.948@292058,573.448@292059,575.448@292060,576.667@292061,577.589@292062,578.792@292063,579.823@292064,580.917@292065,581.651@292066,582.605@292067,582.901@292068,583.651@292069,585.011@292070,585.87@292071,586.386@292072,586.105@292073,586.183@292074,586.636@292075,587.464@292076,587.823@292077,587.745@292078,587.589@292079,587.589@292080,587.839@292081,588.058@292082,588.026@292083,588.745@292084,589.339@292085,589.808@292086,589.917@292087,589.651@292088,589.792@292089,590.417@292090,590.761@292091,590.87@292092,590.355@292093,589.948@292094,590.37@292095,590.542@292096,590.667@292097,590.855@292098,591.417@292099,592.214@292100,593.23@292101,593.12@292102,592.761@292103,592.917@292104,593.542@292105,593.464@292106,593.48@292107,593.683@292108,594.776@292109,595.98@292110,597.511@292111,598.823@292112,600.214@292113,601.886@292114,604.605@292115,607.667@292116,611.401@292117,614.776@292118,617.948@292119,621.214@292120,624.245@292121,627.355@292122,630.011@292123,632.573@292124,634.386@292125,636.714@292126,638.105@292127,639.605@292128,641.026@292129,642.026@292130,642.401@292131,641.995@292132,641.089@292133,640.589@292134,640.886@292135,640.855@292136,641.23@292137,640.808@292138,641.089@292139,641.605@292140,641.698@292141,641.745@292142,641.464@292143,641.526@292144,641.48@292145,641.776@292146,641.214@292147,640.73@292148,640.198@292149,640.526@292150,640.448@292151,640.448@292152,640.761@292153,640.651@292154,641.167@292155,641.355@292156,641.167@292157,641.042@292158,640.761@292159,641.245@292160,641.433@292161,641.245@292162,641.073@292163,641.183@292164,641.542@292165,641.573@292166,641.136@292167,641.105@292168,640.667@292169,640.995@292170,640.855@292171,640.698@292172,640.714@292173,640.745@292174,641.167@292175,641.261@292176,641.198@292177,641.12@292178,640.73@292179,640.683@292180,640.886@292181,641.167@292182,640.776@292183,640.808@292184,640.698@292185,640.683@292186,640.776@292187,640.698@292188,640.823@292189,641.136@292190,641.026@292191,640.901@292192,640.667@292193,640.761@292194,641.198@292195,641.026@292196,641.12@292197,640.855@292198,640.683@292199,640.542@292200,640.839@292201,640.933@292202,640.698@292203,640.542@292204,640.636@292205,640.526@292206,640.245@292207,640.355@292208,640.073@292209,640.339@292210,640.308@292211,640.011@292212,639.573@292213,639.698@292214,639.776@292215,640.026@292216,639.808@292217,639.339@292218,639.37@292219,639.448@292220,639.62@292221,639.855@292222,639.198@292223,638.245@292224,638.448@292225,637.62@292226,637.136@292227,636.995@292228,636.573@292229,636.105@292230,635.323@292231,633.714@292232,631.651@292233,629.714@292234,628.058@292235,626.605@292236,624.651@292237,623.62@292238,622.323@292239,622.12@292240,621.87@292241,621.339@292242,621.198@292243,620.776@292244,620.886@292245,621.011@292246,621.089@292247,621.198@292248,621.714@292249,622.058@292250,622.245@292251,621.964@292252,622.042@292253,622.417@292254,622.901@292255,623.339@292256,623.089@292257,622.839@292258,622.823@292259,623.698@292260,623.62@292261,623.917@292262,624.089@292263,623.651@292264,623.417@292265,623.073@292266,622.651@292267,622.636@292268,622.23@292269,622.073@292270,621.62@292271,620.651@292272,620.105@292273,618.98@292274,617.495@292275,614.698@292276,612.058@292277,608.542@292278,604.839@292279,601.73@292280,597.964@292281,593.48@292282,589.136@292283),
59
+ Linear(0,321.705@292023,322.017@292024,321.299@292025,321.471@292026,322.174@292027,322.158@292028,321.33@292029,321.424@292030,322.189@292031,321.877@292032,321.361@292033,322.096@292034,321.517@292035,321.486@292036,323.064@292037,322.439@292038,322.955@292039,322.533@292040,323.096@292041,322.377@292042,322.533@292043,323.111@292044,322.408@292045,323.236@292046,323.174@292047,323.142@292048,322.408@292049,322.377@292050,322.346@292051,322.486@292052,322.377@292053,321.158@292054,321.517@292055,321.08@292056,320.955@292057,320.064@292058,320.267@292059,319.236@292060,319.08@292061,319.08@292062,319.205@292063,319.814@292064,320.08@292065,319.346@292066,320.221@292067,320.111@292068,319.533@292069,319.908@292070,320.283@292071,319.924@292072,320.924@292073,321.205@292074,320.971@292075,321.221@292076,320.471@292077,320.314@292078,321.127@292079,321.221@292080,320.986@292081,320.971@292082,320.939@292083,320.471@292084,320.283@292085,320.814@292086,320.549@292087,320.892@292088,320.127@292089,320.939@292090,320.299@292091,321.174@292092,321.002@292093,320.424@292094,320.533@292095,320.486@292096,320.111@292097,320.236@292098,320.221@292099,320.877@292100,321.033@292101,321.064@292102,320.424@292103,320.346@292104,321.236@292105,321.205@292106,322.017@292107,321.174@292108,322.127@292109,322.236@292110,321.283@292111,321.486@292112,321.377@292113,321.111@292114,321.314@292115,321.142@292116,320.986@292117,320.971@292118,320.471@292119,321.096@292120,320.877@292121,320.939@292122,321.158@292123,321.517@292124,321.111@292125,321.174@292126,321.33@292127,321.314@292128,322.142@292129,321.939@292130,322.424@292131,322.096@292132,322.111@292133,322.142@292134,322.174@292135,321.424@292136,321.049@292137,319.971@292138,319.877@292139,318.517@292140,318.189@292141,317.502@292142,316.486@292143,314.205@292144,312.189@292145,309.408@292146,306.33@292147,302.986@292148,300.221@292149,298.486@292150,297.346@292151,296.299@292152,295.439@292153,296.017@292154,295.471@292155,296.189@292156,296.408@292157,296.174@292158,296.314@292159,296.033@292160,296.471@292161,296.471@292162,297.049@292163,296.424@292164,296.517@292165,296.205@292166,296.267@292167,297.267@292168,296.955@292169,296.939@292170,296.377@292171,296.924@292172,296.424@292173,296.158@292174,296.408@292175,296.096@292176,296.392@292177,297.189@292178,297.111@292179,297.174@292180,297.283@292181,296.517@292182,297.424@292183,298.002@292184,297.236@292185,297.455@292186,297.096@292187,297.33@292188,297.549@292189,297.408@292190,298.033@292191,298.049@292192,297.924@292193,298.111@292194,298.142@292195,298.096@292196,297.455@292197,298.236@292198,298.158@292199,298.189@292200,298.502@292201,298.346@292202,298.236@292203,298.111@292204,298.189@292205,298.377@292206,298.205@292207,298.533@292208,299.924@292209,300.064@292210,300.408@292211,301.049@292212,301.049@292213,301.299@292214,301.908@292215,303.299@292216,303.877@292217,304.392@292218,304.533@292219,305.924@292220,306.939@292221,307.924@292222,307.033@292223,307.267@292224,308.064@292225,308.189@292226,309.111@292227,309.439@292228,310.205@292229,310.236@292230,310.361@292231,310.267@292232,311.08@292233,311.471@292234,313.455@292235,314.392@292236,315.283@292237,316.049@292238,317.08@292239,317.939@292240,318.096@292241,319.158@292242,319.111@292243,319.439@292244,320.392@292245,320.283@292246,319.221@292247,319.267@292248,319.439@292249,319.971@292250,319.533@292251,319.221@292252,319.111@292253,318.392@292254,317.002@292255,316.346@292256,315.361@292257,315.346@292258,315.439@292259,316.096@292260,316.158@292261,316.174@292262,315.455@292263,315.361@292264,314.517@292265,315.252@292266,316.502@292267,318.189@292268,318.111@292269,318.408@292270,318.346@292271,317.158@292272,317.221@292273,317.408@292274,317.096@292275,317.096@292276,317.096@292277,317.455@292278,318.346@292279,319.158@292280,320.408@292281,321.096@292282,321.377@292283),
60
+ Linear(0,1@292023,0.9861@292024,0.9867@292025,0.9901@292026,0.9875@292027,0.9873@292028,0.988@292029,0.9879@292030,0.9882@292031,0.9873@292032,0.9885@292033,0.9889@292034,0.9901@292035,0.9903@292036,0.9887@292037,0.9875@292038,0.987@292039,0.9852@292040,0.9887@292041,0.9888@292042,0.9882@292043,0.9878@292044,0.9872@292045,0.9888@292046,0.9868@292047,0.9887@292048,0.9874@292049,0.9894@292050,0.9884@292051,0.9848@292052,0.9864@292053,0.9885@292054,0.991@292055,0.9895@292056,0.9875@292057,0.9882@292058,0.9885@292059,0.9851@292060,0.9884@292061,0.9897@292062,0.9874@292063,0.9883@292064,0.9895@292065,0.9867@292066,0.9858@292067,0.9864@292068,0.987@292069,0.9888@292070,0.9871@292071,0.9895@292072,0.9893@292073,0.9891@292074,0.989@292075,0.9899@292076,0.9876@292077,0.9886@292078,0.9894@292079,0.9879@292080,0.9883@292081,0.9896@292082,0.988@292083,0.9863@292084,0.9861@292085,0.9889@292086,0.9886@292087,0.9911@292088,0.9852@292089,0.9879@292090,0.9893@292091,0.99@292092,0.9884@292093,0.9863@292094,0.9892@292095,0.9875@292096,0.9877@292097,0.9875@292098,0.9897@292099,0.9888@292100,0.9907@292101,0.9903@292102,0.9865@292103,0.9903@292104,0.9895@292105,0.9883@292106,0.9884@292107,0.9892@292108,0.9872@292109,0.988@292110,0.9876@292111,0.9884@292112,0.99@292113,0.9857@292114,0.9886@292115,0.9851@292116,0.9877@292117,0.9887@292118,0.9872@292119,0.9856@292120,0.9891@292121,0.987@292122,0.9885@292123,0.9894@292124,0.9901@292125,0.9878@292126,0.9889@292127,0.9882@292128,0.9892@292129,0.9903@292130,0.9894@292131,0.9868@292132,0.9867@292133,0.9868@292134,0.9864@292135,0.9891@292136,0.9848@292137,0.9873@292138,0.991@292139,0.9849@292140,0.9883@292141,0.9904@292142,0.9916@292143,0.9866@292144,0.9893@292145,0.988@292146,0.9884@292147,0.9888@292148,0.9872@292149,0.9903@292150,0.9859@292151,0.9856@292152,0.9876@292153,0.988@292154,0.9883@292155,0.9879@292156,0.9888@292157,0.9871@292158,0.9866@292159,0.9865@292160,0.9848@292161,0.986@292162,0.9869@292163,0.989@292164,0.9872@292165,0.9866@292166,0.9882@292167,0.9881@292168,0.9882@292169,0.9889@292170,0.9876@292171,0.9848@292172,0.9869@292173,0.9885@292174,0.988@292175,0.9866@292176,0.9896@292177,0.987@292178,0.9877@292179,0.9881@292180,0.9887@292181,0.9888@292182,0.9888@292183,0.9868@292184,0.9889@292185,0.988@292186,0.9853@292187,0.9879@292188,0.9888@292189,0.987@292190,0.9874@292191,0.9894@292192,0.9882@292193,0.9893@292194,0.9892@292195,0.9893@292196,0.9861@292197,0.9881@292198,0.9898@292199,0.9895@292200,0.9906@292201,0.9882@292202,0.9872@292203,0.9895@292204,0.9879@292205,0.989@292206,0.9904@292207,0.9878@292208,0.9905@292209,0.9887@292210,0.987@292211,0.988@292212,0.9909@292213,0.9912@292214,0.9885@292215,0.9898@292216,0.9882@292217,0.9883@292218,0.988@292219,0.9888@292220,0.9863@292221,0.9863@292222,0.9894@292223,0.9843@292224,0.987@292225,0.989@292226,0.9874@292227,0.9878@292228,0.9883@292229,0.9897@292230,0.9876@292231,0.9872@292232,0.9899@292233,0.9901@292234,0.986@292235,0.9867@292236,0.9912@292237,0.9866@292238,0.991@292239,0.9916@292240,0.9871@292241,0.9877@292242,0.9899@292243,0.9882@292244,0.9878@292245,0.9905@292246,0.9891@292247,0.9899@292248,0.9892@292249,0.9879@292250,0.99@292251,0.9874@292252,0.9881@292253,0.9882@292254,0.9881@292255,0.9895@292256,0.9875@292257,0.9874@292258,0.9861@292259,0.9913@292260,0.99@292261,0.9893@292262,0.9897@292263,0.9893@292264,0.9895@292265,0.9898@292266,0.9883@292267,0.9882@292268,0.9871@292269,0.9865@292270,0.9898@292271,0.9865@292272,0.9864@292273,0.9869@292274,0.9888@292275,0.9862@292276,0.9881@292277,0.9886@292278,0.9897@292279,0.99@292280,0.9882@292281,0.9897@292282,0.9867@292283),
61
+ 514.8992, 590.3419, 291.277649, 349.5069, 489.227234, 616.013855,
62
+ 263.884338, 376.9002, Linear(0,554.292@292023,553.98@292024,554.355@292025,554.776@292026,554.636@292027,554.183@292028,553.855@292029,554.214@292030,554.573@292031,554.542@292032,554.323@292033,554.339@292034,554.776@292035,555.214@292036,555.526@292037,555.026@292038,555.011@292039,555.48@292040,555.636@292041,556.151@292042,557.136@292043,557.558@292044,558.308@292045,558.651@292046,559.245@292047,559.745@292048,560.605@292049,561.37@292050,562.495@292051,563.386@292052,564.12@292053,565.62@292054,567.245@292055,568.417@292056,570.542@292057,571.948@292058,573.448@292059,575.448@292060,576.667@292061,577.589@292062,578.792@292063,579.823@292064,580.917@292065,581.651@292066,582.605@292067,582.901@292068,583.651@292069,585.011@292070,585.87@292071,586.386@292072,586.105@292073,586.183@292074,586.636@292075,587.464@292076,587.823@292077,587.745@292078,587.589@292079,587.589@292080,587.839@292081,588.058@292082,588.026@292083,588.745@292084,589.339@292085,589.808@292086,589.917@292087,589.651@292088,589.792@292089,590.417@292090,590.761@292091,590.87@292092,590.355@292093,589.948@292094,590.37@292095,590.542@292096,590.667@292097,590.855@292098,591.417@292099,592.214@292100,593.23@292101,593.12@292102,592.761@292103,592.917@292104,593.542@292105,593.464@292106,593.48@292107,593.683@292108,594.776@292109,595.98@292110,597.511@292111,598.823@292112,600.214@292113,601.886@292114,604.605@292115,607.667@292116,611.401@292117,614.776@292118,617.948@292119,621.214@292120,624.245@292121,627.355@292122,630.011@292123,632.573@292124,634.386@292125,636.714@292126,638.105@292127,639.605@292128,641.026@292129,642.026@292130,642.401@292131,641.995@292132,641.089@292133,640.589@292134,640.886@292135,640.855@292136,641.23@292137,640.808@292138,641.089@292139,641.605@292140,641.698@292141,641.745@292142,641.464@292143,641.526@292144,641.48@292145,641.776@292146,641.214@292147,640.73@292148,640.198@292149,640.526@292150,640.448@292151,640.448@292152,640.761@292153,640.651@292154,641.167@292155,641.355@292156,641.167@292157,641.042@292158,640.761@292159,641.245@292160,641.433@292161,641.245@292162,641.073@292163,641.183@292164,641.542@292165,641.573@292166,641.136@292167,641.105@292168,640.667@292169,640.995@292170,640.855@292171,640.698@292172,640.714@292173,640.745@292174,641.167@292175,641.261@292176,641.198@292177,641.12@292178,640.73@292179,640.683@292180,640.886@292181,641.167@292182,640.776@292183,640.808@292184,640.698@292185,640.683@292186,640.776@292187,640.698@292188,640.823@292189,641.136@292190,641.026@292191,640.901@292192,640.667@292193,640.761@292194,641.198@292195,641.026@292196,641.12@292197,640.855@292198,640.683@292199,640.542@292200,640.839@292201,640.933@292202,640.698@292203,640.542@292204,640.636@292205,640.526@292206,640.245@292207,640.355@292208,640.073@292209,640.339@292210,640.308@292211,640.011@292212,639.573@292213,639.698@292214,639.776@292215,640.026@292216,639.808@292217,639.339@292218,639.37@292219,639.448@292220,639.62@292221,639.855@292222,639.198@292223,638.245@292224,638.448@292225,637.62@292226,637.136@292227,636.995@292228,636.573@292229,636.105@292230,635.323@292231,633.714@292232,631.651@292233,629.714@292234,628.058@292235,626.605@292236,624.651@292237,623.62@292238,622.323@292239,622.12@292240,621.87@292241,621.339@292242,621.198@292243,620.776@292244,620.886@292245,621.011@292246,621.089@292247,621.198@292248,621.714@292249,622.058@292250,622.245@292251,621.964@292252,622.042@292253,622.417@292254,622.901@292255,623.339@292256,623.089@292257,622.839@292258,622.823@292259,623.698@292260,623.62@292261,623.917@292262,624.089@292263,623.651@292264,623.417@292265,623.073@292266,622.651@292267,622.636@292268,622.23@292269,622.073@292270,621.62@292271,620.651@292272,620.105@292273,618.98@292274,617.495@292275,614.698@292276,612.058@292277,608.542@292278,604.839@292279,601.73@292280,597.964@292281,593.48@292282,589.136@292283),
63
+ Linear(0,321.705@292023,322.017@292024,321.299@292025,321.471@292026,322.174@292027,322.158@292028,321.33@292029,321.424@292030,322.189@292031,321.877@292032,321.361@292033,322.096@292034,321.517@292035,321.486@292036,323.064@292037,322.439@292038,322.955@292039,322.533@292040,323.096@292041,322.377@292042,322.533@292043,323.111@292044,322.408@292045,323.236@292046,323.174@292047,323.142@292048,322.408@292049,322.377@292050,322.346@292051,322.486@292052,322.377@292053,321.158@292054,321.517@292055,321.08@292056,320.955@292057,320.064@292058,320.267@292059,319.236@292060,319.08@292061,319.08@292062,319.205@292063,319.814@292064,320.08@292065,319.346@292066,320.221@292067,320.111@292068,319.533@292069,319.908@292070,320.283@292071,319.924@292072,320.924@292073,321.205@292074,320.971@292075,321.221@292076,320.471@292077,320.314@292078,321.127@292079,321.221@292080,320.986@292081,320.971@292082,320.939@292083,320.471@292084,320.283@292085,320.814@292086,320.549@292087,320.892@292088,320.127@292089,320.939@292090,320.299@292091,321.174@292092,321.002@292093,320.424@292094,320.533@292095,320.486@292096,320.111@292097,320.236@292098,320.221@292099,320.877@292100,321.033@292101,321.064@292102,320.424@292103,320.346@292104,321.236@292105,321.205@292106,322.017@292107,321.174@292108,322.127@292109,322.236@292110,321.283@292111,321.486@292112,321.377@292113,321.111@292114,321.314@292115,321.142@292116,320.986@292117,320.971@292118,320.471@292119,321.096@292120,320.877@292121,320.939@292122,321.158@292123,321.517@292124,321.111@292125,321.174@292126,321.33@292127,321.314@292128,322.142@292129,321.939@292130,322.424@292131,322.096@292132,322.111@292133,322.142@292134,322.174@292135,321.424@292136,321.049@292137,319.971@292138,319.877@292139,318.517@292140,318.189@292141,317.502@292142,316.486@292143,314.205@292144,312.189@292145,309.408@292146,306.33@292147,302.986@292148,300.221@292149,298.486@292150,297.346@292151,296.299@292152,295.439@292153,296.017@292154,295.471@292155,296.189@292156,296.408@292157,296.174@292158,296.314@292159,296.033@292160,296.471@292161,296.471@292162,297.049@292163,296.424@292164,296.517@292165,296.205@292166,296.267@292167,297.267@292168,296.955@292169,296.939@292170,296.377@292171,296.924@292172,296.424@292173,296.158@292174,296.408@292175,296.096@292176,296.392@292177,297.189@292178,297.111@292179,297.174@292180,297.283@292181,296.517@292182,297.424@292183,298.002@292184,297.236@292185,297.455@292186,297.096@292187,297.33@292188,297.549@292189,297.408@292190,298.033@292191,298.049@292192,297.924@292193,298.111@292194,298.142@292195,298.096@292196,297.455@292197,298.236@292198,298.158@292199,298.189@292200,298.502@292201,298.346@292202,298.236@292203,298.111@292204,298.189@292205,298.377@292206,298.205@292207,298.533@292208,299.924@292209,300.064@292210,300.408@292211,301.049@292212,301.049@292213,301.299@292214,301.908@292215,303.299@292216,303.877@292217,304.392@292218,304.533@292219,305.924@292220,306.939@292221,307.924@292222,307.033@292223,307.267@292224,308.064@292225,308.189@292226,309.111@292227,309.439@292228,310.205@292229,310.236@292230,310.361@292231,310.267@292232,311.08@292233,311.471@292234,313.455@292235,314.392@292236,315.283@292237,316.049@292238,317.08@292239,317.939@292240,318.096@292241,319.158@292242,319.111@292243,319.439@292244,320.392@292245,320.283@292246,319.221@292247,319.267@292248,319.439@292249,319.971@292250,319.533@292251,319.221@292252,319.111@292253,318.392@292254,317.002@292255,316.346@292256,315.361@292257,315.346@292258,315.439@292259,316.096@292260,316.158@292261,316.174@292262,315.455@292263,315.361@292264,314.517@292265,315.252@292266,316.502@292267,318.189@292268,318.111@292269,318.408@292270,318.346@292271,317.158@292272,317.221@292273,317.408@292274,317.096@292275,317.096@292276,317.096@292277,317.455@292278,318.346@292279,319.158@292280,320.408@292281,321.096@292282,321.377@292283),
64
+ 1, 1, "track2", Linear(0,552.761@292023,552.495@292024,552.761@292025,553.245@292026,553.12@292027,552.636@292028,552.386@292029,552.745@292030,553.042@292031,553.042@292032,552.87@292033,552.886@292034,553.23@292035,553.745@292036,553.964@292037,553.495@292038,553.542@292039,554.011@292040,554.12@292041,554.776@292042,555.573@292043,556.058@292044,556.792@292045,557.089@292046,557.761@292047,558.261@292048,559.026@292049,559.808@292050,560.964@292051,561.855@292052,562.605@292053,564.12@292054,565.808@292055,566.886@292056,569.058@292057,570.526@292058,571.917@292059,573.886@292060,575.198@292061,576.042@292062,577.276@292063,578.355@292064,579.401@292065,580.136@292066,581.073@292067,581.417@292068,582.042@292069,583.433@292070,584.355@292071,584.839@292072,584.589@292073,584.636@292074,585.136@292075,585.948@292076,586.355@292077,586.245@292078,586.011@292079,586.073@292080,586.323@292081,586.526@292082,586.526@292083,587.261@292084,587.901@292085,588.292@292086,588.37@292087,588.12@292088,588.308@292089,588.901@292090,589.23@292091,589.323@292092,588.901@292093,588.464@292094,588.823@292095,588.964@292096,589.105@292097,589.292@292098,589.948@292099,590.745@292100,591.714@292101,591.714@292102,591.292@292103,591.37@292104,591.98@292105,591.917@292106,591.964@292107,592.12@292108,593.214@292109,594.464@292110,596.058@292111,597.323@292112,598.745@292113,600.355@292114,603.089@292115,606.136@292116,609.823@292117,613.292@292118,616.417@292119,619.73@292120,622.792@292121,625.855@292122,628.48@292123,631.058@292124,632.886@292125,635.151@292126,636.605@292127,638.151@292128,639.48@292129,640.558@292130,640.87@292131,640.448@292132,639.589@292133,639.089@292134,639.37@292135,639.339@292136,639.776@292137,639.276@292138,639.605@292139,640.089@292140,640.167@292141,640.261@292142,639.964@292143,640.042@292144,639.964@292145,640.214@292146,639.636@292147,639.214@292148,638.636@292149,639.058@292150,638.948@292151,638.964@292152,639.261@292153,639.136@292154,639.589@292155,639.839@292156,639.636@292157,639.542@292158,639.23@292159,639.73@292160,639.901@292161,639.792@292162,639.573@292163,639.636@292164,640.073@292165,640.042@292166,639.651@292167,639.542@292168,639.136@292169,639.433@292170,639.355@292171,639.183@292172,639.198@292173,639.183@292174,639.605@292175,639.823@292176,639.714@292177,639.558@292178,639.167@292179,639.105@292180,639.386@292181,639.605@292182,639.261@292183,639.245@292184,639.198@292185,639.183@292186,639.245@292187,639.167@292188,639.292@292189,639.542@292190,639.558@292191,639.355@292192,639.042@292193,639.261@292194,639.698@292195,639.48@292196,639.589@292197,639.386@292198,639.167@292199,639.042@292200,639.323@292201,639.323@292202,639.214@292203,638.98@292204,639.151@292205,638.98@292206,638.761@292207,638.886@292208,638.589@292209,638.808@292210,638.776@292211,638.495@292212,638.042@292213,638.151@292214,638.198@292215,638.495@292216,638.23@292217,637.87@292218,637.886@292219,637.901@292220,638.136@292221,638.308@292222,637.605@292223,636.792@292224,636.886@292225,636.105@292226,635.558@292227,635.48@292228,635.105@292229,634.605@292230,633.823@292231,632.167@292232,630.167@292233,628.183@292234,626.526@292235,625.089@292236,623.136@292237,622.105@292238,620.87@292239,620.698@292240,620.386@292241,619.792@292242,619.761@292243,619.198@292244,619.355@292245,619.48@292246,619.573@292247,619.761@292248,620.167@292249,620.542@292250,620.745@292251,620.417@292252,620.605@292253,620.901@292254,621.37@292255,621.808@292256,621.558@292257,621.292@292258,621.261@292259,622.151@292260,622.151@292261,622.401@292262,622.542@292263,622.214@292264,621.901@292265,621.573@292266,621.089@292267,621.089@292268,620.823@292269,620.636@292270,620.136@292271,619.167@292272,618.62@292273,617.464@292274,615.948@292275,613.23@292276,610.605@292277,607.042@292278,603.292@292279,600.23@292280,596.448@292281,591.948@292282,587.667@292283),
65
+ Linear(0,322.266@292023,322.172@292024,322.188@292025,322.234@292026,322.578@292027,322.531@292028,321.641@292029,321.797@292030,322.531@292031,322.453@292032,322.359@292033,322.5@292034,322.25@292035,321.719@292036,323.359@292037,322.75@292038,323.188@292039,322.828@292040,323.5@292041,322.609@292042,323.203@292043,323.406@292044,323.25@292045,323.625@292046,323.625@292047,323.594@292048,322.703@292049,322.688@292050,322.781@292051,322.766@292052,322.75@292053,321.719@292054,322.203@292055,321.531@292056,321.391@292057,320.438@292058,320.703@292059,319.719@292060,319.531@292061,319.391@292062,319.766@292063,320.359@292064,320.547@292065,319.781@292066,320.703@292067,320.344@292068,320.219@292069,320.359@292070,320.797@292071,320.25@292072,321.359@292073,321.594@292074,321.25@292075,321.562@292076,320.844@292077,320.797@292078,321.578@292079,321.688@292080,321.312@292081,321.359@292082,321.297@292083,321.172@292084,320.766@292085,321.406@292086,321.312@292087,321.266@292088,320.641@292089,321.203@292090,320.656@292091,321.641@292092,321.391@292093,320.766@292094,320.797@292095,321.203@292096,320.719@292097,320.75@292098,320.594@292099,321.391@292100,321.391@292101,321.609@292102,321.234@292103,320.641@292104,321.641@292105,321.609@292106,322.453@292107,321.641@292108,322.484@292109,322.703@292110,321.828@292111,322.188@292112,322.203@292113,321.406@292114,321.484@292115,321.562@292116,321.516@292117,321.328@292118,321.234@292119,321.406@292120,321.188@292121,321.406@292122,321.578@292123,322.281@292124,321.625@292125,321.609@292126,321.672@292127,321.766@292128,322.625@292129,322.422@292130,322.734@292131,322.453@292132,322.438@292133,322.516@292134,322.484@292135,322.203@292136,321.219@292137,320.391@292138,320.234@292139,319.234@292140,318.609@292141,318.297@292142,317.266@292143,314.625@292144,312.578@292145,309.688@292146,306.719@292147,303.328@292148,300.578@292149,299.266@292150,297.719@292151,297.266@292152,295.812@292153,296.328@292154,296.328@292155,296.406@292156,296.734@292157,296.656@292158,296.578@292159,296.469@292160,297.234@292161,297.25@292162,297.344@292163,296.688@292164,296.781@292165,296.344@292166,296.562@292167,297.75@292168,297.203@292169,297.234@292170,296.609@292171,297.344@292172,297.281@292173,296.578@292174,297.219@292175,296.469@292176,297.234@292177,297.578@292178,297.406@292179,297.531@292180,297.344@292181,297.312@292182,298.156@292183,298.578@292184,297.703@292185,298.172@292186,297.625@292187,297.562@292188,298.172@292189,297.781@292190,298.297@292191,298.281@292192,298.406@292193,298.656@292194,298.609@292195,298.359@292196,297.75@292197,298.578@292198,298.547@292199,298.5@292200,298.812@292201,298.625@292202,298.719@292203,298.531@292204,298.609@292205,298.641@292206,298.641@292207,299.234@292208,300.297@292209,300.422@292210,301.266@292211,301.359@292212,301.562@292213,301.578@292214,302.234@292215,303.734@292216,303.859@292217,305.156@292218,305.25@292219,306.297@292220,307.266@292221,308.359@292222,307.516@292223,307.672@292224,308.484@292225,308.609@292226,309.297@292227,310.188@292228,310.625@292229,310.5@292230,310.656@292231,310.578@292232,311.5@292233,312.25@292234,314.188@292235,315.312@292236,315.641@292237,316.438@292238,317.484@292239,318.516@292240,318.562@292241,319.562@292242,319.531@292243,320.234@292244,320.672@292245,320.656@292246,319.797@292247,319.75@292248,320.203@292249,320.406@292250,320.391@292251,319.312@292252,319.578@292253,318.828@292254,317.547@292255,317.172@292256,315.781@292257,315.75@292258,316.266@292259,316.438@292260,316.578@292261,316.516@292262,315.844@292263,316.203@292264,314.812@292265,315.641@292266,317.297@292267,318.453@292268,318.406@292269,318.781@292270,318.641@292271,317.484@292272,318.234@292273,318.25@292274,317.547@292275,317.406@292276,317.688@292277,317.875@292278,318.75@292279,319.719@292280,320.672@292281,321.562@292282,322@292283),
66
+ Linear(0,0.9861@292023,0.9854@292024,0.986@292025,0.9878@292026,0.9847@292027,0.988@292028,0.9856@292029,0.9863@292030,0.9876@292031,0.9852@292032,0.9835@292033,0.9866@292034,0.9877@292035,0.9849@292036,0.9847@292037,0.9851@292038,0.9862@292039,0.9843@292040,0.9861@292041,0.9861@292042,0.9873@292043,0.9872@292044,0.9861@292045,0.9873@292046,0.9867@292047,0.9882@292048,0.9867@292049,0.9837@292050,0.988@292051,0.9885@292052,0.9862@292053,0.9881@292054,0.9895@292055,0.9853@292056,0.9847@292057,0.9863@292058,0.9852@292059,0.9834@292060,0.9876@292061,0.987@292062,0.9872@292063,0.986@292064,0.9853@292065,0.9875@292066,0.9851@292067,0.988@292068,0.9872@292069,0.9861@292070,0.9857@292071,0.9872@292072,0.9864@292073,0.9872@292074,0.9878@292075,0.9882@292076,0.9873@292077,0.9877@292078,0.9859@292079,0.9867@292080,0.9859@292081,0.988@292082,0.9883@292083,0.9898@292084,0.987@292085,0.9851@292086,0.9805@292087,0.9876@292088,0.9859@292089,0.986@292090,0.9882@292091,0.9852@292092,0.9849@292093,0.985@292094,0.986@292095,0.987@292096,0.9872@292097,0.9845@292098,0.9868@292099,0.9836@292100,0.985@292101,0.9868@292102,0.9845@292103,0.985@292104,0.9835@292105,0.9829@292106,0.9859@292107,0.9858@292108,0.9833@292109,0.9874@292110,0.9856@292111,0.9846@292112,0.9876@292113,0.9848@292114,0.985@292115,0.9845@292116,0.9842@292117,0.9838@292118,0.984@292119,0.984@292120,0.985@292121,0.983@292122,0.9878@292123,0.9856@292124,0.9847@292125,0.9838@292126,0.9833@292127,0.9868@292128,0.9848@292129,0.9841@292130,0.9845@292131,0.9809@292132,0.985@292133,0.9846@292134,0.9857@292135,0.9845@292136,0.9848@292137,0.983@292138,0.9853@292139,0.9822@292140,0.9854@292141,0.9875@292142,0.9839@292143,0.9856@292144,0.987@292145,0.9854@292146,0.9861@292147,0.9853@292148,0.9814@292149,0.9864@292150,0.9853@292151,0.985@292152,0.9876@292153,0.9842@292154,0.9825@292155,0.9847@292156,0.9852@292157,0.9848@292158,0.9824@292159,0.9868@292160,0.9822@292161,0.9859@292162,0.9856@292163,0.9823@292164,0.9829@292165,0.983@292166,0.9822@292167,0.9858@292168,0.9836@292169,0.9843@292170,0.9841@292171,0.9849@292172,0.982@292173,0.9834@292174,0.983@292175,0.9836@292176,0.9858@292177,0.9833@292178,0.9831@292179,0.9861@292180,0.9847@292181,0.9846@292182,0.9836@292183,0.9822@292184,0.9843@292185,0.9812@292186,0.9825@292187,0.9827@292188,0.9818@292189,0.9837@292190,0.9816@292191,0.9847@292192,0.9831@292193,0.9848@292194,0.9857@292195,0.9857@292196,0.9827@292197,0.9852@292198,0.9841@292199,0.9861@292200,0.9872@292201,0.9826@292202,0.9874@292203,0.9883@292204,0.9834@292205,0.9826@292206,0.9852@292207,0.9843@292208,0.9866@292209,0.9842@292210,0.9867@292211,0.9844@292212,0.9884@292213,0.982@292214,0.9831@292215,0.9836@292216,0.9845@292217,0.986@292218,0.986@292219,0.9868@292220,0.9859@292221,0.9853@292222,0.9843@292223,0.986@292224,0.9877@292225,0.9856@292226,0.988@292227,0.9883@292228,0.9866@292229,0.9863@292230,0.9856@292231,0.9862@292232,0.9854@292233,0.9839@292234,0.987@292235,0.9867@292236,0.9883@292237,0.988@292238,0.9874@292239,0.9858@292240,0.9854@292241,0.9873@292242,0.985@292243,0.9861@292244,0.9854@292245,0.9879@292246,0.9874@292247,0.9853@292248,0.9886@292249,0.9871@292250,0.986@292251,0.9847@292252,0.9891@292253,0.9871@292254,0.9849@292255,0.9862@292256,0.9864@292257,0.985@292258,0.9857@292259,0.9894@292260,0.9888@292261,0.9856@292262,0.9884@292263,0.9875@292264,0.9845@292265,0.9887@292266,0.9882@292267,0.9883@292268,0.9862@292269,0.987@292270,0.9881@292271,0.9856@292272,0.9862@292273,0.9828@292274,0.9856@292275,0.9841@292276,0.9884@292277,0.9872@292278,0.9861@292279,0.9886@292280,0.9855@292281,0.9885@292282,1@292283),
67
+ 516.5887, 588.5887, 285.75, 357.75, 480.588684, 624.5887,
68
+ 249.75, 393.75, Linear(0,552.761@292023,552.495@292024,552.761@292025,553.245@292026,553.12@292027,552.636@292028,552.386@292029,552.745@292030,553.042@292031,553.042@292032,552.87@292033,552.886@292034,553.23@292035,553.745@292036,553.964@292037,553.495@292038,553.542@292039,554.011@292040,554.12@292041,554.776@292042,555.573@292043,556.058@292044,556.792@292045,557.089@292046,557.761@292047,558.261@292048,559.026@292049,559.808@292050,560.964@292051,561.855@292052,562.605@292053,564.12@292054,565.808@292055,566.886@292056,569.058@292057,570.526@292058,571.917@292059,573.886@292060,575.198@292061,576.042@292062,577.276@292063,578.355@292064,579.401@292065,580.136@292066,581.073@292067,581.417@292068,582.042@292069,583.433@292070,584.355@292071,584.839@292072,584.589@292073,584.636@292074,585.136@292075,585.948@292076,586.355@292077,586.245@292078,586.011@292079,586.073@292080,586.323@292081,586.526@292082,586.526@292083,587.261@292084,587.901@292085,588.292@292086,588.37@292087,588.12@292088,588.308@292089,588.901@292090,589.23@292091,589.323@292092,588.901@292093,588.464@292094,588.823@292095,588.964@292096,589.105@292097,589.292@292098,589.948@292099,590.745@292100,591.714@292101,591.714@292102,591.292@292103,591.37@292104,591.98@292105,591.917@292106,591.964@292107,592.12@292108,593.214@292109,594.464@292110,596.058@292111,597.323@292112,598.745@292113,600.355@292114,603.089@292115,606.136@292116,609.823@292117,613.292@292118,616.417@292119,619.73@292120,622.792@292121,625.855@292122,628.48@292123,631.058@292124,632.886@292125,635.151@292126,636.605@292127,638.151@292128,639.48@292129,640.558@292130,640.87@292131,640.448@292132,639.589@292133,639.089@292134,639.37@292135,639.339@292136,639.776@292137,639.276@292138,639.605@292139,640.089@292140,640.167@292141,640.261@292142,639.964@292143,640.042@292144,639.964@292145,640.214@292146,639.636@292147,639.214@292148,638.636@292149,639.058@292150,638.948@292151,638.964@292152,639.261@292153,639.136@292154,639.589@292155,639.839@292156,639.636@292157,639.542@292158,639.23@292159,639.73@292160,639.901@292161,639.792@292162,639.573@292163,639.636@292164,640.073@292165,640.042@292166,639.651@292167,639.542@292168,639.136@292169,639.433@292170,639.355@292171,639.183@292172,639.198@292173,639.183@292174,639.605@292175,639.823@292176,639.714@292177,639.558@292178,639.167@292179,639.105@292180,639.386@292181,639.605@292182,639.261@292183,639.245@292184,639.198@292185,639.183@292186,639.245@292187,639.167@292188,639.292@292189,639.542@292190,639.558@292191,639.355@292192,639.042@292193,639.261@292194,639.698@292195,639.48@292196,639.589@292197,639.386@292198,639.167@292199,639.042@292200,639.323@292201,639.323@292202,639.214@292203,638.98@292204,639.151@292205,638.98@292206,638.761@292207,638.886@292208,638.589@292209,638.808@292210,638.776@292211,638.495@292212,638.042@292213,638.151@292214,638.198@292215,638.495@292216,638.23@292217,637.87@292218,637.886@292219,637.901@292220,638.136@292221,638.308@292222,637.605@292223,636.792@292224,636.886@292225,636.105@292226,635.558@292227,635.48@292228,635.105@292229,634.605@292230,633.823@292231,632.167@292232,630.167@292233,628.183@292234,626.526@292235,625.089@292236,623.136@292237,622.105@292238,620.87@292239,620.698@292240,620.386@292241,619.792@292242,619.761@292243,619.198@292244,619.355@292245,619.48@292246,619.573@292247,619.761@292248,620.167@292249,620.542@292250,620.745@292251,620.417@292252,620.605@292253,620.901@292254,621.37@292255,621.808@292256,621.558@292257,621.292@292258,621.261@292259,622.151@292260,622.151@292261,622.401@292262,622.542@292263,622.214@292264,621.901@292265,621.573@292266,621.089@292267,621.089@292268,620.823@292269,620.636@292270,620.136@292271,619.167@292272,618.62@292273,617.464@292274,615.948@292275,613.23@292276,610.605@292277,607.042@292278,603.292@292279,600.23@292280,596.448@292281,591.948@292282,587.667@292283),
69
+ Linear(0,322.266@292023,322.172@292024,322.188@292025,322.234@292026,322.578@292027,322.531@292028,321.641@292029,321.797@292030,322.531@292031,322.453@292032,322.359@292033,322.5@292034,322.25@292035,321.719@292036,323.359@292037,322.75@292038,323.188@292039,322.828@292040,323.5@292041,322.609@292042,323.203@292043,323.406@292044,323.25@292045,323.625@292046,323.625@292047,323.594@292048,322.703@292049,322.688@292050,322.781@292051,322.766@292052,322.75@292053,321.719@292054,322.203@292055,321.531@292056,321.391@292057,320.438@292058,320.703@292059,319.719@292060,319.531@292061,319.391@292062,319.766@292063,320.359@292064,320.547@292065,319.781@292066,320.703@292067,320.344@292068,320.219@292069,320.359@292070,320.797@292071,320.25@292072,321.359@292073,321.594@292074,321.25@292075,321.562@292076,320.844@292077,320.797@292078,321.578@292079,321.688@292080,321.312@292081,321.359@292082,321.297@292083,321.172@292084,320.766@292085,321.406@292086,321.312@292087,321.266@292088,320.641@292089,321.203@292090,320.656@292091,321.641@292092,321.391@292093,320.766@292094,320.797@292095,321.203@292096,320.719@292097,320.75@292098,320.594@292099,321.391@292100,321.391@292101,321.609@292102,321.234@292103,320.641@292104,321.641@292105,321.609@292106,322.453@292107,321.641@292108,322.484@292109,322.703@292110,321.828@292111,322.188@292112,322.203@292113,321.406@292114,321.484@292115,321.562@292116,321.516@292117,321.328@292118,321.234@292119,321.406@292120,321.188@292121,321.406@292122,321.578@292123,322.281@292124,321.625@292125,321.609@292126,321.672@292127,321.766@292128,322.625@292129,322.422@292130,322.734@292131,322.453@292132,322.438@292133,322.516@292134,322.484@292135,322.203@292136,321.219@292137,320.391@292138,320.234@292139,319.234@292140,318.609@292141,318.297@292142,317.266@292143,314.625@292144,312.578@292145,309.688@292146,306.719@292147,303.328@292148,300.578@292149,299.266@292150,297.719@292151,297.266@292152,295.812@292153,296.328@292154,296.328@292155,296.406@292156,296.734@292157,296.656@292158,296.578@292159,296.469@292160,297.234@292161,297.25@292162,297.344@292163,296.688@292164,296.781@292165,296.344@292166,296.562@292167,297.75@292168,297.203@292169,297.234@292170,296.609@292171,297.344@292172,297.281@292173,296.578@292174,297.219@292175,296.469@292176,297.234@292177,297.578@292178,297.406@292179,297.531@292180,297.344@292181,297.312@292182,298.156@292183,298.578@292184,297.703@292185,298.172@292186,297.625@292187,297.562@292188,298.172@292189,297.781@292190,298.297@292191,298.281@292192,298.406@292193,298.656@292194,298.609@292195,298.359@292196,297.75@292197,298.578@292198,298.547@292199,298.5@292200,298.812@292201,298.625@292202,298.719@292203,298.531@292204,298.609@292205,298.641@292206,298.641@292207,299.234@292208,300.297@292209,300.422@292210,301.266@292211,301.359@292212,301.562@292213,301.578@292214,302.234@292215,303.734@292216,303.859@292217,305.156@292218,305.25@292219,306.297@292220,307.266@292221,308.359@292222,307.516@292223,307.672@292224,308.484@292225,308.609@292226,309.297@292227,310.188@292228,310.625@292229,310.5@292230,310.656@292231,310.578@292232,311.5@292233,312.25@292234,314.188@292235,315.312@292236,315.641@292237,316.438@292238,317.484@292239,318.516@292240,318.562@292241,319.562@292242,319.531@292243,320.234@292244,320.672@292245,320.656@292246,319.797@292247,319.75@292248,320.203@292249,320.406@292250,320.391@292251,319.312@292252,319.578@292253,318.828@292254,317.547@292255,317.172@292256,315.781@292257,315.75@292258,316.266@292259,316.438@292260,316.578@292261,316.516@292262,315.844@292263,316.203@292264,314.812@292265,315.641@292266,317.297@292267,318.453@292268,318.406@292269,318.781@292270,318.641@292271,317.484@292272,318.234@292273,318.25@292274,317.547@292275,317.406@292276,317.688@292277,317.875@292278,318.75@292279,319.719@292280,320.672@292281,321.562@292282,322@292283),
70
+ 1, 1);
71
+
72
+
73
+ // User Interface settings
74
+
75
+ SetKey(
76
+ "colorPicker.hex", "0",
77
+ "colorPicker.range", "32",
78
+ "globals.broadcastHighQuality", "1",
79
+ "globals.broadcastMonitorNumber", "2",
80
+ "globals.broadcastViewerAspectRatio", "1",
81
+ "globals.cacheMode", "2",
82
+ "globals.consoleLineLength", "120",
83
+ "globals.displayThumbnails", "1",
84
+ "globals.enhancedNodeView", "0",
85
+ "globals.fileBrowser.favorites", "/;$HOME;/Users/julik//nreal/;/Applications/Shake/;/Applications/Shake/doc/pix/;$HOME/Desktop/VFX_Projectery/Decathlon/;$HOME/Desktop/VFX_Projectery/Herocomplex/;/Code/apps/tracksperanto/test/export/;/Users/julik/Desktop/VFX_Projectery/Target/;",
86
+ "globals.fileBrowserExactList", "0",
87
+ "globals.fileBrowserFilterList", "0",
88
+ "globals.fileBrowserFullList", "0",
89
+ "globals.fileBrowserHeight", "540",
90
+ "globals.fileBrowserImageList", "0",
91
+ "globals.fileBrowserLC1", "230",
92
+ "globals.fileBrowserLC2", "70",
93
+ "globals.fileBrowserLC3", "110",
94
+ "globals.fileBrowserLC4", "245",
95
+ "globals.fileBrowserLC5", "175",
96
+ "globals.fileBrowserLC6", "65",
97
+ "globals.fileBrowserLC7", "111",
98
+ "globals.fileBrowserRIntSet", "0",
99
+ "globals.fileBrowserSC1", "211",
100
+ "globals.fileBrowserSC2", "211",
101
+ "globals.fileBrowserSC3", "211",
102
+ "globals.fileBrowserSeqList", "0",
103
+ "globals.fileBrowserShortList", "0",
104
+ "globals.fileBrowserWIntSet", "1",
105
+ "globals.fileBrowserWidth", "790",
106
+ "globals.fileBrowserfullPath", "0",
107
+ "globals.fontBlue", "1",
108
+ "globals.fontGreen", "1",
109
+ "globals.fontRed", "1",
110
+ "globals.gridBlue", "0.15",
111
+ "globals.gridEnabled", "0",
112
+ "globals.gridGreen", "0.15",
113
+ "globals.gridHeight", "40",
114
+ "globals.gridRed", "0.15",
115
+ "globals.gridVisible", "0",
116
+ "globals.gridWidth", "40",
117
+ "globals.layoutTightness", "40",
118
+ "globals.multiPlaneLocatorScale", "1",
119
+ "globals.noodleABlue", "1",
120
+ "globals.noodleAGreen", "1",
121
+ "globals.noodleARed", "1",
122
+ "globals.noodleAZBlue", "0.4",
123
+ "globals.noodleAZGreen", "0",
124
+ "globals.noodleAZRed", "0",
125
+ "globals.noodleBWABlue", "0.4",
126
+ "globals.noodleBWAGreen", "0.4",
127
+ "globals.noodleBWARed", "0.4",
128
+ "globals.noodleBWAZBlue", "0.4",
129
+ "globals.noodleBWAZGreen", "0",
130
+ "globals.noodleBWAZRed", "0",
131
+ "globals.noodleBWBlue", "0.15",
132
+ "globals.noodleBWGreen", "0.15",
133
+ "globals.noodleBWRed", "0.15",
134
+ "globals.noodleBWZBlue", "0.4",
135
+ "globals.noodleBWZGreen", "0",
136
+ "globals.noodleBWZRed", "0",
137
+ "globals.noodleBlue", "1",
138
+ "globals.noodleColorCoding", "2",
139
+ "globals.noodleGreen", "1",
140
+ "globals.noodleRGBABlue", "0.7",
141
+ "globals.noodleRGBAGreen", "0.7",
142
+ "globals.noodleRGBARed", "0.7",
143
+ "globals.noodleRGBAZBlue", "1",
144
+ "globals.noodleRGBAZGreen", "0.4",
145
+ "globals.noodleRGBAZRed", "0.4",
146
+ "globals.noodleRGBBlue", "0",
147
+ "globals.noodleRGBGreen", "0.7",
148
+ "globals.noodleRGBRed", "0.7",
149
+ "globals.noodleRGBZBlue", "0.8",
150
+ "globals.noodleRGBZGreen", "0.2",
151
+ "globals.noodleRGBZRed", "0.2",
152
+ "globals.noodleRed", "1",
153
+ "globals.noodleStipple16", "1061109567",
154
+ "globals.noodleStipple32", "-1",
155
+ "globals.noodleStipple8", "-1431655766",
156
+ "globals.noodleTension", "0.25",
157
+ "globals.noodleZBlue", "0.4",
158
+ "globals.noodleZGreen", "0",
159
+ "globals.noodleZRed", "0",
160
+ "globals.paintFrameMode", "1",
161
+ "globals.pdfBrowserPath", "",
162
+ "globals.proxyTog.cycle", "-1,0,0,0,0,-1",
163
+ "globals.renderModeTog.cycle", "2,0,0,2",
164
+ "globals.rotoAutoControlScale", "1",
165
+ "globals.rotoBuildColorBlue", "0.75",
166
+ "globals.rotoBuildColorGreen", "0.75",
167
+ "globals.rotoBuildColorRed", "0.375",
168
+ "globals.rotoControlScale", "1",
169
+ "globals.rotoFocusColorBlue", "0.9375",
170
+ "globals.rotoFocusColorGreen", "0.375",
171
+ "globals.rotoFocusColorRed", "0.5",
172
+ "globals.rotoFocusSelectColorBlue", "0.5",
173
+ "globals.rotoFocusSelectColorGreen", "1",
174
+ "globals.rotoFocusSelectColorRed", "0.5",
175
+ "globals.rotoKeyedColorBlue", "1",
176
+ "globals.rotoKeyedColorGreen", "0.65",
177
+ "globals.rotoKeyedColorRed", "0.45",
178
+ "globals.rotoNormalColorBlue", "0.125",
179
+ "globals.rotoNormalColorGreen", "0.75",
180
+ "globals.rotoNormalColorRed", "0.75",
181
+ "globals.rotoNormalSelectColorBlue", "0.0625",
182
+ "globals.rotoNormalSelectColorGreen", "1",
183
+ "globals.rotoNormalSelectColorRed", "0.0625",
184
+ "globals.rotoPickRadius", "15",
185
+ "globals.rotoTangentColorBlue", "0.125",
186
+ "globals.rotoTangentColorGreen", "0.5625",
187
+ "globals.rotoTangentColorRed", "0.5625",
188
+ "globals.rotoTangentCreationRadius", "10",
189
+ "globals.rotoTempKeyColorBlue", "0",
190
+ "globals.rotoTempKeyColorGreen", "0.5",
191
+ "globals.rotoTempKeyColorRed", "1",
192
+ "globals.rotoTransformIncrement", "5",
193
+ "globals.showActiveGlows", "2",
194
+ "globals.showConcatenationLinks", "2",
195
+ "globals.showExpressionLinks", "2",
196
+ "globals.showTimeDependency", "2",
197
+ "globals.textureProxy", "1",
198
+ "globals.thumbAlphaBlend", "1",
199
+ "globals.thumbSize", "15",
200
+ "globals.thumbSizeRelative", "0",
201
+ "globals.viewerAspectRatio", "script.defaultViewerAspectRatio",
202
+ "globals.viewerZoom", "1.0/proxyScale",
203
+ "globals.virtualSliderMode", "0",
204
+ "globals.virtualSliderSpeed", "0.25",
205
+ "globals.warpBoundaryNormalColorBlue", "0",
206
+ "globals.warpBoundaryNormalColorGreen", "0.5",
207
+ "globals.warpBoundaryNormalColorRed", "1",
208
+ "globals.warpConnectionNormalColorBlue", "0.8",
209
+ "globals.warpConnectionNormalColorGreen", "0",
210
+ "globals.warpConnectionNormalColorRed", "0.4",
211
+ "globals.warpDisplacedNormalColorBlue", "1",
212
+ "globals.warpDisplacedNormalColorGreen", "0",
213
+ "globals.warpDisplacedNormalColorRed", "1",
214
+ "globals.warpLockedColorBlue", "0.6",
215
+ "globals.warpLockedColorGreen", "0.6",
216
+ "globals.warpLockedColorRed", "0.6",
217
+ "globals.warpSourceNormalColorBlue", "1",
218
+ "globals.warpSourceNormalColorGreen", "0.8",
219
+ "globals.warpSourceNormalColorRed", "0",
220
+ "globals.warpTargetNormalColorBlue", "0.7",
221
+ "globals.warpTargetNormalColorGreen", "0.2",
222
+ "globals.warpTargetNormalColorRed", "0.2",
223
+ "globals.webBrowserPath", "",
224
+ "mainQuad.bot", "0.6",
225
+ "mainQuad.left", "0.29",
226
+ "mainQuad.right", "0.35",
227
+ "mainQuad.top", "0.6",
228
+ "mainWin.height", "1146",
229
+ "mainWin.tabChild1", "0.Image",
230
+ "mainWin.tabChild10", "0.Node_View_2",
231
+ "mainWin.tabChild11", "0.Time_View",
232
+ "mainWin.tabChild12", "1.Parameters1",
233
+ "mainWin.tabChild13", "1.Parameters2",
234
+ "mainWin.tabChild14", "1.Globals",
235
+ "mainWin.tabChild15", "2.Viewers",
236
+ "mainWin.tabChild2", "0.Color",
237
+ "mainWin.tabChild3", "0.Filter",
238
+ "mainWin.tabChild4", "0.Key",
239
+ "mainWin.tabChild5", "0.Layer",
240
+ "mainWin.tabChild6", "0.Transform",
241
+ "mainWin.tabChild7", "0.Warp",
242
+ "mainWin.tabChild8", "0.Other",
243
+ "mainWin.tabChild9", "0.Curve_Editor_2",
244
+ "mainWin.width", "1914",
245
+ "mainWin.xPos", "3",
246
+ "mainWin.yPos", "7",
247
+ "nodeView.Blur1.t", "0",
248
+ "nodeView.Blur1.x", "-235",
249
+ "nodeView.Blur1.y", "-3323",
250
+ "nodeView.Blur2.t", "0",
251
+ "nodeView.Blur2.x", "-236",
252
+ "nodeView.Blur2.y", "-3466",
253
+ "nodeView.Expand1.t", "0",
254
+ "nodeView.Expand1.x", "-243",
255
+ "nodeView.Expand1.y", "-3395",
256
+ "nodeView.Reorder1.t", "0",
257
+ "nodeView.Reorder1.x", "-244",
258
+ "nodeView.Reorder1.y", "-3252",
259
+ "nodeView.Stabilize1.t", "0",
260
+ "nodeView.Stabilize1.x", "-46",
261
+ "nodeView.Stabilize1.y", "-3551",
262
+ "nodeView.Tracker1.t", "0",
263
+ "nodeView.Tracker1.x", "-242",
264
+ "nodeView.Tracker1.y", "-3534",
265
+ "nodeView.redacted.t", "1",
266
+ "nodeView.redacted.tnChannel", "0",
267
+ "nodeView.redacted.tnTime", "1",
268
+ "nodeView.redacted.tnVisible", "1",
269
+ "nodeView.redacted.x", "-122",
270
+ "nodeView.redacted.y", "-3095",
271
+ "nodeView.xPan", "325.514984",
272
+ "nodeView.yPan", "3738.06567",
273
+ "nodeView.zoom", "0.692299664",
274
+ "pixelAnalyzer1.aStatToggleState", "0",
275
+ "pixelAnalyzer1.accumulate", "0",
276
+ "pixelAnalyzer1.bStatToggleState", "0",
277
+ "pixelAnalyzer1.bit16ToggleState", "0",
278
+ "pixelAnalyzer1.bit32ToggleState", "1",
279
+ "pixelAnalyzer1.bit8ToggleState", "0",
280
+ "pixelAnalyzer1.gStatToggleState", "0",
281
+ "pixelAnalyzer1.hStatToggleState", "0",
282
+ "pixelAnalyzer1.hex", "0",
283
+ "pixelAnalyzer1.imgToggleState", "0",
284
+ "pixelAnalyzer1.lStatToggleState", "1",
285
+ "pixelAnalyzer1.offToggleState", "0",
286
+ "pixelAnalyzer1.pxlToggleState", "1",
287
+ "pixelAnalyzer1.rStatToggleState", "0",
288
+ "pixelAnalyzer1.sStatToggleState", "0",
289
+ "pixelAnalyzer1.vStatToggleState", "0",
290
+ "spawnedViewerCount", "0",
291
+ "timeBar.current", "292023",
292
+ "timeBar.high", "292283",
293
+ "timeBar.incr", "1",
294
+ "timeBar.low", "292023",
295
+ "timeView.ctrls.selGroup", "0",
296
+ "timeView.list.open.redacted.cycle", "-2,-2,0",
297
+ "timeView.wSpace.constDisp", "0",
298
+ "timeView.wSpace.dispInOut", "1",
299
+ "timeView.wSpace.endTime", "100",
300
+ "timeView.wSpace.startTime", "1",
301
+ "timeView.wSpace.trim", "0",
302
+ "updater.mode", "2",
303
+ "vDesk.0.chanTog.0.cycle", "4,0,0,0,0,0",
304
+ "vDesk.0.chanTog.1.cycle", "4,0,0,0,0,0",
305
+ "vDesk.0.compareMode", "0",
306
+ "vDesk.0.compareTog.cycle", "-1,0,0,0,-1",
307
+ "vDesk.0.displayModeA", "0",
308
+ "vDesk.0.displayModeB", "0",
309
+ "vDesk.0.dodNodeSerial", "SetDOD(Select1, 156, 785, 44, 404);",
310
+ "vDesk.0.dodToggle", "1",
311
+ "vDesk.0.g", "1",
312
+ "vDesk.0.h", "768",
313
+ "vDesk.0.i", "0",
314
+ "vDesk.0.ih", "0",
315
+ "vDesk.0.isActive", "1",
316
+ "vDesk.0.iw", "0",
317
+ "vDesk.0.lookupNodeSerial0", "Truelight_VLUT_(ViewerDodSelect, \"none\", \"monitor\", \"log\", 0, 0, 0, 0, 0, 0, 1, 0.01, 16, 0.1978, 0.4683);",
318
+ "vDesk.0.lookupNodeSerial1", "ViewerLookup1_(ViewerDodSelect, 2.2, 0, 2, 0, 0, 0, 95, rBlack, rBlack, 685, rWhite, rWhite, 0.6, rNGamma, rNGamma, 1.7, rDGamma, rDGamma, 0, rSoftClip, rSoftClip);",
319
+ "vDesk.0.lookupTog.cycle", "1,0,0,0",
320
+ "vDesk.0.lookupToggle", "0",
321
+ "vDesk.0.monitoredNodeA", "NRiScript1.redacted",
322
+ "vDesk.0.numViewerLookups", "2",
323
+ "vDesk.0.numViewerScripts", "6",
324
+ "vDesk.0.oscAutoKeyOnOff", "1",
325
+ "vDesk.0.oscLockTog.cycle", "1,0,0,0",
326
+ "vDesk.0.oscOnOff", "1",
327
+ "vDesk.0.oscTog.cycle", "1,0,0,1",
328
+ "vDesk.0.roiOnOff", "1",
329
+ "vDesk.0.scriptNodeSerial0", "ApertureMarking(riNode, \"Auto\", 0, 0, 1, 1, 1.0, 1.0, 1.0, 1.0, 3, 1, 0.2, academyDefaultRed, academyDefaultGreen, academyDefaultBlue, academyDefaultAlpha, academyDefaultLineWidth, 1, 0.4, academyDefaultRed, academyDefaultGreen, academyDefaultBlue, academyDefaultAlpha, academyDefaultLineWidth, 1, 0.6, academyDefaultRed, academyDefaultGreen, academyDefaultBlue, academyDefaultAlpha, academyDefaultLineWidth, 0, 0.8, academyDefaultRed, academyDefaultGreen, academyDefaultBlue, academyDefaultAlpha, academyDefaultLineWidth, 0, 0.5, academyDefaultRed, academyDefaultGreen, academyDefaultBlue, academyDefaultAlpha, academyDefaultLineWidth, 0, 0.25, academyDefaultRed, academyDefaultGreen, academyDefaultBlue, academyDefaultAlpha, academyDefaultLineWidth, 1.0, 1.0, 1.0, 1.0, 3, 0, 0.2, fullDefaultRed, fullDefaultGreen, fullDefaultBlue, fullDefaultAlpha, fullDefaultLineWidth, 1, 0.4, fullDefaultRed, fullDefaultGreen, fullDefaultBlue, fullDefaultAlpha, fullDefaultLineWidth, 1, 0.6, fullDefaultRed, fullDefaultGreen, fullDefaultBlue, fullDefaultAlpha, fullDefaultLineWidth, 1.0, 1.0, 1.0, 1.0, 1, 1, 20, 0.25, tvDefaultRed, tvDefaultGreen, tvDefaultBlue, tvDefaultAlpha, tvDefaultLineWidth, 1, 10, 0.5, tvDefaultRed, tvDefaultGreen, tvDefaultBlue, tvDefaultAlpha, tvDefaultLineWidth);",
330
+ "vDesk.0.scriptNodeSerial1", "ViewerScript_2_(riNode, 1, 1, 1, Input.width/2, Input.height/2);",
331
+ "vDesk.0.scriptNodeSerial2", "ViewerScript_3_(riNode, 3, 0, .5);",
332
+ "vDesk.0.scriptNodeSerial3", "ViewZ(riNode, 0, 0, 0, 5000000, 1, 100);",
333
+ "vDesk.0.scriptNodeSerial4", "FloatView_(riNode, 2, 0, 0, 1, 1-red1, 1-green1, 1-blue1);",
334
+ "vDesk.0.scriptNodeSerial5", "TimeCode_(riNode, \"Timecode\", 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, .5, 20, 20);",
335
+ "vDesk.0.scriptTog.cycle", "-1,0,0,0,0,0,0,-1",
336
+ "vDesk.0.scriptToggle", "0",
337
+ "vDesk.0.updateModeA", "1",
338
+ "vDesk.0.updateModeB", "1",
339
+ "vDesk.0.updateTog.0.cycle", "-1,0,0,1",
340
+ "vDesk.0.updateTog.1.cycle", "-1,0,0,1",
341
+ "vDesk.0.w", "1142",
342
+ "vDesk.0.x", "0",
343
+ "vDesk.0.xPan", "-1849",
344
+ "vDesk.0.xliderValue", "21.9659958",
345
+ "vDesk.0.y", "0",
346
+ "vDesk.0.yPan", "-1019",
347
+ "vDesk.0.zoom", "2.51811457",
348
+ "vDesk.viewers", "1"
349
+ );
@@ -124,4 +124,13 @@ class ShakeScriptImportTest < Test::Unit::TestCase
124
124
  assert_equal 1, trackers.length
125
125
  assert_equal 850, trackers[0].length
126
126
  end
127
+
128
+ def test_script_with_stabilizer_node_without_animation
129
+ fixture = File.open(File.dirname(__FILE__) + "/samples/shake_script/track.shk")
130
+ p = Tracksperanto::Import::ShakeScript.new(:width => 1920, :height => 1080)
131
+ trackers = p.parse(fixture)
132
+ assert_equal 2, trackers.length
133
+ assert_equal 261, trackers[0].length
134
+ end
135
+
127
136
  end
@@ -20,4 +20,4 @@ class FlopMiddlewareTest < Test::Unit::TestCase
20
20
  m.start_export(110, 120)
21
21
  m.export_point(1, 10, 95, 0)
22
22
  end
23
- end
23
+ end
@@ -4,7 +4,7 @@ class GoldenMiddlewareTest < Test::Unit::TestCase
4
4
  def test_default_golden_set_to_false
5
5
  receiver = flexmock
6
6
  m = Tracksperanto::Middleware::Golden.new(receiver)
7
- assert_equal false, m.enabled
7
+ assert_nil m.enabled
8
8
  end
9
9
 
10
10
  def test_golden_supports_hash_init
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tracksperanto
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 2
8
8
  - 1
9
- - 0
10
- version: 2.1.0
9
+ - 1
10
+ version: 2.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Julik Tarkhanov
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-08 00:00:00 +01:00
18
+ date: 2011-02-14 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -75,6 +75,7 @@ extra_rdoc_files:
75
75
  - Manifest.txt
76
76
  - README.txt
77
77
  files:
78
+ - DEVELOPER_DOCS.rdoc
78
79
  - History.txt
79
80
  - MIT_LICENSE.txt
80
81
  - Manifest.txt
@@ -195,6 +196,7 @@ files:
195
196
  - test/import/samples/shake_script/shake_trackers_with_Nspline.shk
196
197
  - test/import/samples/shake_script/stabilize_nodes_with_hermite.shk
197
198
  - test/import/samples/shake_script/three_tracks_in_one_stabilizer.shk
199
+ - test/import/samples/shake_script/track.shk
198
200
  - test/import/samples/shake_script/two_tracks_in_one_tracker.shk
199
201
  - test/import/samples/shake_text/one_shake_tracker.txt
200
202
  - test/import/samples/shake_text/one_shake_tracker_from_first.txt
@@ -239,7 +241,6 @@ files:
239
241
  - test/test_simple_export.rb
240
242
  - test/test_tracker.rb
241
243
  - test/test_tracksperanto.rb
242
- - test/middleware/test_lens_distort_middleware.rb
243
244
  has_rdoc: true
244
245
  homepage: http://guerilla-di.org/tracksperanto
245
246
  licenses: []
@@ -306,7 +307,6 @@ test_files:
306
307
  - test/middleware/test_flop_middleware.rb
307
308
  - test/middleware/test_golden_middleware.rb
308
309
  - test/middleware/test_length_cutoff_middleware.rb
309
- - test/middleware/test_lens_distort_middleware.rb
310
310
  - test/middleware/test_lerp_middleware.rb
311
311
  - test/middleware/test_prefix.rb
312
312
  - test/middleware/test_reformat_middleware.rb
@@ -1,14 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__)) + '/../helper'
2
-
3
- class DistortMiddlewareTest < Test::Unit::TestCase
4
- include ParabolicTracks
5
-
6
- def test_truth
7
- File.open("/tmp/dist.nk", "w") do |f |
8
- nx = Tracksperanto::Export::NukeScript.new(f)
9
- dist = Tracksperanto::Middleware::LensDistort.new(nx, :k => 0.03, :kcube => 0.02, :extend_image => true)
10
- export_parabolics_with(dist)
11
- end
12
- end
13
-
14
- end