tracksperanto 1.7.3 → 1.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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