tracksperanto 1.7.3 → 1.7.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,10 @@
1
+ === 1.7.4 / 2010-02-02
2
+
3
+ * Introduce an intentional gap in the reference exports to test trackers with gaps
4
+ * Export Syntheyes paths as normal frames, not as keyframes. This produces better solves by not overconstraining the solver
5
+ (Without this TransitionFrms, a crucial parameter in SY, seizes to work)
6
+ * Add a LengthCutoff middleware that allows you to remove trackers that have less than X keyframes in them from the export
7
+
1
8
  === 1.7.3 / 2010-02-02
2
9
 
3
10
  * Fixed the --only option in the commandline binary
@@ -31,6 +31,7 @@ lib/import/shake_text.rb
31
31
  lib/import/syntheyes.rb
32
32
  lib/middleware/base.rb
33
33
  lib/middleware/golden.rb
34
+ lib/middleware/length_cutoff.rb
34
35
  lib/middleware/lerp.rb
35
36
  lib/middleware/prefix.rb
36
37
  lib/middleware/reformat.rb
@@ -117,6 +118,7 @@ test/import/test_shake_script_import.rb
117
118
  test/import/test_shake_text_import.rb
118
119
  test/import/test_syntheyes_import.rb
119
120
  test/middleware/test_golden_middleware.rb
121
+ test/middleware/test_length_cutoff_middleware.rb
120
122
  test/middleware/test_lerp_middleware.rb
121
123
  test/middleware/test_prefix.rb
122
124
  test/middleware/test_reformat_middleware.rb
@@ -25,6 +25,7 @@ slip = 0
25
25
  golden_tracks = false
26
26
  x_shift = 0
27
27
  y_shift = 0
28
+ length_gate = 0
28
29
  set_prefix = ''
29
30
  sole_format = nil
30
31
  lerp = false
@@ -51,13 +52,16 @@ parser = OptionParser.new do | p |
51
52
  golden_tracks = g_flag
52
53
  }
53
54
  p.on(" -rx", "--reformat-x NEW_PIX_WIDTH", Integer, "Reformat the comp to this width and scale all tracks to it") {|rw|
54
- reformat_w = rw
55
+ reformat_w = rw
55
56
  }
56
57
  p.on(" -ry", "--reformat-y NEW_PIX_HEIGHT", Integer, "Reformat the comp to this height and scale all tracks to it") {|rh|
57
- reformat_h = rh
58
+ reformat_h = rh
58
59
  }
59
60
  p.on(" -o", "--only EXPORTER_NAME", String, "Only export the selected format, format must be one of #{writers.join(", ")}") {|f|
60
- sole_format = f
61
+ sole_format = f
62
+ }
63
+ p.on(" -m", "--min-length LENGTH_IN_FRAMES", Integer, "Only export trackers having more than X keyframes") {|f|
64
+ length_gate = f
61
65
  }
62
66
  p.on(" -xm", "--xshift X_IN_PIXELS", Float, "Move the points left or right") {|sx| x_shift = sx }
63
67
  p.on(" -ym", "--yshift Y_IN_PIXELS", Float, "Move the points up or down") {|sx| y_shift = sx }
@@ -120,7 +124,7 @@ if sole_format
120
124
  end
121
125
  end
122
126
 
123
- pipe.run(input_file, :pix_w => width, :pix_h => height, :parser => reader_klass) do | scaler, slipper, golden, reformat, shift, prefix, lerpm |
127
+ pipe.run(input_file, :pix_w => width, :pix_h => height, :parser => reader_klass) do | scaler, slipper, golden, reformat, shift, prefix, lerpm, len |
124
128
  slipper.slip = slip
125
129
  scaler.x_factor = scale_x
126
130
  scaler.y_factor = scale_y
@@ -131,5 +135,6 @@ pipe.run(input_file, :pix_w => width, :pix_h => height, :parser => reader_klass)
131
135
  shift.y_shift = y_shift
132
136
  prefix.prefix = set_prefix
133
137
  lerpm.enabled = lerp
138
+ len.min_length = length_gate
134
139
  end
135
140
  STDOUT.puts("\rConverted #{pipe.converted_points} trackers with #{pipe.converted_keyframes} keys")
