tracksperanto 1.6.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +5 -0
- data/lib/export/equalizer3.rb +7 -12
- data/lib/export/equalizer4.rb +1 -2
- data/lib/export/syntheyes.rb +2 -12
- data/lib/import/syntheyes.rb +2 -9
- data/lib/middleware/reformat.rb +1 -0
- data/lib/pipeline/base.rb +2 -2
- data/lib/tracksperanto.rb +14 -2
- data/test/middleware/test_reformat_middleware.rb +2 -0
- metadata +2 -2
data/History.txt
CHANGED
data/lib/export/equalizer3.rb
CHANGED
@@ -14,31 +14,26 @@ class Tracksperanto::Export::Equalizer3 < Tracksperanto::Export::Base
|
|
14
14
|
def start_export( img_width, img_height)
|
15
15
|
@w, @h = img_width, img_height
|
16
16
|
# 3DE needs to know the number of keyframes in advance
|
17
|
-
@
|
17
|
+
@buffer = Tempfile.new("ts3dex")
|
18
|
+
@highest_keyframe = 0
|
18
19
|
end
|
19
20
|
|
20
21
|
def start_tracker_segment(tracker_name)
|
21
|
-
@
|
22
|
+
@buffer.puts(tracker_name)
|
22
23
|
end
|
23
24
|
|
24
25
|
def export_point(frame, abs_float_x, abs_float_y, float_residual)
|
25
26
|
off_by_one = frame + 1
|
26
|
-
@
|
27
|
+
@buffer.puts("\t%d\t%.3f\t%.3f" % [off_by_one, abs_float_x, abs_float_y])
|
27
28
|
@highest_keyframe = off_by_one if (@highest_keyframe < off_by_one)
|
28
29
|
end
|
29
30
|
|
30
31
|
def end_export
|
32
|
+
@buffer.rewind
|
31
33
|
preamble = HEADER.gsub(/2048/, @w.to_s).gsub(/778/, @h.to_s).gsub(/275/, @highest_keyframe.to_s)
|
32
34
|
@io.puts(preamble)
|
33
|
-
@
|
34
|
-
@
|
35
|
-
discard_io
|
35
|
+
@io.puts(@buffer.read) until @buffer.eof?
|
36
|
+
@buffer.close!
|
36
37
|
@io.puts("") # Newline at end
|
37
38
|
end
|
38
|
-
|
39
|
-
private
|
40
|
-
def discard_io
|
41
|
-
@internal_io.close
|
42
|
-
@internal_io = nil
|
43
|
-
end
|
44
39
|
end
|
data/lib/export/equalizer4.rb
CHANGED
data/lib/export/syntheyes.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# Export for Syntheyes tracker UVs
|
2
2
|
class Tracksperanto::Export::SynthEyes < Tracksperanto::Export::Base
|
3
|
+
include Tracksperanto::UVCoordinates
|
3
4
|
|
4
5
|
def self.desc_and_extension
|
5
6
|
"syntheyes_2dt.txt"
|
@@ -18,18 +19,7 @@ class Tracksperanto::Export::SynthEyes < Tracksperanto::Export::Base
|
|
18
19
|
end
|
19
20
|
|
20
21
|
def export_point(frame, abs_float_x, abs_float_y, float_residual)
|
21
|
-
values = [@tracker_name, frame] +
|
22
|
+
values = [@tracker_name, frame] + absolute_to_uv(abs_float_x, abs_float_y, @width, @height)
|
22
23
|
@io.puts("%s %d %.6f %.6f 30" % values)
|
23
24
|
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
# Syntheyes wants very special coordinates, Y down X right,
|
28
|
-
# 0 is center and values are UV float -1 to 1, doubled
|
29
|
-
def syntheyes_coords(abs_x, abs_y, w, h)
|
30
|
-
x = (abs_x / w.to_f) - 0.5
|
31
|
-
y = (abs_y / h.to_f) - 0.5
|
32
|
-
# .2 to -.3, y is reversed and coords are double
|
33
|
-
[x * 2, y * -2]
|
34
|
-
end
|
35
25
|
end
|
data/lib/import/syntheyes.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
class Tracksperanto::Import::Syntheyes < Tracksperanto::Import::Base
|
2
|
+
include Tracksperanto::UVCoordinates
|
2
3
|
|
3
4
|
def self.human_name
|
4
5
|
"Syntheyes 2D tracker paths file"
|
@@ -28,13 +29,5 @@ class Tracksperanto::Import::Syntheyes < Tracksperanto::Import::Base
|
|
28
29
|
|
29
30
|
trackers
|
30
31
|
end
|
31
|
-
|
32
|
-
private
|
33
|
-
# Syntheyes exports UV coordinates that go from -1 to 1, up and right and 0
|
34
|
-
# is the center
|
35
|
-
def convert_from_uv(absolute_side, uv_value)
|
36
|
-
# First, start from zero (-.1 becomes .4)
|
37
|
-
value_off_corner = (uv_value.to_f / 2) + 0.5
|
38
|
-
absolute_side * value_off_corner
|
39
|
-
end
|
32
|
+
|
40
33
|
end
|
data/lib/middleware/reformat.rb
CHANGED
data/lib/pipeline/base.rb
CHANGED
@@ -162,7 +162,7 @@ class Tracksperanto::Pipeline::Base
|
|
162
162
|
|
163
163
|
# Check that the trackers made by the parser are A-OK
|
164
164
|
def validate_trackers!(trackers)
|
165
|
-
|
166
|
-
trackers.
|
165
|
+
trackers.reject!{|t| t.length < 2 }
|
166
|
+
raise "Could not recover any non-empty trackers from this file. Wrong import format maybe?" if trackers.empty?
|
167
167
|
end
|
168
168
|
end
|
data/lib/tracksperanto.rb
CHANGED
@@ -4,7 +4,7 @@ require 'tempfile'
|
|
4
4
|
|
5
5
|
module Tracksperanto
|
6
6
|
PATH = File.expand_path(File.dirname(__FILE__))
|
7
|
-
VERSION = '1.6.
|
7
|
+
VERSION = '1.6.1'
|
8
8
|
|
9
9
|
module Import; end
|
10
10
|
module Export; end
|
@@ -42,7 +42,19 @@ module Tracksperanto
|
|
42
42
|
|
43
43
|
end
|
44
44
|
|
45
|
-
%w(
|
45
|
+
%w(
|
46
|
+
const_name
|
47
|
+
casts
|
48
|
+
block_init
|
49
|
+
safety
|
50
|
+
zip_tuples
|
51
|
+
keyframe
|
52
|
+
tracker
|
53
|
+
format_detector
|
54
|
+
ext_io
|
55
|
+
simple_export
|
56
|
+
uv_coordinates
|
57
|
+
).each do | submodule |
|
46
58
|
require File.join(Tracksperanto::PATH, "tracksperanto", submodule)
|
47
59
|
end
|
48
60
|
|
@@ -25,9 +25,11 @@ class ReformatMiddlewareTest < Test::Unit::TestCase
|
|
25
25
|
|
26
26
|
receiver = flexmock
|
27
27
|
receiver.should_receive(:start_export).once.with(1920,1080)
|
28
|
+
receiver.should_receive(:end_export).once
|
28
29
|
|
29
30
|
m = Tracksperanto::Middleware::Reformat.new(receiver, :width => 1920, :height => 1080)
|
30
31
|
|
31
32
|
m.start_export(720, 576)
|
33
|
+
m.end_export
|
32
34
|
end
|
33
35
|
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.1
|
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: 2009-11-
|
12
|
+
date: 2009-11-23 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|