tracksperanto 1.9.0 → 1.9.1
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 +3 -0
- data/coverage.info +0 -0
- data/lib/import/flame_stabilizer.rb +0 -3
- data/lib/pipeline/base.rb +18 -20
- data/lib/tracksperanto/returning.rb +1 -1
- data/lib/tracksperanto.rb +1 -1
- data/test/import/samples/flame_stabilizer/fromTracksperanto.stabilizer +541 -0
- data/test/import/test_flame_import.rb +8 -0
- data/test/test_pipeline.rb +84 -0
- metadata +5 -1
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -4,6 +4,7 @@ Manifest.txt
|
|
4
4
|
README.txt
|
5
5
|
Rakefile
|
6
6
|
bin/tracksperanto
|
7
|
+
coverage.info
|
7
8
|
lib/export/base.rb
|
8
9
|
lib/export/equalizer3.rb
|
9
10
|
lib/export/equalizer4.rb
|
@@ -84,6 +85,7 @@ test/import/samples/3de_v3/3de_export_v3.txt
|
|
84
85
|
test/import/samples/3de_v4/3de_export_cube.txt
|
85
86
|
test/import/samples/boujou_features_text/boujou_txt_export.txt
|
86
87
|
test/import/samples/flame_stabilizer/fromCombustion_fromMidClip_wSnap.stabilizer
|
88
|
+
test/import/samples/flame_stabilizer/fromTracksperanto.stabilizer
|
87
89
|
test/import/samples/flame_stabilizer/hugeFlameSetup.stabilizer
|
88
90
|
test/import/samples/flame_stabilizer/megaTrack.action.3dtrack.stabilizer
|
89
91
|
test/import/samples/match_mover/kipPointsMatchmover.rz2
|
@@ -139,6 +141,7 @@ test/test_extio.rb
|
|
139
141
|
test/test_flame_builder.rb
|
140
142
|
test/test_format_detector.rb
|
141
143
|
test/test_keyframe.rb
|
144
|
+
test/test_pipeline.rb
|
142
145
|
test/test_progressive_io.rb
|
143
146
|
test/test_simple_export.rb
|
144
147
|
test/test_tracker.rb
|
data/coverage.info
ADDED
Binary file
|
@@ -30,8 +30,6 @@ class Tracksperanto::Import::FlameStabilizer < Tracksperanto::Import::Base
|
|
30
30
|
keyframe_count_matcher = /Size (\d+)/
|
31
31
|
indent = nil
|
32
32
|
|
33
|
-
keyframes = []
|
34
|
-
|
35
33
|
while line = io.gets
|
36
34
|
|
37
35
|
unless indent
|
@@ -47,7 +45,6 @@ class Tracksperanto::Import::FlameStabilizer < Tracksperanto::Import::Base
|
|
47
45
|
break
|
48
46
|
end
|
49
47
|
end
|
50
|
-
|
51
48
|
raise "Parsed a channel #{@name} with no keyframes" if (empty? && !base_value)
|
52
49
|
end
|
53
50
|
|
data/lib/pipeline/base.rb
CHANGED
@@ -13,6 +13,7 @@
|
|
13
13
|
# and setup outputs for all supported export formats.
|
14
14
|
class Tracksperanto::Pipeline::Base
|
15
15
|
EXTENSION = /\.([^\.]+)$/ #:nodoc:
|
16
|
+
PERMITTED_OPTIONS = [:importer, :width, :height]
|
16
17
|
|
17
18
|
include Tracksperanto::BlockInit
|
18
19
|
|
@@ -32,8 +33,6 @@ class Tracksperanto::Pipeline::Base
|
|
32
33
|
# Assign an array of exporters to use them instead of the standard ones
|
33
34
|
attr_accessor :exporters
|
34
35
|
|
35
|
-
DEFAULT_OPTIONS = {:width => 720, :height => 576, :parser => Tracksperanto::Import::ShakeScript }
|
36
|
-
|
37
36
|
# Contains arrays of the form ["MiddewareName", {:param => value}]
|
38
37
|
attr_accessor :middleware_tuples
|
39
38
|
|
@@ -50,13 +49,12 @@ class Tracksperanto::Pipeline::Base
|
|
50
49
|
# * height - The comp height, for the case that the format does not support auto size
|
51
50
|
# * parser - The parser class, for the case that it can't be autodetected from the file name
|
52
51
|
def run(from_input_file_path, passed_options = {}) #:yields: *all_middlewares
|
53
|
-
o = DEFAULT_OPTIONS.merge(passed_options)
|
54
52
|
|
55
53
|
# Reset stats
|
56
54
|
@converted_keyframes, @converted_points = 0, 0
|
57
55
|
|
58
56
|
# Assign the parser
|
59
|
-
importer = initialize_importer_with_path_and_options(from_input_file_path,
|
57
|
+
importer = initialize_importer_with_path_and_options(from_input_file_path, passed_options)
|
60
58
|
|
61
59
|
# Open the file
|
62
60
|
read_data = File.open(from_input_file_path, "rb")
|
@@ -74,17 +72,20 @@ class Tracksperanto::Pipeline::Base
|
|
74
72
|
end
|
75
73
|
|
76
74
|
def initialize_importer_with_path_and_options(from_input_file_path, options)
|
75
|
+
|
77
76
|
d = Tracksperanto::FormatDetector.new(from_input_file_path)
|
78
|
-
|
77
|
+
|
78
|
+
if options[:importer]
|
79
|
+
imp = Tracksperanto.get_importer(options[:importer])
|
80
|
+
require_dimensions_in!(options) unless imp.autodetects_size?
|
81
|
+
imp.new(:width => options[:width], :height => options[:height])
|
82
|
+
elsif d.match? && d.auto_size?
|
79
83
|
d.importer_klass.new
|
80
84
|
elsif d.match?
|
81
|
-
require_dimensions_in!(
|
82
|
-
d.importer_klass.new(:width =>
|
85
|
+
require_dimensions_in!(options)
|
86
|
+
d.importer_klass.new(:width => options[:width], :height => options[:height])
|
83
87
|
else
|
84
|
-
raise "
|
85
|
-
klass = Tracksperanto.get_exporter(opts[:parser])
|
86
|
-
require_dimensions_in!(opts) unless klass.autodetects_size?
|
87
|
-
klass.new(:width => opts[:width], :height => opts[:height])
|
88
|
+
raise "Unknown input format"
|
88
89
|
end
|
89
90
|
end
|
90
91
|
|
@@ -95,13 +96,13 @@ class Tracksperanto::Pipeline::Base
|
|
95
96
|
# Runs the export and returns the number of points and keyframes processed.
|
96
97
|
# If a block is passed, the block will receive the percent complete and the last
|
97
98
|
# status message that you can pass back to the UI
|
98
|
-
def run_export(tracker_data_io,
|
99
|
+
def run_export(tracker_data_io, importer, exporter)
|
99
100
|
points, keyframes, percent_complete = 0, 0, 0.0
|
100
101
|
|
101
102
|
report_progress(percent_complete, "Starting the parser")
|
102
103
|
|
103
104
|
# Report progress from the parser
|
104
|
-
|
105
|
+
importer.progress_block = lambda { | m | report_progress(percent_complete, m) }
|
105
106
|
|
106
107
|
# Wrap the input in a progressive IO, setup a lambda that will spy on the reader and
|
107
108
|
# update the percentage. We will only broadcast messages that come from the parser
|
@@ -110,9 +111,8 @@ class Tracksperanto::Pipeline::Base
|
|
110
111
|
percent_complete = (50.0 / of_total) * offset
|
111
112
|
end
|
112
113
|
@ios << io_with_progress
|
113
|
-
|
114
|
-
trackers =
|
115
|
-
|
114
|
+
|
115
|
+
trackers = importer.parse(io_with_progress)
|
116
116
|
report_progress(percent_complete = 50.0, "Validating #{trackers.length} imported trackers")
|
117
117
|
|
118
118
|
validate_trackers!(trackers)
|
@@ -122,7 +122,7 @@ class Tracksperanto::Pipeline::Base
|
|
122
122
|
percent_per_tracker = (100.0 - percent_complete) / trackers.length
|
123
123
|
|
124
124
|
# Use the width and height provided by the parser itself
|
125
|
-
exporter.start_export(
|
125
|
+
exporter.start_export(importer.width, importer.height)
|
126
126
|
trackers.each_with_index do | t, tracker_idx |
|
127
127
|
kf_weight = percent_per_tracker / t.keyframes.length
|
128
128
|
points += 1
|
@@ -160,9 +160,7 @@ class Tracksperanto::Pipeline::Base
|
|
160
160
|
# Open the file for writing and register it to be closed automatically
|
161
161
|
def open_owned_export_file(path_to_file)
|
162
162
|
@ios ||= []
|
163
|
-
|
164
|
-
@ios << handle
|
165
|
-
handle
|
163
|
+
@ios.push(File.open(path_to_file, "wb"))[-1]
|
166
164
|
end
|
167
165
|
|
168
166
|
# Check that the trackers made by the parser are A-OK
|
data/lib/tracksperanto.rb
CHANGED
@@ -0,0 +1,541 @@
|
|
1
|
+
StabilizerFileVersion 5.0
|
2
|
+
CreationDate Sun Mar 21 16:46:25 2010
|
3
|
+
|
4
|
+
|
5
|
+
NbTrackers 3
|
6
|
+
Selected 0
|
7
|
+
FrameWidth 720
|
8
|
+
FrameHeight 576
|
9
|
+
AutoKey yes
|
10
|
+
MotionPath yes
|
11
|
+
Icons yes
|
12
|
+
AutoPan no
|
13
|
+
EditMode 0
|
14
|
+
Format 0
|
15
|
+
Padding
|
16
|
+
Red 0
|
17
|
+
Green 100
|
18
|
+
Blue 0
|
19
|
+
Oversampling no
|
20
|
+
Opacity 50
|
21
|
+
Zoom 3
|
22
|
+
Field no
|
23
|
+
Backward no
|
24
|
+
Anim
|
25
|
+
Channel tracker1/track/x
|
26
|
+
Extrapolation constant
|
27
|
+
Value 360
|
28
|
+
Colour 50 50 50
|
29
|
+
End
|
30
|
+
Channel tracker1/track/y
|
31
|
+
Extrapolation constant
|
32
|
+
Value 288
|
33
|
+
Colour 50 50 50
|
34
|
+
End
|
35
|
+
Channel tracker1/track/width
|
36
|
+
Extrapolation linear
|
37
|
+
Value 15
|
38
|
+
Colour 50 50 50
|
39
|
+
End
|
40
|
+
Channel tracker1/track/height
|
41
|
+
Extrapolation linear
|
42
|
+
Value 15
|
43
|
+
Colour 50 50 50
|
44
|
+
End
|
45
|
+
Channel tracker1/ref/width
|
46
|
+
Extrapolation linear
|
47
|
+
Value 10
|
48
|
+
Colour 50 50 50
|
49
|
+
End
|
50
|
+
Channel tracker1/ref/height
|
51
|
+
Extrapolation linear
|
52
|
+
Value 10
|
53
|
+
Colour 50 50 50
|
54
|
+
End
|
55
|
+
Channel tracker1/ref/x
|
56
|
+
Extrapolation constant
|
57
|
+
Value 100.000
|
58
|
+
Colour 50 50 50
|
59
|
+
KeyVersion 1
|
60
|
+
Size 1
|
61
|
+
Key 0
|
62
|
+
Frame 1
|
63
|
+
Value 100.000
|
64
|
+
Interpolation constant
|
65
|
+
LeftSlope 2.400
|
66
|
+
RightSlope 2.400
|
67
|
+
End
|
68
|
+
End
|
69
|
+
Channel tracker1/ref/y
|
70
|
+
Extrapolation constant
|
71
|
+
Value 200.000
|
72
|
+
Colour 50 50 50
|
73
|
+
KeyVersion 1
|
74
|
+
Size 1
|
75
|
+
Key 0
|
76
|
+
Frame 1
|
77
|
+
Value 200.000
|
78
|
+
Interpolation constant
|
79
|
+
LeftSlope 2.400
|
80
|
+
RightSlope 2.400
|
81
|
+
End
|
82
|
+
End
|
83
|
+
Channel tracker1/ref/dx
|
84
|
+
Extrapolation constant
|
85
|
+
Value 0
|
86
|
+
Colour 50 50 50
|
87
|
+
Size 2
|
88
|
+
KeyVersion 1
|
89
|
+
Key 0
|
90
|
+
Frame 0
|
91
|
+
Value 0
|
92
|
+
ValueLock yes
|
93
|
+
DeleteLock yes
|
94
|
+
Interpolation constant
|
95
|
+
End
|
96
|
+
Key 1
|
97
|
+
Frame 1
|
98
|
+
Value 0
|
99
|
+
ValueLock yes
|
100
|
+
DeleteLock yes
|
101
|
+
Interpolation constant
|
102
|
+
End
|
103
|
+
End
|
104
|
+
Channel tracker1/ref/dy
|
105
|
+
Extrapolation constant
|
106
|
+
Value 0
|
107
|
+
Colour 50 50 50
|
108
|
+
Size 2
|
109
|
+
KeyVersion 1
|
110
|
+
Key 0
|
111
|
+
Frame 0
|
112
|
+
Value 0
|
113
|
+
ValueLock yes
|
114
|
+
DeleteLock yes
|
115
|
+
Interpolation constant
|
116
|
+
End
|
117
|
+
Key 1
|
118
|
+
Frame 1
|
119
|
+
Value 0
|
120
|
+
ValueLock yes
|
121
|
+
DeleteLock yes
|
122
|
+
Interpolation constant
|
123
|
+
End
|
124
|
+
End
|
125
|
+
Channel tracker1/offset/x
|
126
|
+
Extrapolation constant
|
127
|
+
Value 0
|
128
|
+
End
|
129
|
+
Channel tracker1/offset/y
|
130
|
+
Extrapolation constant
|
131
|
+
Value 0
|
132
|
+
End
|
133
|
+
Channel tracker1/shift/x
|
134
|
+
Extrapolation constant
|
135
|
+
Value 0
|
136
|
+
KeyVersion 1
|
137
|
+
Size 3
|
138
|
+
Key 0
|
139
|
+
Frame 4
|
140
|
+
Value 0
|
141
|
+
Interpolation linear
|
142
|
+
LeftSlope 2.400
|
143
|
+
RightSlope 2.400
|
144
|
+
End
|
145
|
+
Key 1
|
146
|
+
Frame 5
|
147
|
+
Value -100.000
|
148
|
+
Interpolation linear
|
149
|
+
LeftSlope 2.400
|
150
|
+
RightSlope 2.400
|
151
|
+
End
|
152
|
+
Key 2
|
153
|
+
Frame 6
|
154
|
+
Value -110.000
|
155
|
+
Interpolation linear
|
156
|
+
LeftSlope 2.400
|
157
|
+
RightSlope 2.400
|
158
|
+
End
|
159
|
+
End
|
160
|
+
Channel tracker1/shift/y
|
161
|
+
Extrapolation constant
|
162
|
+
Value 0
|
163
|
+
KeyVersion 1
|
164
|
+
Size 3
|
165
|
+
Key 0
|
166
|
+
Frame 4
|
167
|
+
Value 0
|
168
|
+
Interpolation linear
|
169
|
+
LeftSlope 2.400
|
170
|
+
RightSlope 2.400
|
171
|
+
End
|
172
|
+
Key 1
|
173
|
+
Frame 5
|
174
|
+
Value 80.000
|
175
|
+
Interpolation linear
|
176
|
+
LeftSlope 2.400
|
177
|
+
RightSlope 2.400
|
178
|
+
End
|
179
|
+
Key 2
|
180
|
+
Frame 6
|
181
|
+
Value 55.000
|
182
|
+
Interpolation linear
|
183
|
+
LeftSlope 2.400
|
184
|
+
RightSlope 2.400
|
185
|
+
End
|
186
|
+
End
|
187
|
+
Channel tracker2/track/x
|
188
|
+
Extrapolation constant
|
189
|
+
Value 360
|
190
|
+
Colour 50 50 50
|
191
|
+
End
|
192
|
+
Channel tracker2/track/y
|
193
|
+
Extrapolation constant
|
194
|
+
Value 288
|
195
|
+
Colour 50 50 50
|
196
|
+
End
|
197
|
+
Channel tracker2/track/width
|
198
|
+
Extrapolation linear
|
199
|
+
Value 15
|
200
|
+
Colour 50 50 50
|
201
|
+
End
|
202
|
+
Channel tracker2/track/height
|
203
|
+
Extrapolation linear
|
204
|
+
Value 15
|
205
|
+
Colour 50 50 50
|
206
|
+
End
|
207
|
+
Channel tracker2/ref/width
|
208
|
+
Extrapolation linear
|
209
|
+
Value 10
|
210
|
+
Colour 50 50 50
|
211
|
+
End
|
212
|
+
Channel tracker2/ref/height
|
213
|
+
Extrapolation linear
|
214
|
+
Value 10
|
215
|
+
Colour 50 50 50
|
216
|
+
End
|
217
|
+
Channel tracker2/ref/x
|
218
|
+
Extrapolation constant
|
219
|
+
Value 100.000
|
220
|
+
Colour 50 50 50
|
221
|
+
KeyVersion 1
|
222
|
+
Size 1
|
223
|
+
Key 0
|
224
|
+
Frame 1
|
225
|
+
Value 100.000
|
226
|
+
Interpolation constant
|
227
|
+
LeftSlope 2.400
|
228
|
+
RightSlope 2.400
|
229
|
+
End
|
230
|
+
End
|
231
|
+
Channel tracker2/ref/y
|
232
|
+
Extrapolation constant
|
233
|
+
Value 200.000
|
234
|
+
Colour 50 50 50
|
235
|
+
KeyVersion 1
|
236
|
+
Size 1
|
237
|
+
Key 0
|
238
|
+
Frame 1
|
239
|
+
Value 200.000
|
240
|
+
Interpolation constant
|
241
|
+
LeftSlope 2.400
|
242
|
+
RightSlope 2.400
|
243
|
+
End
|
244
|
+
End
|
245
|
+
Channel tracker2/ref/dx
|
246
|
+
Extrapolation constant
|
247
|
+
Value 0
|
248
|
+
Colour 50 50 50
|
249
|
+
Size 2
|
250
|
+
KeyVersion 1
|
251
|
+
Key 0
|
252
|
+
Frame 0
|
253
|
+
Value 0
|
254
|
+
ValueLock yes
|
255
|
+
DeleteLock yes
|
256
|
+
Interpolation constant
|
257
|
+
End
|
258
|
+
Key 1
|
259
|
+
Frame 1
|
260
|
+
Value 0
|
261
|
+
ValueLock yes
|
262
|
+
DeleteLock yes
|
263
|
+
Interpolation constant
|
264
|
+
End
|
265
|
+
End
|
266
|
+
Channel tracker2/ref/dy
|
267
|
+
Extrapolation constant
|
268
|
+
Value 0
|
269
|
+
Colour 50 50 50
|
270
|
+
Size 2
|
271
|
+
KeyVersion 1
|
272
|
+
Key 0
|
273
|
+
Frame 0
|
274
|
+
Value 0
|
275
|
+
ValueLock yes
|
276
|
+
DeleteLock yes
|
277
|
+
Interpolation constant
|
278
|
+
End
|
279
|
+
Key 1
|
280
|
+
Frame 1
|
281
|
+
Value 0
|
282
|
+
ValueLock yes
|
283
|
+
DeleteLock yes
|
284
|
+
Interpolation constant
|
285
|
+
End
|
286
|
+
End
|
287
|
+
Channel tracker2/offset/x
|
288
|
+
Extrapolation constant
|
289
|
+
Value 0
|
290
|
+
End
|
291
|
+
Channel tracker2/offset/y
|
292
|
+
Extrapolation constant
|
293
|
+
Value 0
|
294
|
+
End
|
295
|
+
Channel tracker2/shift/x
|
296
|
+
Extrapolation constant
|
297
|
+
Value 0
|
298
|
+
KeyVersion 1
|
299
|
+
Size 3
|
300
|
+
Key 0
|
301
|
+
Frame 4
|
302
|
+
Value 0
|
303
|
+
Interpolation linear
|
304
|
+
LeftSlope 2.400
|
305
|
+
RightSlope 2.400
|
306
|
+
End
|
307
|
+
Key 1
|
308
|
+
Frame 5
|
309
|
+
Value -100.000
|
310
|
+
Interpolation linear
|
311
|
+
LeftSlope 2.400
|
312
|
+
RightSlope 2.400
|
313
|
+
End
|
314
|
+
Key 2
|
315
|
+
Frame 6
|
316
|
+
Value -110.000
|
317
|
+
Interpolation linear
|
318
|
+
LeftSlope 2.400
|
319
|
+
RightSlope 2.400
|
320
|
+
End
|
321
|
+
End
|
322
|
+
Channel tracker2/shift/y
|
323
|
+
Extrapolation constant
|
324
|
+
Value 0
|
325
|
+
KeyVersion 1
|
326
|
+
Size 3
|
327
|
+
Key 0
|
328
|
+
Frame 4
|
329
|
+
Value 0
|
330
|
+
Interpolation linear
|
331
|
+
LeftSlope 2.400
|
332
|
+
RightSlope 2.400
|
333
|
+
End
|
334
|
+
Key 1
|
335
|
+
Frame 5
|
336
|
+
Value 80.000
|
337
|
+
Interpolation linear
|
338
|
+
LeftSlope 2.400
|
339
|
+
RightSlope 2.400
|
340
|
+
End
|
341
|
+
Key 2
|
342
|
+
Frame 6
|
343
|
+
Value 55.000
|
344
|
+
Interpolation linear
|
345
|
+
LeftSlope 2.400
|
346
|
+
RightSlope 2.400
|
347
|
+
End
|
348
|
+
End
|
349
|
+
Channel tracker3/track/x
|
350
|
+
Extrapolation constant
|
351
|
+
Value 360
|
352
|
+
Colour 50 50 50
|
353
|
+
End
|
354
|
+
Channel tracker3/track/y
|
355
|
+
Extrapolation constant
|
356
|
+
Value 288
|
357
|
+
Colour 50 50 50
|
358
|
+
End
|
359
|
+
Channel tracker3/track/width
|
360
|
+
Extrapolation linear
|
361
|
+
Value 15
|
362
|
+
Colour 50 50 50
|
363
|
+
End
|
364
|
+
Channel tracker3/track/height
|
365
|
+
Extrapolation linear
|
366
|
+
Value 15
|
367
|
+
Colour 50 50 50
|
368
|
+
End
|
369
|
+
Channel tracker3/ref/width
|
370
|
+
Extrapolation linear
|
371
|
+
Value 10
|
372
|
+
Colour 50 50 50
|
373
|
+
End
|
374
|
+
Channel tracker3/ref/height
|
375
|
+
Extrapolation linear
|
376
|
+
Value 10
|
377
|
+
Colour 50 50 50
|
378
|
+
End
|
379
|
+
Channel tracker3/ref/x
|
380
|
+
Extrapolation constant
|
381
|
+
Value 100.000
|
382
|
+
Colour 50 50 50
|
383
|
+
KeyVersion 1
|
384
|
+
Size 1
|
385
|
+
Key 0
|
386
|
+
Frame 1
|
387
|
+
Value 100.000
|
388
|
+
Interpolation constant
|
389
|
+
LeftSlope 2.400
|
390
|
+
RightSlope 2.400
|
391
|
+
End
|
392
|
+
End
|
393
|
+
Channel tracker3/ref/y
|
394
|
+
Extrapolation constant
|
395
|
+
Value 200.000
|
396
|
+
Colour 50 50 50
|
397
|
+
KeyVersion 1
|
398
|
+
Size 1
|
399
|
+
Key 0
|
400
|
+
Frame 1
|
401
|
+
Value 200.000
|
402
|
+
Interpolation constant
|
403
|
+
LeftSlope 2.400
|
404
|
+
RightSlope 2.400
|
405
|
+
End
|
406
|
+
End
|
407
|
+
Channel tracker3/ref/dx
|
408
|
+
Extrapolation constant
|
409
|
+
Value 0
|
410
|
+
Colour 50 50 50
|
411
|
+
Size 2
|
412
|
+
KeyVersion 1
|
413
|
+
Key 0
|
414
|
+
Frame 0
|
415
|
+
Value 0
|
416
|
+
ValueLock yes
|
417
|
+
DeleteLock yes
|
418
|
+
Interpolation constant
|
419
|
+
End
|
420
|
+
Key 1
|
421
|
+
Frame 1
|
422
|
+
Value 0
|
423
|
+
ValueLock yes
|
424
|
+
DeleteLock yes
|
425
|
+
Interpolation constant
|
426
|
+
End
|
427
|
+
End
|
428
|
+
Channel tracker3/ref/dy
|
429
|
+
Extrapolation constant
|
430
|
+
Value 0
|
431
|
+
Colour 50 50 50
|
432
|
+
Size 2
|
433
|
+
KeyVersion 1
|
434
|
+
Key 0
|
435
|
+
Frame 0
|
436
|
+
Value 0
|
437
|
+
ValueLock yes
|
438
|
+
DeleteLock yes
|
439
|
+
Interpolation constant
|
440
|
+
End
|
441
|
+
Key 1
|
442
|
+
Frame 1
|
443
|
+
Value 0
|
444
|
+
ValueLock yes
|
445
|
+
DeleteLock yes
|
446
|
+
Interpolation constant
|
447
|
+
End
|
448
|
+
End
|
449
|
+
Channel tracker3/offset/x
|
450
|
+
Extrapolation constant
|
451
|
+
Value 0
|
452
|
+
End
|
453
|
+
Channel tracker3/offset/y
|
454
|
+
Extrapolation constant
|
455
|
+
Value 0
|
456
|
+
End
|
457
|
+
Channel tracker3/shift/x
|
458
|
+
Extrapolation constant
|
459
|
+
Value 0
|
460
|
+
KeyVersion 1
|
461
|
+
Size 3
|
462
|
+
Key 0
|
463
|
+
Frame 4
|
464
|
+
Value 0
|
465
|
+
Interpolation linear
|
466
|
+
LeftSlope 2.400
|
467
|
+
RightSlope 2.400
|
468
|
+
End
|
469
|
+
Key 1
|
470
|
+
Frame 5
|
471
|
+
Value -100.000
|
472
|
+
Interpolation linear
|
473
|
+
LeftSlope 2.400
|
474
|
+
RightSlope 2.400
|
475
|
+
End
|
476
|
+
Key 2
|
477
|
+
Frame 6
|
478
|
+
Value -110.000
|
479
|
+
Interpolation linear
|
480
|
+
LeftSlope 2.400
|
481
|
+
RightSlope 2.400
|
482
|
+
End
|
483
|
+
End
|
484
|
+
Channel tracker3/shift/y
|
485
|
+
Extrapolation constant
|
486
|
+
Value 0
|
487
|
+
KeyVersion 1
|
488
|
+
Size 3
|
489
|
+
Key 0
|
490
|
+
Frame 4
|
491
|
+
Value 0
|
492
|
+
Interpolation linear
|
493
|
+
LeftSlope 2.400
|
494
|
+
RightSlope 2.400
|
495
|
+
End
|
496
|
+
Key 1
|
497
|
+
Frame 5
|
498
|
+
Value 80.000
|
499
|
+
Interpolation linear
|
500
|
+
LeftSlope 2.400
|
501
|
+
RightSlope 2.400
|
502
|
+
End
|
503
|
+
Key 2
|
504
|
+
Frame 6
|
505
|
+
Value 55.000
|
506
|
+
Interpolation linear
|
507
|
+
LeftSlope 2.400
|
508
|
+
RightSlope 2.400
|
509
|
+
End
|
510
|
+
End
|
511
|
+
ChannelEnd
|
512
|
+
Tracker 0
|
513
|
+
Active yes
|
514
|
+
Colour
|
515
|
+
Red 0
|
516
|
+
Green 100
|
517
|
+
Blue 0
|
518
|
+
FixedRef yes
|
519
|
+
FixedX no
|
520
|
+
FixedY no
|
521
|
+
Tolerance 100
|
522
|
+
Tracker 1
|
523
|
+
Active yes
|
524
|
+
Colour
|
525
|
+
Red 0
|
526
|
+
Green 100
|
527
|
+
Blue 0
|
528
|
+
FixedRef yes
|
529
|
+
FixedX no
|
530
|
+
FixedY no
|
531
|
+
Tolerance 100
|
532
|
+
Tracker 2
|
533
|
+
Active yes
|
534
|
+
Colour
|
535
|
+
Red 0
|
536
|
+
Green 100
|
537
|
+
Blue 0
|
538
|
+
FixedRef yes
|
539
|
+
FixedX no
|
540
|
+
FixedY no
|
541
|
+
Tolerance 100
|
@@ -148,4 +148,12 @@ class FlameImportTest < Test::Unit::TestCase
|
|
148
148
|
assert_in_delta 390.267, frame_149.abs_x, DELTA
|
149
149
|
assert_in_delta 280.248, frame_149.abs_y, DELTA
|
150
150
|
end
|
151
|
+
|
152
|
+
def test_from_tracksperanto
|
153
|
+
fixture = File.open(File.dirname(__FILE__) + '/samples/flame_stabilizer/fromTracksperanto.stabilizer')
|
154
|
+
parser = Tracksperanto::Import::FlameStabilizer.new
|
155
|
+
trackers = parser.parse(fixture)
|
156
|
+
assert_equal 3, trackers.length
|
157
|
+
assert_equal 3, trackers[0].length
|
158
|
+
end
|
151
159
|
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
class PipelineTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@old_dir = Dir.pwd
|
7
|
+
Dir.chdir(File.dirname(__FILE__))
|
8
|
+
end
|
9
|
+
|
10
|
+
def create_stabilizer_file
|
11
|
+
@stabilizer = "./input.stabilizer"
|
12
|
+
trackers = %w( Foo Bar Baz).map do | name |
|
13
|
+
t = Tracksperanto::Tracker.new(:name => name)
|
14
|
+
t.keyframe!(:frame => 3, :abs_x => 100, :abs_y => 200)
|
15
|
+
t.keyframe!(:frame => 4, :abs_x => 200, :abs_y => 120)
|
16
|
+
t.keyframe!(:frame => 5, :abs_x => 210, :abs_y => 145)
|
17
|
+
t
|
18
|
+
end
|
19
|
+
|
20
|
+
File.open(@stabilizer, "wb") do | f |
|
21
|
+
exporter = Tracksperanto::Export::FlameStabilizer.new(f)
|
22
|
+
exporter.just_export(trackers, 720, 576)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def teardown
|
27
|
+
Dir.glob("./input*.*").each(&File.method(:unlink))
|
28
|
+
Dir.chdir(@old_dir)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_supports_block_init
|
32
|
+
pipeline = Tracksperanto::Pipeline::Base.new(:middleware_tuples => [:a, :b])
|
33
|
+
assert_equal [:a, :b], pipeline.middleware_tuples
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_run_with_autodetected_importer_and_size
|
37
|
+
create_stabilizer_file
|
38
|
+
pipeline = Tracksperanto::Pipeline::Base.new
|
39
|
+
assert_nothing_raised { pipeline.run(@stabilizer) }
|
40
|
+
assert_equal 3, pipeline.converted_points
|
41
|
+
assert_equal 9, pipeline.converted_keyframes, "Should report conversion of 9 keyframes"
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_run_with_autodetected_importer_that_requires_size
|
45
|
+
FileUtils.cp("./import/samples/shake_script/four_tracks_in_one_stabilizer.shk", "./input.shk")
|
46
|
+
pipeline = Tracksperanto::Pipeline::Base.new
|
47
|
+
assert_raise(RuntimeError) { pipeline.run("./input.shk") }
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_run_with_autodetected_importer_that_requires_size_when_size_supplied
|
51
|
+
FileUtils.cp("./import/samples/shake_script/four_tracks_in_one_stabilizer.shk", "./input.shk")
|
52
|
+
pipeline = Tracksperanto::Pipeline::Base.new
|
53
|
+
assert_nothing_raised { pipeline.run("./input.shk", :width => 720, :height => 576) }
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_run_with_overridden_importer_and_no_size
|
57
|
+
FileUtils.cp("./import/samples/shake_script/four_tracks_in_one_stabilizer.shk", "./input.shk")
|
58
|
+
pipeline = Tracksperanto::Pipeline::Base.new
|
59
|
+
assert_nothing_raised { pipeline.run("./input.shk", :importer => "Syntheyes", :width => 720, :height => 576) }
|
60
|
+
assert_equal 11, Dir.glob("./input*").length, "Eleven files should be present for the input and outputs"
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_run_with_overridden_importer_and_size_for_file_that_would_be_recognized_differently
|
64
|
+
FileUtils.cp("./import/samples/shake_script/four_tracks_in_one_stabilizer.shk", "./input.stabilizer")
|
65
|
+
pipeline = Tracksperanto::Pipeline::Base.new
|
66
|
+
assert_nothing_raised { pipeline.run("./input.stabilizer", :importer => "ShakeScript", :width => 720, :height => 576) }
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_run_with_unknown_format_raises
|
70
|
+
FileUtils.touch("./input.txt")
|
71
|
+
pipeline = Tracksperanto::Pipeline::Base.new
|
72
|
+
assert_raise(RuntimeError) { pipeline.run("./input.txt") }
|
73
|
+
assert_raise(RuntimeError) { pipeline.run("./input.txt", :width => 100, :height => 100) }
|
74
|
+
assert_raise(RuntimeError) { pipeline.run("./input.txt", :importer => "Syntheyes") }
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_run_with_overridden_importer_and_size
|
78
|
+
FileUtils.cp("./import/samples/3de_v4/3de_export_cube.txt", "./input.txt")
|
79
|
+
pipeline = Tracksperanto::Pipeline::Base.new
|
80
|
+
assert_raise(RuntimeError) { pipeline.run("./input.txt", :importer => "Equalizer4") }
|
81
|
+
assert_nothing_raised { pipeline.run("./input.txt", :importer => "Equalizer4", :width => 720, :height => 576) }
|
82
|
+
end
|
83
|
+
|
84
|
+
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.9.
|
4
|
+
version: 1.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julik Tarkhanov
|
@@ -61,6 +61,7 @@ files:
|
|
61
61
|
- README.txt
|
62
62
|
- Rakefile
|
63
63
|
- bin/tracksperanto
|
64
|
+
- coverage.info
|
64
65
|
- lib/export/base.rb
|
65
66
|
- lib/export/equalizer3.rb
|
66
67
|
- lib/export/equalizer4.rb
|
@@ -141,6 +142,7 @@ files:
|
|
141
142
|
- test/import/samples/3de_v4/3de_export_cube.txt
|
142
143
|
- test/import/samples/boujou_features_text/boujou_txt_export.txt
|
143
144
|
- test/import/samples/flame_stabilizer/fromCombustion_fromMidClip_wSnap.stabilizer
|
145
|
+
- test/import/samples/flame_stabilizer/fromTracksperanto.stabilizer
|
144
146
|
- test/import/samples/flame_stabilizer/hugeFlameSetup.stabilizer
|
145
147
|
- test/import/samples/flame_stabilizer/megaTrack.action.3dtrack.stabilizer
|
146
148
|
- test/import/samples/match_mover/kipPointsMatchmover.rz2
|
@@ -196,6 +198,7 @@ files:
|
|
196
198
|
- test/test_flame_builder.rb
|
197
199
|
- test/test_format_detector.rb
|
198
200
|
- test/test_keyframe.rb
|
201
|
+
- test/test_pipeline.rb
|
199
202
|
- test/test_progressive_io.rb
|
200
203
|
- test/test_simple_export.rb
|
201
204
|
- test/test_tracker.rb
|
@@ -268,6 +271,7 @@ test_files:
|
|
268
271
|
- test/test_flame_builder.rb
|
269
272
|
- test/test_format_detector.rb
|
270
273
|
- test/test_keyframe.rb
|
274
|
+
- test/test_pipeline.rb
|
271
275
|
- test/test_progressive_io.rb
|
272
276
|
- test/test_simple_export.rb
|
273
277
|
- test/test_tracker.rb
|