@@ -1,7 +1,17 @@
1
- # Export for Syntheyes tracker UVs
1
+ # Export for Syntheyes tracker UVs. We actually just use prebaked sample values, and do not use bitmasks such as
2
+ # OUTCOME_RUN = 1
3
+ # OUTCOME_ENABLE = 2 -- mirrors the enable track
4
+ # OUTCOME_OK = 4 -- usable u/v present on this frame
5
+ # OUTCOME_KEY = 8 -- there is a key here (OK will be on too)
6
+ # OUTCOME_JUMPED = 16
7
+ # OUTCOME_OUTASIGHT = 32
2
8
  class Tracksperanto::Export::SynthEyes < Tracksperanto::Export::Base
3
9
  include Tracksperanto::UVCoordinates
4
10
 
11
+ STATUS_KF = 30
12
+ STATUS_STD = 7
13
+ STATUS_REENABLE = 15
14
+
5
15
  def self.desc_and_extension
6
16
  "syntheyes_2dt.txt"
7
17
  end
@@ -15,11 +25,27 @@ class Tracksperanto::Export::SynthEyes < Tracksperanto::Export::Base
15
25
  end
16
26
 
17
27
  def start_tracker_segment(tracker_name)
18
- @tracker_name = tracker_name
28
+ @last_f, @tracker_name = nil, tracker_name
19
29
  end
20
30
 
21
31
  def export_point(frame, abs_float_x, abs_float_y, float_residual)
22
32
  values = [@tracker_name, frame] + absolute_to_uv(abs_float_x, abs_float_y, @width, @height)
23
- @io.puts("%s %d %.6f %.6f 30" % values)
33
+ values << get_outcome_code(frame)
34
+ @io.puts("%s %d %.6f %.6f %d" % values)
24
35
  end
36
+
37
+ private
38
+ # It's very important that we provide an outcome code for Syntheyes. Regular keyframes get
39
+ # STATUS_STD, and after a gap we have to signal STATUS_REENABLE, otherwise this might bust solves
40
+ def get_outcome_code(frame)
41
+ outcome = if @last_f.nil?
42
+ STATUS_KF
43
+ elsif @last_f && (@last_f != frame -1)
44
+ STATUS_REENABLE
45
+ else
46
+ STATUS_STD
47
+ end
48
+ @last_f = frame
49
+ outcome
50
+ end
25
51
  end
@@ -0,0 +1,24 @@
1
+ # This middleware removes trackers that contain less than min_length keyframes
2
+ # from the exported batch
3
+ class Tracksperanto::Middleware::LengthCutoff < Tracksperanto::Middleware::Base
4
+ attr_accessor :min_length
5
+ cast_to_int :min_length
6
+
7
+ def start_tracker_segment(name)
8
+ @tracker = Tracksperanto::Tracker.new(:name => name)
9
+ end
10
+
11
+ def end_tracker_segment
12
+ return if ((min_length > 0) && (@tracker.length < min_length))
13
+
14
+ @exporter.start_tracker_segment(@tracker.name)
15
+ @tracker.each{|kf| @exporter.export_point(kf.frame, kf.abs_x, kf.abs_y, kf.residual) }
16
+ @exporter.end_tracker_segment
17
+ end
18
+
19
+ def export_point(frame, float_x, float_y, float_residual)
20
+ @tracker.keyframe! :abs_x => float_x, :abs_y => float_y, :residual => float_residual, :frame => frame
21
+ end
22
+
23
+
24
+ end
@@ -149,7 +149,8 @@ class Tracksperanto::Pipeline::Base
149
149
  shift = Tracksperanto::Middleware::Shift.new(reformat)
150
150
  prefix = Tracksperanto::Middleware::Prefix.new(shift)
151
151
  lerp = Tracksperanto::Middleware::Lerp.new(prefix)
152
- [scaler, slipper, golden, reformat, shift, prefix, lerp]
152
+ lengate = Tracksperanto::Middleware::LengthCutoff.new(lerp)
153
+ [scaler, slipper, golden, reformat, shift, prefix, lerp, lengate]
153
154
  end
154
155
 
155
156
  # Open the file for writing and register it to be closed automatically
@@ -4,7 +4,7 @@ require 'tempfile'
4
4
 
5
5
  module Tracksperanto
6
6
  PATH = File.expand_path(File.dirname(__FILE__))
7
- VERSION = '1.7.3'
7
+ VERSION = '1.7.4'
8
8
 
9
9
  module Import; end
