tracksperanto 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/DEVELOPER_DOCS.rdoc +74 -0
- data/History.txt +5 -0
- data/Manifest.txt +2 -0
- data/README.txt +1 -33
- data/lib/export/base.rb +10 -2
- data/lib/export/mux.rb +4 -32
- data/lib/export/syntheyes.rb +17 -1
- data/lib/import/pftrack.rb +1 -1
- data/lib/import/shake_script.rb +23 -25
- data/lib/import/shake_text.rb +8 -8
- data/lib/middleware/base.rb +5 -25
- data/lib/middleware/golden.rb +0 -4
- data/lib/middleware/reformat.rb +0 -5
- data/lib/middleware/slipper.rb +1 -6
- data/lib/pipeline/base.rb +1 -2
- data/lib/tracksperanto.rb +3 -2
- data/lib/tracksperanto/accumulator.rb +15 -14
- data/lib/tracksperanto/buffer_io.rb +1 -4
- data/lib/tracksperanto/ext_io.rb +18 -6
- data/test/export/samples/ref_Syntheyes.txt +38 -38
- data/test/export/test_mux.rb +1 -1
- data/test/export/test_syntheyes_export.rb +1 -1
- data/test/import/samples/shake_script/track.shk +349 -0
- data/test/import/test_shake_script_import.rb +9 -0
- data/test/middleware/test_flop_middleware.rb +1 -1
- data/test/middleware/test_golden_middleware.rb +1 -1
- metadata +6 -6
- data/test/middleware/test_lens_distort_middleware.rb +0 -14
data/DEVELOPER_DOCS.rdoc
ADDED
@@ -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
|
-
|
18
|
-
|
19
|
-
@outputs.
|
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
|
data/lib/export/syntheyes.rb
CHANGED
@@ -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
|
data/lib/import/pftrack.rb
CHANGED
@@ -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
|
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)
|
data/lib/import/shake_script.rb
CHANGED
@@ -10,18 +10,22 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
|
|
10
10
|
".shk"
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
|
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
|
22
|
-
|
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
|
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
|
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
|
-
|
248
|
-
|
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
|
data/lib/import/shake_text.rb
CHANGED
@@ -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
|
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.
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
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
|
data/lib/middleware/base.rb
CHANGED
@@ -20,29 +20,9 @@ class Tracksperanto::Middleware::Base
|
|
20
20
|
super
|
21
21
|
end
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
@exporter.
|
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
|
-
|
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
|
data/lib/middleware/golden.rb
CHANGED
@@ -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
|
data/lib/middleware/reformat.rb
CHANGED
@@ -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
|
data/lib/middleware/slipper.rb
CHANGED
@@ -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.
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
30
|
-
|
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
|
data/lib/tracksperanto/ext_io.rb
CHANGED
@@ -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
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
data/test/export/test_mux.rb
CHANGED
@@ -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
|
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:
|
4
|
+
hash: 9
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 2.1.
|
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-
|
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
|