tracksperanto 1.6.8 → 1.6.9
Sign up to get free protection for your applications and to get access to all the features.
- 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
|