10
10
  module Export; end
@@ -10,8 +10,6 @@
10
10
  0 7 -0.5333333333 -0.8200000000 0.0333333333
11
11
  0 8 -0.3555555556 -0.9200000000 0.0380952381
12
12
  0 9 -0.1777777778 -0.9800000000 0.0428571429
13
- 0 10 0.0000000000 -1.0000000000 0.0476190476
14
- 0 11 0.1777777778 -0.9800000000 0.0523809524
15
13
  0 12 0.3555555556 -0.9200000000 0.0571428571
16
14
  0 13 0.5333333333 -0.8200000000 0.0619047619
17
15
  0 14 0.7111111111 -0.6800000000 0.0666666667
@@ -32,8 +30,6 @@
32
30
  1 7 0.5333333333 0.8200000000 0.0333333333
33
31
  1 8 0.3555555556 0.9200000000 0.0380952381
34
32
  1 9 0.1777777778 0.9800000000 0.0428571429
35
- 1 10 0.0000000000 1.0000000000 0.0476190476
36
- 1 11 -0.1777777778 0.9800000000 0.0523809524
37
33
  1 12 -0.3555555556 0.9200000000 0.0571428571
38
34
  1 13 -0.5333333333 0.8200000000 0.0619047619
39
35
  1 14 -0.7111111111 0.6800000000 0.0666666667
@@ -10,8 +10,6 @@
10
10
  0 7 -0.5340000000 -0.8200000000 0.0333333333
11
11
  0 8 -0.3560000000 -0.9200000000 0.0380952381
12
12
  0 9 -0.1780000000 -0.9800000000 0.0428571429
13
- 0 10 -0.0000000000 -1.0000000000 0.0476190476
14
- 0 11 0.1780000000 -0.9800000000 0.0523809524
15
13
  0 12 0.3560000000 -0.9200000000 0.0571428571
16
14
  0 13 0.5340000000 -0.8200000000 0.0619047619
17
15
  0 14 0.7120000000 -0.6800000000 0.0666666667
@@ -32,8 +30,6 @@
32
30
  1 7 0.5340000000 0.8200000000 0.0333333333
33
31
  1 8 0.3560000000 0.9200000000 0.0380952381
34
32
  1 9 0.1780000000 0.9800000000 0.0428571429
35
- 1 10 -0.0000000000 1.0000000000 0.0476190476
36
- 1 11 -0.1780000000 0.9800000000 0.0523809524
37
33
  1 12 -0.3560000000 0.9200000000 0.0571428571
38
34
  1 13 -0.5340000000 0.8200000000 0.0619047619
39
35
  1 14 -0.7120000000 0.6800000000 0.0666666667
@@ -16,14 +16,14 @@ Constant {
16
16
  }
17
17
 
18
18
  Tracker3 {
19
- track1 {{curve i x1 0.0000 x2 96.0000 192.0000 288.0000 384.0000 480.0000 576.0000 672.0000 768.0000 864.0000 960.0000 1056.0000 1152.0000 1248.0000 1344.0000 1440.0000 1536.0000 1632.0000 1728.0000 1824.0000 1920.0000} {curve i x1 1080.0000 x2 874.8000 691.2000 529.2000 388.8000 270.0000 172.8000 97.2000 43.2000 10.8000 0.0000 10.8000 43.2000 97.2000 172.8000 270.0000 388.8000 529.2000 691.2000 874.8000 1080.0000}}
19
+ track1 {{curve i x1 0.0000 x2 96.0000 192.0000 288.0000 384.0000 480.0000 576.0000 672.0000 768.0000 864.0000 x13 1152.0000 x14 1248.0000 1344.0000 1440.0000 1536.0000 1632.0000 1728.0000 1824.0000 1920.0000} {curve i x1 1080.0000 x2 874.8000 691.2000 529.2000 388.8000 270.0000 172.8000 97.2000 43.2000 10.8000 x13 43.2000 x14 97.2000 172.8000 270.0000 388.8000 529.2000 691.2000 874.8000 1080.0000}}
20
20
  name Parabolic_1_from_top_left
21
21
  xpos 0
22
22
  ypos 30
23
23
  }
24
24
 
