tracksperanto 1.6.8 → 1.6.9
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/History.txt +4 -0
- data/Manifest.txt +5 -1
- data/bin/tracksperanto +19 -2
- data/lib/import/shake_grammar/catcher.rb +34 -29
- data/lib/import/shake_grammar/lexer.rb +19 -19
- data/lib/import/shake_script.rb +35 -30
- data/lib/tracksperanto.rb +1 -1
- data/test/import/samples/{.DS_Store → flame_stabilizer/.DS_Store} +0 -0
- data/test/import/samples/pftrack5/.DS_Store +0 -0
- data/test/import/samples/shake_script/.DS_Store +0 -0
- data/test/import/samples/syntheyes_2d_paths/.DS_Store +0 -0
- data/test/import/samples/syntheyes_2d_paths/cola_plate.txt +507 -0
- data/test/import/test_shake_catcher.rb +9 -12
- data/test/import/test_shake_lexer.rb +28 -24
- data/test/import/test_shake_script_import.rb +10 -10
- data/test/import/test_syntheyes_import.rb +10 -0
- metadata +7 -3
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -73,10 +73,10 @@ test/export/test_shake_export.rb
|
|
73
73
|
test/export/test_syntheyes_export.rb
|
74
74
|
test/helper.rb
|
75
75
|
test/import/.DS_Store
|
76
|
-
test/import/samples/.DS_Store
|
77
76
|
test/import/samples/3de_v3/3de_export_v3.txt
|
78
77
|
test/import/samples/3de_v4/3de_export_cube.txt
|
79
78
|
test/import/samples/boujou_features_text/boujou_txt_export.txt
|
79
|
+
test/import/samples/flame_stabilizer/.DS_Store
|
80
80
|
test/import/samples/flame_stabilizer/fromCombustion_fromMidClip_wSnap.stabilizer
|
81
81
|
test/import/samples/flame_stabilizer/hugeFlameSetup.stabilizer
|
82
82
|
test/import/samples/flame_stabilizer/megaTrack.action.3dtrack.stabilizer
|
@@ -88,7 +88,9 @@ test/import/samples/nuke/one_tracker_with_break_in_grp.nk
|
|
88
88
|
test/import/samples/nuke/tracker_with_differing_gaps.nk
|
89
89
|
test/import/samples/nuke/tracker_with_repeating_gaps.nk
|
90
90
|
test/import/samples/pftrack4/sourcefile_pftrack.2dt
|
91
|
+
test/import/samples/pftrack5/.DS_Store
|
91
92
|
test/import/samples/pftrack5/garage.2dt
|
93
|
+
test/import/samples/shake_script/.DS_Store
|
92
94
|
test/import/samples/shake_script/four_tracks_in_one_matchmove.shk
|
93
95
|
test/import/samples/shake_script/four_tracks_in_one_stabilizer.shk
|
94
96
|
test/import/samples/shake_script/shake_script_from_boujou.shk
|
@@ -101,6 +103,8 @@ test/import/samples/shake_script/two_tracks_in_one_tracker.shk
|
|
101
103
|
test/import/samples/shake_text/one_shake_tracker.txt
|
102
104
|
test/import/samples/shake_text/one_shake_tracker_from_first.txt
|
103
105
|
test/import/samples/shake_text/two_shake_trackers.txt
|
106
|
+
test/import/samples/syntheyes_2d_paths/.DS_Store
|
107
|
+
test/import/samples/syntheyes_2d_paths/cola_plate.txt
|
104
108
|
test/import/samples/syntheyes_2d_paths/flyover2DP_syntheyes.txt
|
105
109
|
test/import/samples/syntheyes_2d_paths/shake_tracker_nodes_to_syntheyes.txt
|
106
110
|
test/import/test_3de_import.rb
|
data/bin/tracksperanto
CHANGED
@@ -88,8 +88,25 @@ if !input_file
|
|
88
88
|
exit(-1)
|
89
89
|
end
|
90
90
|
|
91
|
+
class Spinner
|
92
|
+
RING = ['|', '/', '-', '\\', '|', '/', '-', '\\']
|
93
|
+
|
94
|
+
def initialize
|
95
|
+
@counter = 0
|
96
|
+
@last_message_length = 0
|
97
|
+
end
|
98
|
+
|
99
|
+
def spin(percent, msg)
|
100
|
+
current = RING[(@counter += 1) % RING.length]
|
101
|
+
output = " [%s %d%%]" % [current, percent]
|
102
|
+
STDOUT.write(output + "\r" * output.length)
|
103
|
+
STDOUT.flush
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
91
107
|
pipe = Tracksperanto::Pipeline::Base.new
|
92
|
-
pipe.progress_block =
|
108
|
+
pipe.progress_block = Spinner.new.method(:spin).to_proc
|
109
|
+
|
93
110
|
if sole_format
|
94
111
|
begin
|
95
112
|
pipe.exporters = [Tracksperanto::Export.const_get(sole_format)]
|
@@ -110,4 +127,4 @@ pipe.run(input_file, :pix_w => width, :pix_h => height, :parser => reader_klass)
|
|
110
127
|
shift.y_shift = y_shift
|
111
128
|
prefix.prefix = set_prefix
|
112
129
|
end
|
113
|
-
STDOUT.
|
130
|
+
STDOUT.puts("\rConverted #{pipe.converted_points} trackers with #{pipe.converted_keyframes} keys")
|
@@ -1,55 +1,60 @@
|
|
1
1
|
module Tracksperanto::ShakeGrammar
|
2
2
|
# Will replay funcalls through to methods if such methods exist in the public insntance
|
3
3
|
class Catcher < Lexer
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
4
|
+
class At
|
5
|
+
attr_accessor :at, :value
|
6
|
+
include Comparable
|
7
|
+
def initialize(a, v)
|
8
|
+
@at, @value = a, v
|
9
|
+
end
|
10
|
+
|
11
|
+
def <=>(o)
|
12
|
+
[@at, @value] <=> [o.at, o.value]
|
13
|
+
end
|
14
|
+
|
15
|
+
def inspect
|
16
|
+
"(#{@value.inspect}@#{@at.inspect})"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def push(atom)
|
21
|
+
# Send primitive types to parent
|
22
|
+
return super if !atom.is_a?(Array)
|
23
|
+
return super if atom[0] != :funcall
|
24
|
+
|
25
|
+
meth_for_shake_func, args = atom[1].downcase, atom[2..-1]
|
26
|
+
if can_handle_meth?(meth_for_shake_func)
|
27
|
+
super([:retval, exec_funcall(meth_for_shake_func, args)])
|
19
28
|
else
|
20
|
-
|
29
|
+
# This is a funcall we cannot perform, replace the return result of the funcall
|
30
|
+
# with a token to signify that some unknown function's result would have been here
|
31
|
+
super([:unknown_func])
|
21
32
|
end
|
22
33
|
end
|
23
34
|
|
24
35
|
private
|
25
36
|
|
26
|
-
def get_variable_name
|
27
|
-
@stack[-2][1]
|
28
|
-
end
|
29
|
-
|
30
37
|
def can_handle_meth?(m)
|
31
38
|
@meths ||= self.class.public_instance_methods(false)
|
32
39
|
@meths.include?(m)
|
33
40
|
end
|
34
41
|
|
35
42
|
def exec_funcall(methname, args)
|
36
|
-
ruby_args =
|
43
|
+
ruby_args = args.map {|a| unwrap_atom(a) }
|
37
44
|
send(methname, *ruby_args)
|
38
45
|
end
|
39
46
|
|
40
|
-
def unwrap_atoms_in_args(args)
|
41
|
-
args.map do | arg |
|
42
|
-
(arg.is_a?(Array) && arg[0].is_a?(Symbol)) ? unwrap_atom(arg) : arg
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
47
|
def unwrap_atom(atom)
|
48
|
+
return atom unless atom.is_a?(Array)
|
49
|
+
|
47
50
|
kind = atom.shift
|
48
51
|
case kind
|
49
52
|
when :arr
|
50
|
-
atom.map{|e| unwrap_atom(e)}
|
51
|
-
when :retval
|
53
|
+
atom[0].map{|e| unwrap_atom(e)}
|
54
|
+
when :retval
|
52
55
|
atom.shift
|
56
|
+
when :value_at
|
57
|
+
At.new(atom.shift, unwrap_atom(atom.shift))
|
53
58
|
else
|
54
59
|
:unknown
|
55
60
|
end
|
@@ -15,8 +15,8 @@ module Tracksperanto::ShakeGrammar
|
|
15
15
|
# The second argument is a "sentinel" that is going to be passed
|
16
16
|
# to the downstream lexers instantiated for nested data structures.
|
17
17
|
# You can use the sentinel to collect data from child nodes for example.
|
18
|
-
def initialize(with_io, sentinel = nil)
|
19
|
-
@io, @stack, @buf, @sentinel = with_io, [], '', sentinel
|
18
|
+
def initialize(with_io, sentinel = nil, limit_to_one_stmt = false)
|
19
|
+
@io, @stack, @buf, @sentinel, @limit_to_one_stmt = with_io, [], '', sentinel, @limit_to_one_stmt
|
20
20
|
catch(STOP_TOKEN) { parse until @io.eof? }
|
21
21
|
in_comment? ? consume_comment("\n") : consume_atom!
|
22
22
|
end
|
@@ -44,19 +44,20 @@ module Tracksperanto::ShakeGrammar
|
|
44
44
|
push([:funcall, @buf.strip] + self.class.new(@io, @sentinel).stack)
|
45
45
|
@buf = ''
|
46
46
|
elsif c == "[" # Array, booring
|
47
|
-
push([:arr
|
48
|
-
elsif (c == "]" || c == ")")
|
49
|
-
#
|
50
|
-
# a subexpression.
|
47
|
+
push([:arr, self.class.new(@io).stack])
|
48
|
+
elsif (c == "]" || c == ")" || c == ";" && @limit_to_one_stmt)
|
49
|
+
# Bailing out of a subexpression
|
51
50
|
consume_atom!
|
52
51
|
throw STOP_TOKEN
|
53
52
|
elsif (c == ",")
|
54
53
|
consume_atom!
|
54
|
+
elsif (c == "@")
|
55
|
+
consume_atom!
|
56
|
+
@buf << c
|
55
57
|
elsif (c == ";" || c == "\n")
|
56
58
|
# Skip these - the subexpression already is expanded anyway
|
57
59
|
elsif (c == "=")
|
58
|
-
push [:
|
59
|
-
push [:eq]
|
60
|
+
push [:assign, @buf.strip, self.class.new(@io, @sentinel, to_semicolon = true).stack.shift]
|
60
61
|
@buf = ''
|
61
62
|
else
|
62
63
|
@buf << c
|
@@ -66,9 +67,7 @@ module Tracksperanto::ShakeGrammar
|
|
66
67
|
INT_ATOM = /^(\d+)$/
|
67
68
|
FLOAT_ATOM = /^([\-\d\.]+)$/
|
68
69
|
STR_ATOM = /^\"/
|
69
|
-
|
70
|
-
AT_CONSUMED = /^@(\d+)/
|
71
|
-
VAR_ASSIGN = /^([\w_]+)(\s+?)\=(\s+?)(.+)/
|
70
|
+
AT_FRAME = /^@(\d+)/
|
72
71
|
|
73
72
|
# Grab the minimum atomic value
|
74
73
|
def consume_atom!
|
@@ -77,16 +76,17 @@ module Tracksperanto::ShakeGrammar
|
|
77
76
|
|
78
77
|
the_atom = case at
|
79
78
|
when INT_ATOM
|
80
|
-
|
79
|
+
at.to_i
|
81
80
|
when STR_ATOM
|
82
|
-
|
81
|
+
unquote_s(at)
|
83
82
|
when FLOAT_ATOM
|
84
|
-
|
85
|
-
when
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
83
|
+
at.to_f
|
84
|
+
when AT_FRAME
|
85
|
+
if $1.include?(".")
|
86
|
+
[:value_at, $1.to_f, @stack.pop]
|
87
|
+
else
|
88
|
+
[:value_at, $1.to_i, @stack.pop]
|
89
|
+
end
|
90
90
|
else
|
91
91
|
[:atom, at]
|
92
92
|
end
|
data/lib/import/shake_script.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require File.dirname(__FILE__) + "/shake_grammar/lexer"
|
2
2
|
require File.dirname(__FILE__) + "/shake_grammar/catcher"
|
3
|
-
|
4
3
|
class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
|
5
4
|
|
6
5
|
def self.human_name
|
@@ -16,13 +15,23 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
|
|
16
15
|
class Traxtractor < Tracksperanto::ShakeGrammar::Catcher
|
17
16
|
include Tracksperanto::ZipTuples
|
18
17
|
|
18
|
+
# Normally, we wouldn't need to look for the variable name from inside of the funcall. However,
|
19
|
+
# in this case we DO want to take this shortcut so we will intersperse the data into the sentinel
|
20
|
+
def push(atom)
|
21
|
+
return super unless (atom.is_a?(Array) && atom[0] == :assign)
|
22
|
+
return super unless (atom[2][0] == :retval)
|
23
|
+
node_name = atom[1]
|
24
|
+
atom[2][1].map do | tracker |
|
25
|
+
tracker.name = [node_name, tracker.name].join("_")
|
26
|
+
sentinel[0].push(tracker)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
19
30
|
# For Linear() curve calls. If someone selected JSpline or Hermite it's his problem.
|
20
31
|
# We put the frame number at the beginning since it works witih oru tuple zipper
|
21
32
|
def linear(first_arg, *keyframes)
|
22
33
|
report_progress("Translating Linear animation")
|
23
|
-
keyframes.map
|
24
|
-
[kf[1][1], kf[0][1]]
|
25
|
-
end
|
34
|
+
keyframes.map { |kf| [kf.at, kf.value] }
|
26
35
|
end
|
27
36
|
alias_method :nspline, :linear
|
28
37
|
alias_method :jspline, :linear
|
@@ -33,9 +42,7 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
|
|
33
42
|
# tangent positions (which we discard)
|
34
43
|
def hermite(initial_value, *keyframes)
|
35
44
|
report_progress("Translating Hermite curve, removing tangents")
|
36
|
-
|
37
|
-
values = values.map{|v| v[0] }
|
38
|
-
at_frames.zip(values)
|
45
|
+
keyframes.map{ |kf| [kf.at, kf.value[0]] }
|
39
46
|
end
|
40
47
|
|
41
48
|
# image Tracker(
|
@@ -56,8 +63,7 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
|
|
56
63
|
s3, s4, s5, s6, *trackers)
|
57
64
|
|
58
65
|
report_progress("Parsing Tracker node")
|
59
|
-
collect_trackers_from(
|
60
|
-
true
|
66
|
+
collect_trackers_from(trackers)
|
61
67
|
end
|
62
68
|
|
63
69
|
# stabilize {
|
@@ -98,11 +104,12 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
|
|
98
104
|
*useless_args)
|
99
105
|
|
100
106
|
report_progress("Parsing Stabilize node")
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
107
|
+
[
|
108
|
+
collect_stabilizer_tracker("track1", track1X, track1Y),
|
109
|
+
collect_stabilizer_tracker("track2", track2X, track2Y),
|
110
|
+
collect_stabilizer_tracker("track3", track3X, track3Y),
|
111
|
+
collect_stabilizer_tracker("track4", track4X, track4Y),
|
112
|
+
].compact
|
106
113
|
end
|
107
114
|
|
108
115
|
# image = MatchMove(
|
@@ -164,12 +171,12 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
|
|
164
171
|
track4Y, *others)
|
165
172
|
|
166
173
|
report_progress("Parsing MatchMove node")
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
174
|
+
[
|
175
|
+
collect_stabilizer_tracker("track1", track1X, track1Y),
|
176
|
+
collect_stabilizer_tracker("track2", track2X, track2Y),
|
177
|
+
collect_stabilizer_tracker("track3", track3X, track3Y),
|
178
|
+
collect_stabilizer_tracker("track4", track4X, track4Y),
|
179
|
+
].compact
|
173
180
|
end
|
174
181
|
|
175
182
|
private
|
@@ -178,15 +185,16 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
|
|
178
185
|
sentinel[1].call(with_message) if sentinel[1]
|
179
186
|
end
|
180
187
|
|
181
|
-
def collect_trackers_from(
|
188
|
+
def collect_trackers_from(array)
|
182
189
|
parameters_per_node = 16
|
183
190
|
nb_trackers = array.length / parameters_per_node
|
184
|
-
|
191
|
+
|
192
|
+
(0...nb_trackers).map do | idx |
|
185
193
|
from_index, to_index = (idx * parameters_per_node), (idx+1) * parameters_per_node
|
186
194
|
tracker_args = array[from_index...to_index]
|
187
|
-
tracker_args[0] = "#{
|
195
|
+
tracker_args[0] = "#{tracker_args[0]}"
|
188
196
|
collect_tracker(*tracker_args)
|
189
|
-
end
|
197
|
+
end.compact
|
190
198
|
end
|
191
199
|
|
192
200
|
def collect_stabilizer_tracker(name, x_curve, y_curve)
|
@@ -196,7 +204,7 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
|
|
196
204
|
Tracksperanto::Keyframe.new(:frame => frame - 1, :abs_x => x, :abs_y => y)
|
197
205
|
end
|
198
206
|
|
199
|
-
|
207
|
+
Tracksperanto::Tracker.new(:name => name, :keyframes => keyframes)
|
200
208
|
end
|
201
209
|
|
202
210
|
def collect_tracker(name, x_curve, y_curve, corr_curve, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12)
|
@@ -212,7 +220,8 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
|
|
212
220
|
keyframes = zip_curve_tuples(*curve_set).map do | (frame, x, y, corr) |
|
213
221
|
Tracksperanto::Keyframe.new(:frame => frame - 1, :abs_x => x, :abs_y => y, :residual => (1 - corr.to_f))
|
214
222
|
end
|
215
|
-
|
223
|
+
|
224
|
+
Tracksperanto::Tracker.new(:name => name, :keyframes => keyframes)
|
216
225
|
end
|
217
226
|
|
218
227
|
def combine_curves(x, y, corr_curve)
|
@@ -220,10 +229,6 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
|
|
220
229
|
curve_set << corr_curve if (corr_curve.respond_to?(:length) && corr_curve.length >= x.length)
|
221
230
|
curve_set
|
222
231
|
end
|
223
|
-
|
224
|
-
def push_tracker(tracker_options)
|
225
|
-
sentinel[0].push(Tracksperanto::Tracker.new(tracker_options))
|
226
|
-
end
|
227
232
|
end
|
228
233
|
|
229
234
|
def parse(script_io)
|
data/lib/tracksperanto.rb
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,507 @@
|
|
1
|
+
Tracker1 1 -0.067728 -0.244922 15
|
2
|
+
Tracker1 2 -0.065092 -0.248918 7
|
3
|
+
Tracker1 3 -0.061274 -0.253124 7
|
4
|
+
Tracker1 4 -0.055394 -0.256618 7
|
5
|
+
Tracker1 5 -0.048073 -0.262960 15
|
6
|
+
Tracker1 6 -0.042904 -0.269560 7
|
7
|
+
Tracker1 7 -0.037195 -0.278492 7
|
8
|
+
Tracker1 8 -0.031419 -0.288363 7
|
9
|
+
Tracker1 9 -0.027346 -0.298331 15
|
10
|
+
Tracker1 10 -0.024634 -0.314515 7
|
11
|
+
Tracker1 11 -0.021860 -0.334771 7
|
12
|
+
Tracker1 12 -0.015471 -0.354578 7
|
13
|
+
Tracker1 13 -0.005099 -0.369133 15
|
14
|
+
Tracker1 14 0.006652 -0.377567 7
|
15
|
+
Tracker1 15 0.021430 -0.382522 7
|
16
|
+
Tracker1 16 0.035294 -0.381879 7
|
17
|
+
Tracker1 17 0.046980 -0.378211 15
|
18
|
+
Tracker1 18 0.057851 -0.369336 7
|
19
|
+
Tracker1 19 0.066472 -0.355507 7
|
20
|
+
Tracker1 20 0.072426 -0.341769 7
|
21
|
+
Tracker1 21 0.077078 -0.326155 15
|
22
|
+
Tracker1 22 0.081291 -0.303653 7
|
23
|
+
Tracker1 23 0.084823 -0.278559 7
|
24
|
+
Tracker1 24 0.089269 -0.252325 7
|
25
|
+
Tracker1 25 0.092921 -0.227917 15
|
26
|
+
Tracker1 26 0.095902 -0.205260 7
|
27
|
+
Tracker1 27 0.097859 -0.178534 7
|
28
|
+
Tracker1 28 0.099102 -0.157861 7
|
29
|
+
Tracker1 29 0.099112 -0.146786 15
|
30
|
+
Tracker1 30 0.096569 -0.137900 7
|
31
|
+
Tracker1 31 0.090730 -0.126783 7
|
32
|
+
Tracker1 32 0.083118 -0.116885 7
|
33
|
+
Tracker1 33 0.075267 -0.112504 15
|
34
|
+
Tracker1 34 0.066921 -0.111124 7
|
35
|
+
Tracker1 35 0.057518 -0.109734 7
|
36
|
+
Tracker1 36 0.047113 -0.108005 7
|
37
|
+
Tracker1 37 0.038916 -0.109653 15
|
38
|
+
Tracker1 38 0.032049 -0.106238 7
|
39
|
+
Tracker1 39 0.024634 -0.105814 7
|
40
|
+
Tracker1 40 0.016158 -0.115710 7
|
41
|
+
Tracker1 41 0.008868 -0.122354 15
|
42
|
+
Tracker1 42 0.001930 -0.125853 7
|
43
|
+
Tracker1 43 -0.008011 -0.134011 7
|
44
|
+
Tracker1 44 -0.020194 -0.145578 7
|
45
|
+
Tracker1 45 -0.030089 -0.149569 15
|
46
|
+
Tracker1 46 -0.036715 -0.150612 7
|
47
|
+
Tracker1 47 -0.045108 -0.162176 7
|
48
|
+
Tracker1 48 -0.055350 -0.182660 7
|
49
|
+
Tracker1 49 -0.062872 -0.197860 15
|
50
|
+
Tracker1 50 -0.070143 -0.209065 7
|
51
|
+
Tracker1 51 -0.076469 -0.218782 7
|
52
|
+
Tracker1 52 -0.082360 -0.223616 7
|
53
|
+
Tracker1 53 -0.087896 -0.221405 15
|
54
|
+
Tracker1 54 -0.092179 -0.221210 7
|
55
|
+
Tracker1 55 -0.093786 -0.225442 7
|
56
|
+
Tracker1 56 -0.093674 -0.231370 7
|
57
|
+
Tracker1 57 -0.091309 -0.236894 15
|
58
|
+
Tracker1 58 -0.087306 -0.245727 7
|
59
|
+
Tracker1 59 -0.082585 -0.256422 7
|
60
|
+
Tracker1 60 -0.076795 -0.262368 7
|
61
|
+
Tracker1 61 -0.069782 -0.264465 15
|
62
|
+
Tracker1 62 -0.062027 -0.268350 7
|
63
|
+
Tracker1 63 -0.053783 -0.275351 7
|
64
|
+
Tracker1 64 -0.046572 -0.282203 15
|
65
|
+
Tracker1 65 -0.040293 -0.289319 15
|
66
|
+
Tracker1 66 -0.033932 -0.295479 7
|
67
|
+
Tracker1 67 -0.027062 -0.301713 7
|
68
|
+
Tracker1 68 -0.020827 -0.305950 7
|
69
|
+
Tracker1 69 -0.015612 -0.309020 15
|
70
|
+
Tracker1 70 -0.010550 -0.311432 7
|
71
|
+
Tracker1 71 -0.005233 -0.313427 7
|
72
|
+
Tracker1 72 0.000407 -0.316988 7
|
73
|
+
Tracker1 73 0.005536 -0.321569 15
|
74
|
+
Tracker1 74 0.009427 -0.324740 7
|
75
|
+
Tracker1 75 0.012756 -0.326649 7
|
76
|
+
Tracker1 76 0.015964 -0.325775 7
|
77
|
+
Tracker1 77 0.019278 -0.321473 15
|
78
|
+
Tracker1 78 0.022801 -0.313456 7
|
79
|
+
Tracker1 79 0.025893 -0.303735 7
|
80
|
+
Tracker1 80 0.029509 -0.289082 7
|
81
|
+
Tracker1 81 0.033518 -0.273040 15
|
82
|
+
Tracker1 82 0.037421 -0.258148 7
|
83
|
+
Tracker1 83 0.042987 -0.238133 7
|
84
|
+
Tracker1 84 0.048976 -0.218023 7
|
85
|
+
Tracker1 85 0.052717 -0.202492 15
|
86
|
+
Tracker1 86 0.054408 -0.188551 7
|
87
|
+
Tracker1 87 0.053590 -0.173082 7
|
88
|
+
Tracker1 88 0.051640 -0.157542 7
|
89
|
+
Tracker1 89 0.050031 -0.147129 15
|
90
|
+
Tracker1 90 0.048104 -0.140582 7
|
91
|
+
Tracker1 91 0.045298 -0.133807 7
|
92
|
+
Tracker1 92 0.041905 -0.125346 7
|
93
|
+
Tracker1 93 0.037303 -0.117299 15
|
94
|
+
Tracker1 94 0.032822 -0.109178 7
|
95
|
+
Tracker1 95 0.028124 -0.102662 7
|
96
|
+
Tracker1 96 0.021886 -0.093605 7
|
97
|
+
Tracker1 97 0.015960 -0.084248 15
|
98
|
+
Tracker1 98 0.010394 -0.076664 7
|
99
|
+
Tracker1 99 0.006031 -0.069808 7
|
100
|
+
Tracker1 100 0.002186 -0.063330 7
|
101
|
+
Tracker2 1 -0.187530 0.092809 15
|
102
|
+
Tracker2 2 -0.188390 0.092113 7
|
103
|
+
Tracker2 3 -0.189431 0.090039 7
|
104
|
+
Tracker2 4 -0.189932 0.086936 7
|
105
|
+
Tracker2 5 -0.189324 0.082121 15
|
106
|
+
Tracker2 6 -0.187994 0.079106 7
|
107
|
+
Tracker2 7 -0.187719 0.072390 7
|
108
|
+
Tracker2 8 -0.187472 0.063869 7
|
109
|
+
Tracker2 9 -0.186545 0.056708 15
|
110
|
+
Tracker2 10 -0.185774 0.045121 7
|
111
|
+
Tracker2 11 -0.185183 0.030349 7
|
112
|
+
Tracker2 12 -0.181522 0.014829 7
|
113
|
+
Tracker2 13 -0.174638 0.001514 15
|
114
|
+
Tracker2 14 -0.166195 -0.008196 7
|
115
|
+
Tracker2 15 -0.155120 -0.016212 7
|
116
|
+
Tracker2 16 -0.144640 -0.019282 7
|
117
|
+
Tracker2 17 -0.135997 -0.019176 15
|
118
|
+
Tracker2 18 -0.127085 -0.013874 7
|
119
|
+
Tracker2 19 -0.120724 -0.004017 7
|
120
|
+
Tracker2 20 -0.117513 0.003663 7
|
121
|
+
Tracker2 21 -0.115506 0.012046 15
|
122
|
+
Tracker2 22 -0.115174 0.026439 7
|
123
|
+
Tracker2 23 -0.115920 0.040139 7
|
124
|
+
Tracker2 24 -0.116065 0.054054 7
|
125
|
+
Tracker2 25 -0.115702 0.068055 15
|
126
|
+
Tracker2 26 -0.115165 0.080755 7
|
127
|
+
Tracker2 27 -0.116403 0.093857 7
|
128
|
+
Tracker2 28 -0.117641 0.102968 7
|
129
|
+
Tracker2 29 -0.118357 0.107271 15
|
130
|
+
Tracker2 30 -0.121236 0.110953 7
|
131
|
+
Tracker2 31 -0.127097 0.113671 7
|
132
|
+
Tracker2 32 -0.133879 0.115968 7
|
133
|
+
Tracker2 33 -0.140310 0.115766 15
|
134
|
+
Tracker2 34 -0.145990 0.114622 7
|
135
|
+
Tracker2 35 -0.151639 0.114385 7
|
136
|
+
Tracker2 36 -0.156351 0.116809 7
|
137
|
+
Tracker2 37 -0.158713 0.117649 15
|
138
|
+
Tracker2 38 -0.160568 0.121628 7
|
139
|
+
Tracker2 39 -0.162350 0.124060 7
|
140
|
+
Tracker2 40 -0.163378 0.121101 7
|
141
|
+
Tracker2 41 -0.164110 0.119711 15
|
142
|
+
Tracker2 42 -0.165249 0.119573 7
|
143
|
+
Tracker2 43 -0.166629 0.119106 7
|
144
|
+
Tracker2 44 -0.168070 0.118105 7
|
145
|
+
Tracker2 45 -0.170381 0.119801 15
|
146
|
+
Tracker2 46 -0.172021 0.122960 7
|
147
|
+
Tracker2 47 -0.172491 0.123479 7
|
148
|
+
Tracker2 48 -0.172611 0.121046 7
|
149
|
+
Tracker2 49 -0.173075 0.119547 15
|
150
|
+
Tracker2 50 -0.173455 0.119267 7
|
151
|
+
Tracker2 51 -0.173791 0.119005 7
|
152
|
+
Tracker2 52 -0.174159 0.121170 7
|
153
|
+
Tracker2 53 -0.175400 0.128414 15
|
154
|
+
Tracker2 54 -0.176260 0.134097 7
|
155
|
+
Tracker2 55 -0.176486 0.135195 7
|
156
|
+
Tracker2 56 -0.176974 0.134284 7
|
157
|
+
Tracker2 57 -0.177113 0.132872 15
|
158
|
+
Tracker2 58 -0.177299 0.128326 7
|
159
|
+
Tracker2 59 -0.177345 0.121244 15
|
160
|
+
Tracker2 60 -0.176663 0.117797 15
|
161
|
+
Tracker2 61 -0.175850 0.115510 7
|
162
|
+
Tracker2 62 -0.173083 0.113340 15
|
163
|
+
Tracker2 63 -0.170780 0.107403 15
|
164
|
+
Tracker2 64 -0.168977 0.102025 7
|
165
|
+
Tracker2 65 -0.167658 0.094368 7
|
166
|
+
Tracker2 66 -0.165954 0.086996 7
|
167
|
+
Tracker2 67 -0.164225 0.080293 15
|
168
|
+
Tracker2 68 -0.162816 0.074192 7
|
169
|
+
Tracker2 69 -0.161080 0.069813 7
|
170
|
+
Tracker2 70 -0.159298 0.065327 7
|
171
|
+
Tracker2 71 -0.157548 0.060723 15
|
172
|
+
Tracker2 72 -0.155697 0.054262 7
|
173
|
+
Tracker2 73 -0.154033 0.047026 7
|
174
|
+
Tracker2 74 -0.153275 0.040779 7
|
175
|
+
Tracker2 75 -0.153135 0.035032 15
|
176
|
+
Tracker2 76 -0.152931 0.031526 7
|
177
|
+
Tracker2 77 -0.152753 0.030994 7
|
178
|
+
Tracker2 78 -0.152824 0.031688 7
|
179
|
+
Tracker2 79 -0.153538 0.034206 15
|
180
|
+
Tracker2 80 -0.154456 0.040069 7
|
181
|
+
Tracker2 81 -0.154964 0.046396 7
|
182
|
+
Tracker2 82 -0.155105 0.052641 7
|
183
|
+
Tracker2 83 -0.154769 0.060664 15
|
184
|
+
Tracker2 84 -0.153725 0.068885 7
|
185
|
+
Tracker2 85 -0.153188 0.075191 7
|
186
|
+
Tracker2 86 -0.153946 0.081272 7
|
187
|
+
Tracker2 87 -0.156254 0.088602 15
|
188
|
+
Tracker2 88 -0.159782 0.093525 7
|
189
|
+
Tracker2 89 -0.162473 0.095964 7
|
190
|
+
Tracker2 90 -0.164623 0.097366 7
|
191
|
+
Tracker2 91 -0.166552 0.099808 15
|
192
|
+
Tracker2 92 -0.168490 0.104422 7
|
193
|
+
Tracker2 93 -0.170794 0.109309 7
|
194
|
+
Tracker2 94 -0.173098 0.113125 7
|
195
|
+
Tracker2 95 -0.175583 0.116447 15
|
196
|
+
Tracker2 96 -0.177962 0.122501 7
|
197
|
+
Tracker2 97 -0.179860 0.128698 7
|
198
|
+
Tracker2 98 -0.181097 0.132942 7
|
199
|
+
Tracker2 99 -0.181914 0.137025 15
|
200
|
+
Tracker2 100 -0.181737 0.141855 15
|
201
|
+
Tracker3 1 0.029375 0.297314 15
|
202
|
+
Tracker3 2 0.027216 0.301602 15
|
203
|
+
Tracker3 3 0.024262 0.305701 15
|
204
|
+
Tracker3 4 0.019697 0.309511 15
|
205
|
+
Tracker3 5 0.015606 0.313639 15
|
206
|
+
Tracker3 6 0.013642 0.315855 15
|
207
|
+
Tracker3 7 0.009907 0.318888 15
|
208
|
+
Tracker3 8 0.007132 0.322245 15
|
209
|
+
Tracker3 9 0.006645 0.323193 15
|
210
|
+
Tracker3 10 0.006991 0.320363 15
|
211
|
+
Tracker3 11 0.007255 0.314157 15
|
212
|
+
Tracker3 12 0.008207 0.308028 15
|
213
|
+
Tracker3 13 0.012222 0.304101 15
|
214
|
+
Tracker3 14 0.017373 0.301191 15
|
215
|
+
Tracker3 15 0.023739 0.299411 15
|
216
|
+
Tracker3 16 0.028142 0.299685 15
|
217
|
+
Tracker3 17 0.032201 0.300252 15
|
218
|
+
Tracker3 18 0.034781 0.301710 15
|
219
|
+
Tracker3 19 0.036645 0.306820 15
|
220
|
+
Tracker3 20 0.035937 0.312500 15
|
221
|
+
Tracker3 40 -0.005130 0.314829 15
|
222
|
+
Tracker3 41 0.000325 0.312557 7
|
223
|
+
Tracker3 42 0.005197 0.310963 15
|
224
|
+
Tracker3 43 0.011339 0.308689 7
|
225
|
+
Tracker3 44 0.017815 0.305824 7
|
226
|
+
Tracker3 45 0.021060 0.305452 7
|
227
|
+
Tracker3 46 0.024337 0.308461 15
|
228
|
+
Tracker3 47 0.028931 0.306942 7
|
229
|
+
Tracker3 48 0.035168 0.301539 15
|
230
|
+
Tracker3 49 0.040325 0.297609 7
|
231
|
+
Tracker3 50 0.043717 0.294415 15
|
232
|
+
Tracker3 51 0.046907 0.291773 7
|
233
|
+
Tracker3 52 0.049399 0.290531 7
|
234
|
+
Tracker3 53 0.050129 0.294656 7
|
235
|
+
Tracker3 54 0.050744 0.298230 15
|
236
|
+
Tracker3 55 0.051485 0.301521 7
|
237
|
+
Tracker3 56 0.051569 0.303142 7
|
238
|
+
Tracker3 57 0.051006 0.305505 7
|
239
|
+
Tracker3 58 0.050257 0.307138 15
|
240
|
+
Tracker3 59 0.049008 0.308547 7
|
241
|
+
Tracker3 60 0.047433 0.310866 7
|
242
|
+
Tracker3 61 0.045471 0.316841 7
|
243
|
+
Tracker3 62 0.044452 0.321831 15
|
244
|
+
Tracker3 63 0.043458 0.325178 7
|
245
|
+
Tracker3 64 0.042290 0.328161 7
|
246
|
+
Tracker3 65 0.041015 0.330747 7
|
247
|
+
Tracker3 66 0.039468 0.332888 15
|
248
|
+
Tracker3 67 0.038275 0.334048 7
|
249
|
+
Tracker3 68 0.036228 0.336213 7
|
250
|
+
Tracker3 69 0.035155 0.338253 7
|
251
|
+
Tracker3 70 0.034285 0.339384 15
|
252
|
+
Tracker3 71 0.032638 0.340141 7
|
253
|
+
Tracker3 72 0.031543 0.339421 7
|
254
|
+
Tracker3 73 0.030046 0.337935 7
|
255
|
+
Tracker3 74 0.027736 0.336373 15
|
256
|
+
Tracker3 75 0.024826 0.334910 7
|
257
|
+
Tracker3 76 0.021665 0.334658 7
|
258
|
+
Tracker3 77 0.018086 0.335635 7
|
259
|
+
Tracker3 78 0.014007 0.337624 15
|
260
|
+
Tracker3 79 0.008818 0.340629 7
|
261
|
+
Tracker3 80 0.002227 0.345950 7
|
262
|
+
Tracker3 81 -0.003961 0.350827 7
|
263
|
+
Tracker3 82 -0.009239 0.354910 15
|
264
|
+
Tracker3 83 -0.014786 0.359154 7
|
265
|
+
Tracker3 84 -0.020123 0.364077 7
|
266
|
+
Tracker3 85 -0.023813 0.367419 15
|
267
|
+
Tracker3 86 -0.026919 0.369777 7
|
268
|
+
Tracker3 87 -0.031238 0.370984 7
|
269
|
+
Tracker3 88 -0.036058 0.370039 7
|
270
|
+
Tracker3 89 -0.039306 0.368830 15
|
271
|
+
Tracker3 90 -0.040904 0.366708 7
|
272
|
+
Tracker3 91 -0.041982 0.363644 7
|
273
|
+
Tracker3 92 -0.042299 0.361697 7
|
274
|
+
Tracker3 93 -0.042302 0.357955 15
|
275
|
+
Tracker3 94 -0.042424 0.352349 7
|
276
|
+
Tracker3 95 -0.042283 0.347697 7
|
277
|
+
Tracker3 96 -0.041098 0.343715 7
|
278
|
+
Tracker3 97 -0.039286 0.342119 15
|
279
|
+
Tracker3 98 -0.036267 0.339158 7
|
280
|
+
Tracker3 99 -0.032690 0.336237 7
|
281
|
+
Tracker3 100 -0.028295 0.334936 7
|
282
|
+
Tracker4 1 -0.141346 -0.524181 15
|
283
|
+
Tracker4 2 -0.139808 -0.524866 7
|
284
|
+
Tracker4 3 -0.137194 -0.525621 7
|
285
|
+
Tracker4 4 -0.132435 -0.526443 7
|
286
|
+
Tracker4 5 -0.126617 -0.529137 15
|
287
|
+
Tracker4 6 -0.122892 -0.531972 15
|
288
|
+
Tracker4 7 -0.118485 -0.536609 15
|
289
|
+
Tracker4 8 -0.115401 -0.540953 15
|
290
|
+
Tracker4 9 -0.111884 -0.542177 15
|
291
|
+
Tracker4 10 -0.112642 -0.547604 15
|
292
|
+
Tracker4 24 -0.022042 -0.539211 15
|
293
|
+
Tracker4 25 -0.015617 -0.520728 15
|
294
|
+
Tracker4 26 -0.009675 -0.510719 15
|
295
|
+
Tracker4 27 -0.002830 -0.498516 15
|
296
|
+
Tracker4 28 0.001370 -0.485183 7
|
297
|
+
Tracker4 29 0.003582 -0.477919 15
|
298
|
+
Tracker4 30 0.003719 -0.471637 7
|
299
|
+
Tracker4 31 0.001485 -0.465727 7
|
300
|
+
Tracker4 32 -0.002739 -0.460473 15
|
301
|
+
Tracker4 33 -0.008122 -0.459204 7
|
302
|
+
Tracker4 34 -0.014305 -0.459364 15
|
303
|
+
Tracker4 35 -0.022097 -0.458937 15
|
304
|
+
Tracker4 36 -0.030924 -0.458652 15
|
305
|
+
Tracker4 37 -0.038873 -0.459148 15
|
306
|
+
Tracker4 38 -0.045733 -0.455958 15
|
307
|
+
Tracker4 39 -0.053126 -0.455553 7
|
308
|
+
Tracker4 40 -0.062234 -0.462990 15
|
309
|
+
Tracker4 41 -0.069564 -0.466768 7
|
310
|
+
Tracker4 42 -0.076256 -0.468721 15
|
311
|
+
Tracker4 43 -0.085403 -0.471144 7
|
312
|
+
Tracker4 44 -0.096182 -0.476055 15
|
313
|
+
Tracker4 45 -0.104803 -0.475546 7
|
314
|
+
Tracker4 46 -0.111149 -0.472495 15
|
315
|
+
Tracker4 47 -0.119929 -0.476693 7
|
316
|
+
Tracker4 48 -0.130288 -0.485164 15
|
317
|
+
Tracker4 49 -0.138894 -0.488499 7
|
318
|
+
Tracker4 50 -0.146865 -0.489164 15
|
319
|
+
Tracker4 51 -0.153569 -0.489791 7
|
320
|
+
Tracker4 52 -0.159451 -0.486731 15
|
321
|
+
Tracker4 53 -0.164503 -0.479067 7
|
322
|
+
Tracker4 54 -0.168377 -0.472754 15
|
323
|
+
Tracker4 55 -0.170097 -0.469843 7
|
324
|
+
Tracker4 56 -0.170087 -0.469861 7
|
325
|
+
Tracker4 57 -0.168217 -0.470531 7
|
326
|
+
Tracker4 58 -0.165243 -0.474125 15
|
327
|
+
Tracker4 59 -0.161694 -0.479578 7
|
328
|
+
Tracker4 60 -0.156510 -0.483067 15
|
329
|
+
Tracker4 61 -0.151511 -0.484667 7
|
330
|
+
Tracker4 62 -0.145787 -0.486385 15
|
331
|
+
Tracker4 63 -0.138803 -0.489119 15
|
332
|
+
Tracker4 64 -0.132808 -0.490583 15
|
333
|
+
Tracker4 65 -0.129589 -0.492715 15
|
334
|
+
Tracker4 66 -0.124991 -0.496557 15
|
335
|
+
Tracker4 84 -0.037303 -0.496972 15
|
336
|
+
Tracker4 85 -0.031902 -0.488642 7
|
337
|
+
Tracker4 86 -0.030125 -0.484296 15
|
338
|
+
Tracker4 87 -0.027741 -0.477430 7
|
339
|
+
Tracker4 88 -0.024101 -0.471666 15
|
340
|
+
Tracker4 89 -0.023435 -0.468003 7
|
341
|
+
Tracker4 90 -0.023441 -0.466504 7
|
342
|
+
Tracker4 91 -0.024109 -0.463933 7
|
343
|
+
Tracker4 92 -0.026124 -0.459017 15
|
344
|
+
Tracker4 93 -0.029179 -0.455465 7
|
345
|
+
Tracker4 94 -0.031963 -0.451434 7
|
346
|
+
Tracker4 95 -0.035323 -0.447856 15
|
347
|
+
Tracker4 96 -0.041629 -0.442506 15
|
348
|
+
Tracker4 97 -0.048278 -0.435412 15
|
349
|
+
Tracker4 98 -0.053804 -0.430195 15
|
350
|
+
Tracker4 99 -0.058496 -0.425830 15
|
351
|
+
Tracker4 100 -0.062753 -0.420563 15
|
352
|
+
Tracker5 1 -0.206137 0.319118 15
|
353
|
+
Tracker5 2 -0.209174 0.321161 7
|
354
|
+
Tracker5 3 -0.212790 0.322182 15
|
355
|
+
Tracker5 4 -0.217395 0.322258 7
|
356
|
+
Tracker5 5 -0.222221 0.320194 7
|
357
|
+
Tracker5 6 -0.224976 0.318449 7
|
358
|
+
Tracker5 7 -0.228502 0.317380 15
|
359
|
+
Tracker5 8 -0.231699 0.314805 7
|
360
|
+
Tracker5 9 -0.232737 0.312436 7
|
361
|
+
Tracker5 10 -0.233135 0.306186 7
|
362
|
+
Tracker5 11 -0.234384 0.296288 15
|
363
|
+
Tracker5 12 -0.233790 0.285765 7
|
364
|
+
Tracker5 13 -0.229795 0.276636 7
|
365
|
+
Tracker5 14 -0.224344 0.269603 7
|
366
|
+
Tracker5 15 -0.216515 0.263445 15
|
367
|
+
Tracker5 16 -0.209469 0.260194 7
|
368
|
+
Tracker5 17 -0.203689 0.258625 7
|
369
|
+
Tracker5 18 -0.198040 0.260830 7
|
370
|
+
Tracker5 19 -0.194105 0.266561 15
|
371
|
+
Tracker5 20 -0.193240 0.270362 7
|
372
|
+
Tracker5 21 -0.193176 0.275049 7
|
373
|
+
Tracker5 22 -0.195389 0.281314 7
|
374
|
+
Tracker5 23 -0.199494 0.286278 15
|
375
|
+
Tracker5 24 -0.203009 0.291862 7
|
376
|
+
Tracker5 25 -0.205534 0.297327 7
|
377
|
+
Tracker5 26 -0.207309 0.301784 7
|
378
|
+
Tracker5 27 -0.210842 0.305487 15
|
379
|
+
Tracker5 28 -0.213848 0.307085 7
|
380
|
+
Tracker5 29 -0.214989 0.307036 7
|
381
|
+
Tracker5 30 -0.217635 0.305938 7
|
382
|
+
Tracker5 31 -0.222609 0.302859 15
|
383
|
+
Tracker5 32 -0.227926 0.299648 7
|
384
|
+
Tracker5 33 -0.232246 0.295468 7
|
385
|
+
Tracker5 34 -0.235032 0.291212 7
|
386
|
+
Tracker5 35 -0.236719 0.288172 15
|
387
|
+
Tracker5 36 -0.236046 0.288797 7
|
388
|
+
Tracker5 37 -0.233410 0.289681 7
|
389
|
+
Tracker5 38 -0.231145 0.292341 7
|
390
|
+
Tracker5 39 -0.228194 0.294578 15
|
391
|
+
Tracker5 40 -0.223469 0.294111 7
|
392
|
+
Tracker5 41 -0.219584 0.294537 7
|
393
|
+
Tracker5 42 -0.216364 0.296272 15
|
394
|
+
Tracker5 43 -0.211549 0.299429 7
|
395
|
+
Tracker5 44 -0.206356 0.301828 7
|
396
|
+
Tracker5 45 -0.203895 0.305064 7
|
397
|
+
Tracker5 46 -0.201136 0.310823 15
|
398
|
+
Tracker5 47 -0.196263 0.316489 7
|
399
|
+
Tracker5 48 -0.190688 0.320439 7
|
400
|
+
Tracker5 49 -0.186119 0.325872 7
|
401
|
+
Tracker5 50 -0.182208 0.331490 15
|
402
|
+
Tracker5 51 -0.178886 0.335618 7
|
403
|
+
Tracker5 52 -0.176032 0.341463 7
|
404
|
+
Tracker5 53 -0.174695 0.350696 7
|
405
|
+
Tracker5 54 -0.173750 0.359392 15
|
406
|
+
Tracker5 55 -0.172859 0.364302 7
|
407
|
+
Tracker5 56 -0.173142 0.367242 7
|
408
|
+
Tracker5 57 -0.174499 0.369487 7
|
409
|
+
Tracker5 58 -0.176727 0.369589 15
|
410
|
+
Tracker5 59 -0.179694 0.367297 7
|
411
|
+
Tracker5 60 -0.182898 0.365766 7
|
412
|
+
Tracker5 61 -0.185446 0.366974 15
|
413
|
+
Tracker5 62 -0.187882 0.366510 15
|
414
|
+
Tracker5 63 -0.190253 0.363769 7
|
415
|
+
Tracker5 64 -0.192139 0.361595 15
|
416
|
+
Tracker5 65 -0.193968 0.358146 7
|
417
|
+
Tracker5 66 -0.195454 0.354174 7
|
418
|
+
Tracker5 67 -0.197534 0.349025 7
|
419
|
+
Tracker5 68 -0.199962 0.344059 15
|
420
|
+
Tracker5 69 -0.201200 0.340280 7
|
421
|
+
Tracker5 70 -0.202095 0.336731 7
|
422
|
+
Tracker5 71 -0.203115 0.332478 7
|
423
|
+
Tracker5 72 -0.203762 0.326595 15
|
424
|
+
Tracker5 73 -0.204916 0.319710 7
|
425
|
+
Tracker5 74 -0.206873 0.313148 7
|
426
|
+
Tracker5 75 -0.209143 0.306793 7
|
427
|
+
Tracker5 76 -0.211395 0.301663 15
|
428
|
+
Tracker5 77 -0.213783 0.298337 7
|
429
|
+
Tracker5 78 -0.216471 0.296004 7
|
430
|
+
Tracker5 79 -0.219995 0.294290 7
|
431
|
+
Tracker5 80 -0.224138 0.294437 15
|
432
|
+
Tracker5 81 -0.227869 0.295147 7
|
433
|
+
Tracker5 82 -0.231172 0.295237 7
|
434
|
+
Tracker5 83 -0.234370 0.295840 7
|
435
|
+
Tracker5 84 -0.237074 0.296636 15
|
436
|
+
Tracker5 85 -0.239281 0.296974 7
|
437
|
+
Tracker5 86 -0.241543 0.296900 7
|
438
|
+
Tracker5 87 -0.244754 0.296136 7
|
439
|
+
Tracker5 88 -0.248675 0.293998 15
|
440
|
+
Tracker5 89 -0.251720 0.291354 7
|
441
|
+
Tracker5 90 -0.253362 0.288951 7
|
442
|
+
Tracker5 91 -0.254239 0.287857 7
|
443
|
+
Tracker5 92 -0.254576 0.288648 15
|
444
|
+
Tracker5 93 -0.254831 0.288583 7
|
445
|
+
Tracker5 94 -0.255036 0.287534 7
|
446
|
+
Tracker5 95 -0.255011 0.286478 7
|
447
|
+
Tracker5 96 -0.254294 0.287536 15
|
448
|
+
Tracker5 97 -0.252780 0.289234 7
|
449
|
+
Tracker5 98 -0.250309 0.290387 7
|
450
|
+
Tracker5 99 -0.247215 0.291968 7
|
451
|
+
Tracker5 100 -0.243232 0.295125 15
|
452
|
+
Tracker6 11 -0.266759 -0.190952 15
|
453
|
+
Tracker6 12 -0.266112 -0.201315 15
|
454
|
+
Tracker6 13 -0.262106 -0.209481 15
|
455
|
+
Tracker6 14 -0.256514 -0.217439 15
|
456
|
+
Tracker6 15 -0.248641 -0.225078 15
|
457
|
+
Tracker6 16 -0.242106 -0.230155 15
|
458
|
+
Tracker6 17 -0.235475 -0.234118 15
|
459
|
+
Tracker6 18 -0.229138 -0.235007 15
|
460
|
+
Tracker6 19 -0.224117 -0.232309 7
|
461
|
+
Tracker6 20 -0.220807 -0.231347 7
|
462
|
+
Tracker6 21 -0.218148 -0.229252 7
|
463
|
+
Tracker6 22 -0.216147 -0.225813 15
|
464
|
+
Tracker6 23 -0.214702 -0.222107 7
|
465
|
+
Tracker6 24 -0.212327 -0.216132 7
|
466
|
+
Tracker6 25 -0.209741 -0.209695 7
|
467
|
+
Tracker6 26 -0.207191 -0.203733 15
|
468
|
+
Tracker6 27 -0.205137 -0.197688 7
|
469
|
+
Tracker6 28 -0.203672 -0.193231 7
|
470
|
+
Tracker6 29 -0.202791 -0.190783 7
|
471
|
+
Tracker6 30 -0.203506 -0.188936 15
|
472
|
+
Tracker6 31 -0.206520 -0.188169 7
|
473
|
+
Tracker6 32 -0.210673 -0.187204 7
|
474
|
+
Tracker6 33 -0.215351 -0.188285 7
|
475
|
+
Tracker6 34 -0.219711 -0.189178 15
|
476
|
+
Tracker6 35 -0.224769 -0.190606 7
|
477
|
+
Tracker6 36 -0.229313 -0.187923 15
|
478
|
+
Tracker6 37 -0.232019 -0.184825 7
|
479
|
+
Tracker6 38 -0.233929 -0.179373 15
|
480
|
+
Tracker6 73 -0.242221 -0.151581 15
|
481
|
+
Tracker6 74 -0.241814 -0.159440 15
|
482
|
+
Tracker6 75 -0.241655 -0.165701 15
|
483
|
+
Tracker6 76 -0.241944 -0.172071 15
|
484
|
+
Tracker6 77 -0.241186 -0.177904 15
|
485
|
+
Tracker6 78 -0.240360 -0.182202 15
|
486
|
+
Tracker6 79 -0.240269 -0.186787 15
|
487
|
+
Tracker6 80 -0.239474 -0.190737 15
|
488
|
+
Tracker6 81 -0.238315 -0.193273 15
|
489
|
+
Tracker6 82 -0.237023 -0.194493 15
|
490
|
+
Tracker6 83 -0.234423 -0.196205 15
|
491
|
+
Tracker6 84 -0.231495 -0.196711 15
|
492
|
+
Tracker6 85 -0.229403 -0.197679 7
|
493
|
+
Tracker6 86 -0.228155 -0.197459 7
|
494
|
+
Tracker6 87 -0.227834 -0.197109 7
|
495
|
+
Tracker6 88 -0.228092 -0.196959 15
|
496
|
+
Tracker6 89 -0.228463 -0.197926 7
|
497
|
+
Tracker6 90 -0.228879 -0.199092 7
|
498
|
+
Tracker6 91 -0.229619 -0.198618 7
|
499
|
+
Tracker6 92 -0.230831 -0.196777 15
|
500
|
+
Tracker6 93 -0.232558 -0.193906 7
|
501
|
+
Tracker6 94 -0.234311 -0.192568 7
|
502
|
+
Tracker6 95 -0.236661 -0.190729 7
|
503
|
+
Tracker6 96 -0.239287 -0.185442 15
|
504
|
+
Tracker6 97 -0.241124 -0.179175 15
|
505
|
+
Tracker6 98 -0.242526 -0.175409 15
|
506
|
+
Tracker6 99 -0.243169 -0.171481 15
|
507
|
+
Tracker6 100 -0.244288 -0.166090 15
|
@@ -3,6 +3,10 @@ require File.dirname(__FILE__) + '/../helper'
|
|
3
3
|
class ShakeCatcherTest < Test::Unit::TestCase
|
4
4
|
C = Tracksperanto::ShakeGrammar::Catcher
|
5
5
|
|
6
|
+
def at(at, v)
|
7
|
+
C::At.new(at, v)
|
8
|
+
end
|
9
|
+
|
6
10
|
def test_hould_catch_simple_funcall
|
7
11
|
k = Class.new(C) do
|
8
12
|
def foofunc(a, b, c)
|
@@ -16,10 +20,10 @@ class ShakeCatcherTest < Test::Unit::TestCase
|
|
16
20
|
def test_uknown_funcalls
|
17
21
|
k = Class.new(C)
|
18
22
|
tree = parse("OuterFunc(InnerFunc(15)", k)
|
19
|
-
assert_equal [:unknown_func], tree
|
23
|
+
assert_equal [[:unknown_func]], tree
|
20
24
|
|
21
25
|
tree = parse("OuterFunc(15);", k)
|
22
|
-
assert_equal [:unknown_func], tree
|
26
|
+
assert_equal [[:unknown_func]], tree
|
23
27
|
end
|
24
28
|
|
25
29
|
def test_nested_funcalls
|
@@ -45,25 +49,18 @@ class ShakeCatcherTest < Test::Unit::TestCase
|
|
45
49
|
end
|
46
50
|
|
47
51
|
tree = parse('Hermite(0,[1379.04,-0.02,-0.02]@1,[1379.04,-0.03,-0.03]@2)', k)
|
48
|
-
assert_equal [[:retval, [[1379.04, -0.02, -0.02],
|
52
|
+
assert_equal [[:retval, [at(1, [1379.04, -0.02, -0.02]), at(2, [1379.04, -0.03, -0.03])]]], tree
|
49
53
|
end
|
50
54
|
|
51
55
|
def test_linear_funcall
|
52
56
|
k = Class.new(C) do
|
53
57
|
def linear(first_arg, *keyframes)
|
54
|
-
|
58
|
+
123
|
55
59
|
end
|
56
60
|
end
|
57
61
|
|
58
62
|
tree = parse('Linear(0,591.702@1,591.452@2,591.202@3,590.733@4,590.202@5,589.421@6,589.249@7)', k)
|
59
|
-
assert_equal [[:retval,
|
60
|
-
[[[:atom_f, 591.702], [:atom_at_i, 1]],
|
61
|
-
[[:atom_f, 591.452], [:atom_at_i, 2]],
|
62
|
-
[[:atom_f, 591.202], [:atom_at_i, 3]],
|
63
|
-
[[:atom_f, 590.733], [:atom_at_i, 4]],
|
64
|
-
[[:atom_f, 590.202], [:atom_at_i, 5]],
|
65
|
-
[[:atom_f, 589.421], [:atom_at_i, 6]],
|
66
|
-
[[:atom_f, 589.249], [:atom_at_i, 7]]]]], tree
|
63
|
+
assert_equal [[:retval, 123]], tree
|
67
64
|
end
|
68
65
|
|
69
66
|
def test_nested_funcalls_with_array_return
|
@@ -20,10 +20,12 @@ class ShakeLexerTest < Test::Unit::TestCase
|
|
20
20
|
curve = 'Hermite(0,[1379.04,-0.02,-0.02]@1,[1379.04,-0.03,-0.03]@2)'
|
21
21
|
s = parse(curve)
|
22
22
|
assert_equal [
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
]
|
23
|
+
[:funcall,
|
24
|
+
"Hermite",
|
25
|
+
0,
|
26
|
+
[:value_at, 1, [:arr, [1379.04, -0.02, -0.02]]],
|
27
|
+
[:value_at, 2, [:arr, [1379.04, -0.03, -0.03]]]
|
28
|
+
]
|
27
29
|
], s
|
28
30
|
end
|
29
31
|
|
@@ -35,46 +37,49 @@ class ShakeLexerTest < Test::Unit::TestCase
|
|
35
37
|
|
36
38
|
def test_parse_funcall
|
37
39
|
s = parse ' DoFoo(1, 2, 3, "Welcome!\"\""); '
|
38
|
-
assert_equal [[:funcall, "DoFoo",
|
40
|
+
assert_equal [[:funcall, "DoFoo", 1, 2, 3, "Welcome!\"\""]], s
|
39
41
|
end
|
40
42
|
|
41
43
|
def test_parse_nested_funcall
|
42
44
|
s = parse ' DoFoo(1, Foo(4));'
|
43
|
-
assert_equal [[:funcall, "DoFoo",
|
45
|
+
assert_equal [[:funcall, "DoFoo", 1, [:funcall, "Foo", 4]]], s
|
44
46
|
end
|
45
47
|
|
46
48
|
def test_parse_single_nested_funcall
|
47
49
|
s = parse("OuterFunc(InnerFunc(15)")
|
48
|
-
assert_equal [[:funcall, "OuterFunc", [:funcall, "InnerFunc",
|
50
|
+
assert_equal [[:funcall, "OuterFunc", [:funcall, "InnerFunc", 15]]], s
|
49
51
|
end
|
50
52
|
|
51
53
|
def test_parse_single_funcall
|
52
54
|
s = parse('SomeFunc(1,2,3)')
|
53
|
-
assert_equal [[:funcall, "SomeFunc",
|
55
|
+
assert_equal [[:funcall, "SomeFunc", 1, 2, 3]], s
|
54
56
|
end
|
55
57
|
|
56
58
|
def test_parse_funcall_with_valueats
|
57
59
|
s = parse 'Linear(0,716.08@1,715.846@2,715.518@3,715.034@4,714.377@5)'
|
58
60
|
assert_equal(
|
59
|
-
[
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
]
|
67
|
-
|
61
|
+
[[
|
62
|
+
:funcall,
|
63
|
+
"Linear",
|
64
|
+
0,
|
65
|
+
[:value_at, 1, 716.08],
|
66
|
+
[:value_at, 2, 715.846],
|
67
|
+
[:value_at, 3, 715.518],
|
68
|
+
[:value_at, 4, 715.034],
|
69
|
+
[:value_at, 5, 714.377]
|
70
|
+
]],
|
68
71
|
s)
|
69
72
|
end
|
70
73
|
|
71
74
|
def test_parse_hermite_valuats_containing_arrays
|
72
75
|
# Hermite curves use array args
|
73
76
|
s = parse 'Hermite(0,[-64,98.33,98.33]@1,[50,97.29,97.29]@4)'
|
74
|
-
ref = [[
|
75
|
-
|
76
|
-
|
77
|
-
|
77
|
+
ref = [[
|
78
|
+
:funcall,
|
79
|
+
"Hermite",
|
80
|
+
0,
|
81
|
+
[:value_at, 1, [:arr, [-64.0, 98.33, 98.33]]],
|
82
|
+
[:value_at, 4, [:arr, [50, 97.29, 97.29]]]
|
78
83
|
]]
|
79
84
|
assert_equal ref, s
|
80
85
|
end
|
@@ -88,9 +93,8 @@ class ShakeLexerTest < Test::Unit::TestCase
|
|
88
93
|
end
|
89
94
|
|
90
95
|
def test_parse_varassign
|
91
|
-
s = parse 'Foo = Blur(Foo, 1, 2, 3);'
|
92
|
-
assert_equal [[:
|
93
|
-
[:atom_i, 2], [:atom_i, 3]]], s
|
96
|
+
s = parse 'Foo = Blur(Foo, 1, 2, 3); 1'
|
97
|
+
assert_equal [[:assign, "Foo", [:funcall, "Blur", [:atom, "Foo"], 1, 2, 3]]], s
|
94
98
|
end
|
95
99
|
|
96
100
|
def test_parse_whole_file_does_not_raise
|
@@ -10,13 +10,14 @@ class ShakeScriptImportTest < Test::Unit::TestCase
|
|
10
10
|
assert_equal 50, trackers.length
|
11
11
|
|
12
12
|
t = trackers[0]
|
13
|
-
assert_equal "
|
13
|
+
assert_equal "Tracker8_track1", t.name
|
14
14
|
|
15
15
|
first_kf = t.keyframes[0]
|
16
|
-
assert_equal
|
17
|
-
|
18
|
-
assert_in_delta
|
19
|
-
assert_in_delta
|
16
|
+
assert_equal 107, first_kf.frame
|
17
|
+
|
18
|
+
assert_in_delta 1065.41, first_kf.abs_y, DELTA
|
19
|
+
assert_in_delta 1281.14, first_kf.abs_x, DELTA
|
20
|
+
assert_in_delta 1.0, first_kf.residual, DELTA
|
20
21
|
|
21
22
|
second_kf = t.keyframes[1]
|
22
23
|
assert_in_delta 0.00129, second_kf.residual, DELTA
|
@@ -100,14 +101,13 @@ class ShakeScriptImportTest < Test::Unit::TestCase
|
|
100
101
|
fixture = File.open(File.dirname(__FILE__) + "/samples/shake_script/stabilize_nodes_with_hermite.shk")
|
101
102
|
trackers = Tracksperanto::Import::ShakeScript.new.parse(fixture)
|
102
103
|
assert_equal 3, trackers.length
|
103
|
-
|
104
104
|
last_t = trackers[-1]
|
105
|
-
assert_equal "
|
106
|
-
assert_equal
|
105
|
+
assert_equal "Stabilize1_track1", last_t.name
|
106
|
+
assert_equal 73, last_t.length
|
107
107
|
|
108
108
|
last_kf = last_t[-1]
|
109
109
|
assert_equal 76, last_kf.frame
|
110
|
-
assert_in_delta
|
111
|
-
assert_in_delta
|
110
|
+
assert_in_delta 1256.72, last_kf.abs_x, DELTA
|
111
|
+
assert_in_delta 1569.04, last_kf.abs_y, DELTA
|
112
112
|
end
|
113
113
|
end
|
@@ -27,4 +27,14 @@ class SyntheyesImportTest < Test::Unit::TestCase
|
|
27
27
|
assert_in_delta 886.212, first_kf.abs_y, DELTA
|
28
28
|
assert_in_delta 0.0, first_kf.residual, DELTA
|
29
29
|
end
|
30
|
+
|
31
|
+
def test_parsing_cola_plate
|
32
|
+
fixture = File.open(File.dirname(__FILE__) + '/samples/syntheyes_2d_paths/cola_plate.txt')
|
33
|
+
parser = Tracksperanto::Import::Syntheyes.new
|
34
|
+
parser.width = 1920
|
35
|
+
parser.height = 1080
|
36
|
+
|
37
|
+
trackers = parser.parse(fixture)
|
38
|
+
assert_equal 6, trackers.length
|
39
|
+
end
|
30
40
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tracksperanto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julik Tarkhanov
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-21 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -120,10 +120,10 @@ files:
|
|
120
120
|
- test/export/test_syntheyes_export.rb
|
121
121
|
- test/helper.rb
|
122
122
|
- test/import/.DS_Store
|
123
|
-
- test/import/samples/.DS_Store
|
124
123
|
- test/import/samples/3de_v3/3de_export_v3.txt
|
125
124
|
- test/import/samples/3de_v4/3de_export_cube.txt
|
126
125
|
- test/import/samples/boujou_features_text/boujou_txt_export.txt
|
126
|
+
- test/import/samples/flame_stabilizer/.DS_Store
|
127
127
|
- test/import/samples/flame_stabilizer/fromCombustion_fromMidClip_wSnap.stabilizer
|
128
128
|
- test/import/samples/flame_stabilizer/hugeFlameSetup.stabilizer
|
129
129
|
- test/import/samples/flame_stabilizer/megaTrack.action.3dtrack.stabilizer
|
@@ -135,7 +135,9 @@ files:
|
|
135
135
|
- test/import/samples/nuke/tracker_with_differing_gaps.nk
|
136
136
|
- test/import/samples/nuke/tracker_with_repeating_gaps.nk
|
137
137
|
- test/import/samples/pftrack4/sourcefile_pftrack.2dt
|
138
|
+
- test/import/samples/pftrack5/.DS_Store
|
138
139
|
- test/import/samples/pftrack5/garage.2dt
|
140
|
+
- test/import/samples/shake_script/.DS_Store
|
139
141
|
- test/import/samples/shake_script/four_tracks_in_one_matchmove.shk
|
140
142
|
- test/import/samples/shake_script/four_tracks_in_one_stabilizer.shk
|
141
143
|
- test/import/samples/shake_script/shake_script_from_boujou.shk
|
@@ -148,6 +150,8 @@ files:
|
|
148
150
|
- test/import/samples/shake_text/one_shake_tracker.txt
|
149
151
|
- test/import/samples/shake_text/one_shake_tracker_from_first.txt
|
150
152
|
- test/import/samples/shake_text/two_shake_trackers.txt
|
153
|
+
- test/import/samples/syntheyes_2d_paths/.DS_Store
|
154
|
+
- test/import/samples/syntheyes_2d_paths/cola_plate.txt
|
151
155
|
- test/import/samples/syntheyes_2d_paths/flyover2DP_syntheyes.txt
|
152
156
|
- test/import/samples/syntheyes_2d_paths/shake_tracker_nodes_to_syntheyes.txt
|
153
157
|
- test/import/test_3de_import.rb
|