25
25
  Tracker3 {
26
- track1 {{curve i x1 1920.0000 x2 1824.0000 1728.0000 1632.0000 1536.0000 1440.0000 1344.0000 1248.0000 1152.0000 1056.0000 960.0000 864.0000 768.0000 672.0000 576.0000 480.0000 384.0000 288.0000 192.0000 96.0000 0.0000} {curve i x1 0.0000 x2 205.2000 388.8000 550.8000 691.2000 810.0000 907.2000 982.8000 1036.8000 1069.2000 1080.0000 1069.2000 1036.8000 982.8000 907.2000 810.0000 691.2000 550.8000 388.8000 205.2000 0.0000}}
26
+ track1 {{curve i x1 1920.0000 x2 1824.0000 1728.0000 1632.0000 1536.0000 1440.0000 1344.0000 1248.0000 1152.0000 1056.0000 x13 768.0000 x14 672.0000 576.0000 480.0000 384.0000 288.0000 192.0000 96.0000 0.0000} {curve i x1 0.0000 x2 205.2000 388.8000 550.8000 691.2000 810.0000 907.2000 982.8000 1036.8000 1069.2000 x13 1036.8000 x14 982.8000 907.2000 810.0000 691.2000 550.8000 388.8000 205.2000 0.0000}}
27
27
  name Parabolic_2_from_bottom_right
28
28
  xpos 0
29
29
  ypos 60
@@ -1,7 +1,7 @@
1
1
 
2
2
 
3
3
  "Parabolic_1_from_top_left"
4
- 21
4
+ 19
5
5
  0 0.000 1080.000 0.000
6
6
  1 96.000 874.800 0.006
7
7
  2 192.000 691.200 0.012
@@ -12,8 +12,6 @@
12
12
  7 672.000 97.200 0.042
13
13
  8 768.000 43.200 0.048
14
14
  9 864.000 10.800 0.054
15
- 10 960.000 0.000 0.060
16
- 11 1056.000 10.800 0.065
17
15
  12 1152.000 43.200 0.071
18
16
  13 1248.000 97.200 0.077
19
17
  14 1344.000 172.800 0.083
@@ -26,7 +24,7 @@
26
24
 
27
25
 
28
26
  "Parabolic_2_from_bottom_right"
29
- 21
27
+ 19
30
28
  0 1920.000 0.000 0.000
31
29
  1 1824.000 205.200 0.006
32
30
  2 1728.000 388.800 0.012
@@ -37,8 +35,6 @@
37
35
  7 1248.000 982.800 0.042
38
36
  8 1152.000 1036.800 0.048
39
37
  9 1056.000 1069.200 0.054
40
- 10 960.000 1080.000 0.060
41
- 11 864.000 1069.200 0.065
42
38
  12 768.000 1036.800 0.071
43
39
  13 672.000 982.800 0.077
44
40
  14 576.000 907.200 0.083
@@ -2,7 +2,7 @@
2
2
 
3
3
  "Parabolic_1_from_top_left"
4
4
  "Primary"
5
- 21
5
+ 19
6
6
  0 0.000 1080.000 0.000
7
7
  1 96.000 874.800 0.006
8
8
  2 192.000 691.200 0.012
@@ -13,8 +13,6 @@
13
13
  7 672.000 97.200 0.042
14
14
  8 768.000 43.200 0.048
15
15
  9 864.000 10.800 0.054
16
- 10 960.000 0.000 0.060
17
- 11 1056.000 10.800 0.065
18
16
  12 1152.000 43.200 0.071
19
17
  13 1248.000 97.200 0.077
20
18
  14 1344.000 172.800 0.083
@@ -28,7 +26,7 @@
28
26
 
29
27
  "Parabolic_2_from_bottom_right"
30
28
  "Primary"
31
- 21
29
+ 19
32
30
  0 1920.000 0.000 0.000
33
31
  1 1824.000 205.200 0.006
34
32
  2 1728.000 388.800 0.012
@@ -39,8 +37,6 @@
39
37
  7 1248.000 982.800 0.042
40
38
  8 1152.000 1036.800 0.048
41
39
  9 1056.000 1069.200 0.054
42
- 10 960.000 1080.000 0.060
43
- 11 864.000 1069.200 0.065
44
40
  12 768.000 1036.800 0.071
45
41
  13 672.000 982.800 0.077
46
42
  14 576.000 907.200 0.083
@@ -10,8 +10,6 @@ TrackName Parabolic_1_from_top_left
10
10
  8.00 672.000 97.200 0.667
11
11
  9.00 768.000 43.200 0.619
12
12
  10.00 864.000 10.800 0.571
13
- 11.00 960.000 0.000 0.524
14
- 12.00 1056.000 10.800 0.476
15
13
  13.00 1152.000 43.200 0.429
16
14
  14.00 1248.000 97.200 0.381
17
15
  15.00 1344.000 172.800 0.333
@@ -34,8 +32,6 @@ TrackName Parabolic_2_from_bottom_right
34
32
  8.00 1248.000 982.800 0.667
35
33
  9.00 1152.000 1036.800 0.619
36
34
  10.00 1056.000 1069.200 0.571
37
- 11.00 960.000 1080.000 0.524
38
- 12.00 864.000 1069.200 0.476
39
35
  13.00 768.000 1036.800 0.429
40
36
  14.00 672.000 982.800 0.381
41
37
  15.00 576.000 907.200 0.333
@@ -1,42 +1,38 @@
1
1
  Parabolic_1_from_top_left 0 -1.000000 -1.000000 30
2
- Parabolic_1_from_top_left 1 -0.900000 -0.620000 30
3
- Parabolic_1_from_top_left 2 -0.800000 -0.280000 30
4
- Parabolic_1_from_top_left 3 -0.700000 0.020000 30
5
- Parabolic_1_from_top_left 4 -0.600000 0.280000 30
6
- Parabolic_1_from_top_left 5 -0.500000 0.500000 30
7
- Parabolic_1_from_top_left 6 -0.400000 0.680000 30
8
- Parabolic_1_from_top_left 7 -0.300000 0.820000 30
9
- Parabolic_1_from_top_left 8 -0.200000 0.920000 30
10
- Parabolic_1_from_top_left 9 -0.100000 0.980000 30
11
- Parabolic_1_from_top_left 10 0.000000 1.000000 30
12
- Parabolic_1_from_top_left 11 0.100000 0.980000 30
13
- Parabolic_1_from_top_left 12 0.200000 0.920000 30
14
- Parabolic_1_from_top_left 13 0.300000 0.820000 30
15
- Parabolic_1_from_top_left 14 0.400000 0.680000 30
16
- Parabolic_1_from_top_left 15 0.500000 0.500000 30
17
- Parabolic_1_from_top_left 16 0.600000 0.280000 30
18
- Parabolic_1_from_top_left 17 0.700000 0.020000 30
19
- Parabolic_1_from_top_left 18 0.800000 -0.280000 30
20
- Parabolic_1_from_top_left 19 0.900000 -0.620000 30
21
- Parabolic_1_from_top_left 20 1.000000 -1.000000 30
2
+ Parabolic_1_from_top_left 1 -0.900000 -0.620000 7
3
+ Parabolic_1_from_top_left 2 -0.800000 -0.280000 7
4
+ Parabolic_1_from_top_left 3 -0.700000 0.020000 7
5
+ Parabolic_1_from_top_left 4 -0.600000 0.280000 7
6
+ Parabolic_1_from_top_left 5 -0.500000 0.500000 7
7
+ Parabolic_1_from_top_left 6 -0.400000 0.680000 7
8
+ Parabolic_1_from_top_left 7 -0.300000 0.820000 7
9
+ Parabolic_1_from_top_left 8 -0.200000 0.920000 7
10
+ Parabolic_1_from_top_left 9 -0.100000 0.980000 7
11
+ Parabolic_1_from_top_left 12 0.200000 0.920000 15
12
+ Parabolic_1_from_top_left 13 0.300000 0.820000 7
13
+ Parabolic_1_from_top_left 14 0.400000 0.680000 7
14
+ Parabolic_1_from_top_left 15 0.500000 0.500000 7
15
+ Parabolic_1_from_top_left 16 0.600000 0.280000 7
16
+ Parabolic_1_from_top_left 17 0.700000 0.020000 7
17
+ Parabolic_1_from_top_left 18 0.800000 -0.280000 7
18
+ Parabolic_1_from_top_left 19 0.900000 -0.620000 7
19
+ Parabolic_1_from_top_left 20 1.000000 -1.000000 7
22
20
  Parabolic_2_from_bottom_right 0 1.000000 1.000000 30
23
- Parabolic_2_from_bottom_right 1 0.900000 0.620000 30
24
- Parabolic_2_from_bottom_right 2 0.800000 0.280000 30
25
- Parabolic_2_from_bottom_right 3 0.700000 -0.020000 30
26
- Parabolic_2_from_bottom_right 4 0.600000 -0.280000 30
27
- Parabolic_2_from_bottom_right 5 0.500000 -0.500000 30
28
- Parabolic_2_from_bottom_right 6 0.400000 -0.680000 30
29
- Parabolic_2_from_bottom_right 7 0.300000 -0.820000 30
30
- Parabolic_2_from_bottom_right 8 0.200000 -0.920000 30
31
- Parabolic_2_from_bottom_right 9 0.100000 -0.980000 30
32
- Parabolic_2_from_bottom_right 10 0.000000 -1.000000 30
33
- Parabolic_2_from_bottom_right 11 -0.100000 -0.980000 30
34
- Parabolic_2_from_bottom_right 12 -0.200000 -0.920000 30
35
- Parabolic_2_from_bottom_right 13 -0.300000 -0.820000 30
36
- Parabolic_2_from_bottom_right 14 -0.400000 -0.680000 30
37
- Parabolic_2_from_bottom_right 15 -0.500000 -0.500000 30
38
- Parabolic_2_from_bottom_right 16 -0.600000 -0.280000 30
39
- Parabolic_2_from_bottom_right 17 -0.700000 -0.020000 30
40
- Parabolic_2_from_bottom_right 18 -0.800000 0.280000 30
41
- Parabolic_2_from_bottom_right 19 -0.900000 0.620000 30
42
- Parabolic_2_from_bottom_right 20 -1.000000 1.000000 30
21
+ Parabolic_2_from_bottom_right 1 0.900000 0.620000 7
22
+ Parabolic_2_from_bottom_right 2 0.800000 0.280000 7
23
+ Parabolic_2_from_bottom_right 3 0.700000 -0.020000 7
24
+ Parabolic_2_from_bottom_right 4 0.600000 -0.280000 7
25
+ Parabolic_2_from_bottom_right 5 0.500000 -0.500000 7
26
+ Parabolic_2_from_bottom_right 6 0.400000 -0.680000 7
27
+ Parabolic_2_from_bottom_right 7 0.300000 -0.820000 7
28
+ Parabolic_2_from_bottom_right 8 0.200000 -0.920000 7
29
+ Parabolic_2_from_bottom_right 9 0.100000 -0.980000 7
30
+ Parabolic_2_from_bottom_right 12 -0.200000 -0.920000 15
31
+ Parabolic_2_from_bottom_right 13 -0.300000 -0.820000 7
32
+ Parabolic_2_from_bottom_right 14 -0.400000 -0.680000 7
33
+ Parabolic_2_from_bottom_right 15 -0.500000 -0.500000 7
34
+ Parabolic_2_from_bottom_right 16 -0.600000 -0.280000 7
35
+ Parabolic_2_from_bottom_right 17 -0.700000 -0.020000 7
36
+ Parabolic_2_from_bottom_right 18 -0.800000 0.280000 7
37
+ Parabolic_2_from_bottom_right 19 -0.900000 0.620000 7
38
+ Parabolic_2_from_bottom_right 20 -1.000000 1.000000 7
@@ -1,7 +1,7 @@
1
1
  2
2
2
  Parabolic_1_from_top_left
3
3
  0
4
- 21
4
+ 19
5
5
  1 0.000000000000000 1080.000000000000000
6
6
  2 95.999999999999972 874.800000000000068
7
7
  3 191.999999999999943 691.200000000000159
@@ -12,8 +12,6 @@ Parabolic_1_from_top_left
12
12
  8 672.000000000000000 97.200000000000003
13
13
  9 768.000000000000000 43.200000000000010
14
14
  10 864.000000000000000 10.800000000000002
15
- 11 960.000000000000000 0.000000000000000
16
- 12 1056.000000000000000 10.800000000000002
17
15
  13 1152.000000000000000 43.200000000000010
18
16
  14 1248.000000000000000 97.200000000000003
19
17
  15 1344.000000000000000 172.800000000000040
@@ -25,7 +23,7 @@ Parabolic_1_from_top_left
25
23
  21 1920.000000000000000 1080.000000000000000
26
24
  Parabolic_2_from_bottom_right
27
25
  0
28
- 21
26
+ 19
29
27
  1 1920.000000000000000 0.000000000000000
30
28
  2 1824.000000000000000 205.199999999999932
31
29
  3 1728.000000000000000 388.799999999999841
@@ -36,8 +34,6 @@ Parabolic_2_from_bottom_right
36
34
  8 1248.000000000000000 982.800000000000068
37
35
  9 1152.000000000000000 1036.799999999999955
38
36
  10 1056.000000000000000 1069.200000000000045
39
- 11 960.000000000000000 1080.000000000000000
40
- 12 864.000000000000000 1069.200000000000045
41
37
  13 768.000000000000000 1036.799999999999955
42
38
  14 672.000000000000000 982.800000000000068
43
39
  15 576.000000000000000 907.199999999999932
@@ -10,8 +10,6 @@ Parabolic_1_from_top_left
10
10
  8 672.000 97.200
11
11
  9 768.000 43.200
12
12
  10 864.000 10.800
13
- 11 960.000 0.000
14
- 12 1056.000 10.800
15
13
  13 1152.000 43.200
16
14
  14 1248.000 97.200
17
15
  15 1344.000 172.800
@@ -32,8 +30,6 @@ Parabolic_2_from_bottom_right
32
30
  8 1248.000 982.800
33
31
  9 1152.000 1036.800
34
32
  10 1056.000 1069.200
35
- 11 960.000 1080.000
36
- 12 864.000 1069.200
37
33
  13 768.000 1036.800
38
34
  14 672.000 982.800
39
35
  15 576.000 907.200
@@ -14,8 +14,6 @@ pointTrack "Parabolic_1_from_top_left" rgb( 255 0 0 )
14
14
  8 672.000 982.800 p+( 0.666667 )
15
15
  9 768.000 1036.800 p+( 0.619048 )
16
16
  10 864.000 1069.200 p+( 0.571429 )
17
- 11 960.000 1080.000 p+( 0.523810 )
18
- 12 1056.000 1069.200 p+( 0.476190 )
19
17
  13 1152.000 1036.800 p+( 0.428571 )
20
18
  14 1248.000 982.800 p+( 0.380952 )
21
19
  15 1344.000 907.200 p+( 0.333333 )
@@ -38,8 +36,6 @@ pointTrack "Parabolic_2_from_bottom_right" rgb( 255 0 0 )
38
36
  8 1248.000 97.200 p+( 0.666667 )
39
37
  9 1152.000 43.200 p+( 0.619048 )
40
38
  10 1056.000 10.800 p+( 0.571429 )
41
- 11 960.000 0.000 p+( 0.523810 )
42
- 12 864.000 10.800 p+( 0.476190 )
43
39
  13 768.000 43.200 p+( 0.428571 )
44
40
  14 672.000 97.200 p+( 0.380952 )
45
41
  15 576.000 172.800 p+( 0.333333 )
@@ -14,6 +14,6 @@ class PFTrack5ExportTest < Test::Unit::TestCase
14
14
  P = File.dirname(__FILE__) + "/samples/ref_PFTrack5.2dt"
15
15
 
16
16
  def test_export_output_written
17
- create_reference_output Tracksperanto::Export::PFTrack5, P
17
+ ensure_same_output Tracksperanto::Export::PFTrack5, P
18
18
  end
19
19
  end
@@ -45,17 +45,22 @@ module ParabolicTracks
45
45
 
46
46
  residual_unit = 1.0 / x_uv_chain.length
47
47
 
48
+ SKIPS = [10,11]
48
49
  FIRST_TRACK = Tracksperanto::Tracker.new(:name => "Parabolic_1_from_top_left") do | t |
49
50
  tuples_for_tracker_1.each do | (f, x, y )|
50
51
  ax, ay = uv_to_abs(x, y, 1920, 1080)
51
- t.keyframe!(:frame => f, :abs_x => ax, :abs_y => ay, :residual => (f * residual_unit))
52
+ unless SKIPS.include?(f)
53
+ t.keyframe!(:frame => f, :abs_x => ax, :abs_y => ay, :residual => (f * residual_unit))
54
+ end
52
55
  end
53
56
  end
54
57
 
55
58
  SECOND_TRACK = Tracksperanto::Tracker.new(:name => "Parabolic_2_from_bottom_right") do | t |
56
59
  tuples_for_tracker_2.each do | (f, x, y )|
57
60
  ax, ay = uv_to_abs(x, y, 1920, 1080)
58
- t.keyframe!(:frame => f, :abs_x => ax, :abs_y => ay, :residual => (f * residual_unit))
61
+ unless SKIPS.include?(f)
62
+ t.keyframe!(:frame => f, :abs_x => ax, :abs_y => ay, :residual => (f * residual_unit))
63
+ end
59
64
  end
60
65
  end
61
66
 
@@ -10,8 +10,9 @@ class PFTrackImportTest < Test::Unit::TestCase
10
10
  end
11
11
 
12
12
  def test_parsing_from_importable_pftrack_4
13
+
13
14
  fixture = File.open(File.dirname(__FILE__) + '/samples/pftrack4/sourcefile_pftrack.2dt')
14
-
15
+
15
16
  parser = Tracksperanto::Import::PFTrack.new
16
17
  parser.width = 2560
17
18
  parser.height = 1080
@@ -45,4 +46,5 @@ class PFTrackImportTest < Test::Unit::TestCase
45
46
  assert_equal "Tracker121", trackers[0].name
46
47
  assert_equal 189, trackers[0].length
47
48
  end
49
+
48
50
  end
@@ -0,0 +1,38 @@
1
+ require File.dirname(__FILE__) + '/../helper'
2
+
3
+ class LengthCutoffMiddlewareTest < Test::Unit::TestCase
4
+ def test_default_length_set_to_zero_and_ignored
5
+ receiver = flexmock
6
+ m = Tracksperanto::Middleware::LengthCutoff.new(receiver)
7
+ assert_equal 0, m.min_length
8
+ end
9
+
10
+ def test_slip_supports_hash_init
11
+ receiver = flexmock
12
+ m = Tracksperanto::Middleware::LengthCutoff.new(receiver, :min_length => 23)
13
+ assert_equal 23, m.min_length
14
+ end
15
+
16
+ def test_slipper_bypasses_methods
17
+ receiver = flexmock
18
+ receiver.should_receive(:start_export).once.with(120,120)
19
+ receiver.should_receive(:start_tracker_segment).once.with("Tracker")
20
+ 12.times do | i |
21
+ receiver.should_receive(:export_point).with(i, 100, 100, 0)
22
+ end
23
+ receiver.should_receive(:end_tracker_segment).once
24
+ receiver.should_receive(:end_export).once
25
+
26
+
27
+ m = Tracksperanto::Middleware::LengthCutoff.new(receiver, :min_length => 12)
28
+ m.start_export(120, 120)
29
+ m.start_tracker_segment("Tracker")
30
+ 12.times {|t| m.export_point(t, 100, 100, 0) }
31
+ m.end_tracker_segment
32
+ m.start_tracker_segment("Tracker2")
33
+ 11.times {|t| m.export_point(t, 100, 100, 0) }
34
+ m.end_tracker_segment
35
+ m.end_export
36
+
37
+ end
38
+ 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.7.3
4
+ version: 1.7.4
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-02-02 00:00:00 +01:00
12
+ date: 2010-02-09 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -78,6 +78,7 @@ files:
78
78
  - lib/import/syntheyes.rb
79
79
  - lib/middleware/base.rb
80
80
  - lib/middleware/golden.rb
81
+ - lib/middleware/length_cutoff.rb
81
82
  - lib/middleware/lerp.rb
82
83
  - lib/middleware/prefix.rb
83
84
  - lib/middleware/reformat.rb
@@ -164,6 +165,7 @@ files:
164
165
  - test/import/test_shake_text_import.rb
165
166
  - test/import/test_syntheyes_import.rb
166
167
  - test/middleware/test_golden_middleware.rb
168
+ - test/middleware/test_length_cutoff_middleware.rb
167
169
  - test/middleware/test_lerp_middleware.rb
168
170
  - test/middleware/test_prefix.rb
169
171
  - test/middleware/test_reformat_middleware.rb
@@ -231,6 +233,7 @@ test_files:
231
233
  - test/import/test_shake_text_import.rb
232
234
  - test/import/test_syntheyes_import.rb
233
235
  - test/middleware/test_golden_middleware.rb
236
+ - test/middleware/test_length_cutoff_middleware.rb
234
237
  - test/middleware/test_lerp_middleware.rb
235
238
  - test/middleware/test_prefix.rb
236
239
  - test/middleware/test_reformat_middleware.rb