tracksperanto 1.9.1 → 1.9.2
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 +4 -0
- data/Manifest.txt +0 -1
- data/Rakefile +1 -1
- data/bin/tracksperanto +35 -68
- data/lib/pipeline/base.rb +4 -4
- data/lib/tracksperanto.rb +1 -1
- data/test/test_progressive_io.rb +2 -2
- metadata +2 -3
- data/coverage.info +0 -0
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
data/Rakefile
CHANGED
@@ -8,7 +8,7 @@ begin
|
|
8
8
|
(Hoe::RUBY_DEBUG ? " #{RUBY_DEBUG}" : '')
|
9
9
|
|
10
10
|
Hoe.spec('tracksperanto') do | p |
|
11
|
-
p.clean_globs = %w( **/.DS_Store )
|
11
|
+
p.clean_globs = %w( **/.DS_Store coverage.info )
|
12
12
|
p.version = Tracksperanto::VERSION
|
13
13
|
p.extra_deps = {"progressbar" => ">=0"}
|
14
14
|
p.extra_dev_deps = {"flexmock" => ">=0"}
|
data/bin/tracksperanto
CHANGED
@@ -16,90 +16,57 @@ require 'rubygems'
|
|
16
16
|
require 'progressbar'
|
17
17
|
|
18
18
|
# Sane defaults
|
19
|
-
|
19
|
+
reader_klass_name = nil
|
20
20
|
width = nil
|
21
21
|
height = nil
|
22
22
|
|
23
|
-
|
24
|
-
|
23
|
+
options = {}
|
24
|
+
$middlewares = []
|
25
|
+
writer_klass_name = nil
|
25
26
|
reader_name = "ShakeScript"
|
26
27
|
readers = Tracksperanto.importer_names
|
27
28
|
writers = Tracksperanto.exporter_names
|
28
29
|
|
29
|
-
|
30
|
-
p.banner = "Usage: tracksperanto -f ShakeScript -w 1920 -h 1080 /Films/Blockbuster/Shots/001/script.shk"
|
31
|
-
p.on("--code PATH_TO_SCRIPT", String, "Load custom Ruby code into tracksperanto") {|c|
|
32
|
-
require c
|
33
|
-
}
|
34
|
-
p.on(" -f", "--from TRANSLATOR", String,
|
35
|
-
"Use the specific import translator (will try to autodetect, but can be #{Tracksperanto.importer_names.join(', ')})") do | f |
|
36
|
-
reader_name = f
|
37
|
-
end
|
38
|
-
p.on(" -w", "--width WIDTH_IN_PIXELS", Integer, "Absolute input comp width in pixels (will try to autodetect)") { |w| width = w }
|
39
|
-
p.on(" -h", "--height HEIGHT_IN_PIXELS", Integer, "Absolute input comp height in pixels (will try to autodetect)") {|w| height = w }
|
40
|
-
|
41
|
-
p.on(" -xs", "--xscale X_SCALING_FACTOR", Float, "Scale the result in X by this factor (1.0 is the default)") do |sx|
|
42
|
-
middlewares << ["Scaler", {:x_factor => sx}]
|
43
|
-
end
|
44
|
-
p.on(" -ys", "--yscale Y_SCALING_FACTOR", Float, "Scale the result in Y by this factor (1.0 is the default)") do |sy|
|
45
|
-
middlewares << ["Scaler", {:y_factor => sx}]
|
46
|
-
end
|
47
|
-
p.on(" -s", "--slip FRAMES", Integer, "Slip the result by this number of frames, positive is 'later'") do |sy|
|
48
|
-
middlewares << ["Slipper", {:slip => sx}]
|
49
|
-
end
|
50
|
-
p.on(" -g", "--golden", "Reset the residuals of all trackers to 0 (ignore correlation)") do |g_flag|
|
51
|
-
middlewares << ["Golden", {:enabled => true}]
|
52
|
-
end
|
53
|
-
p.on(" -rx", "--reformat-x NEW_PIX_WIDTH", Integer, "Reformat the comp to this width and scale all tracks to it") do |rw|
|
54
|
-
middlewares << ["Reformat", {:width => rw}]
|
55
|
-
end
|
56
|
-
p.on(" -ry", "--reformat-y NEW_PIX_HEIGHT", Integer, "Reformat the comp to this height and scale all tracks to it") do |rh|
|
57
|
-
middlewares << ["Reformat", {:height => rh}]
|
58
|
-
end
|
59
|
-
p.on(" -m", "--min-length LENGTH_IN_FRAMES", Integer, "Only export trackers having more than X keyframes") do | min_kf |
|
60
|
-
middlewares << ["LengthCutoff", {:min_length => min_kf}]
|
61
|
-
end
|
62
|
-
p.on(" -xm", "--xshift X_IN_PIXELS", Float, "Move the points left or right") do |sx|
|
63
|
-
middlewares << ["Shift", {:x_shift => sx}]
|
64
|
-
end
|
65
|
-
p.on(" -ym", "--yshift Y_IN_PIXELS", Float, "Move the points up or down") do |sx|
|
66
|
-
middlewares << ["Shift", {:y_shift => sx}]
|
67
|
-
end
|
68
|
-
p.on(" -p", "--prefix PREFIX", String, "A prefix to prepend to tracker names in bulk") do |w|
|
69
|
-
middlewares << ["Prefix", {:prefix => w}]
|
70
|
-
end
|
71
|
-
|
72
|
-
p.on("--lerp", "Linearly interpolate missing keyframes") do
|
73
|
-
middlewares << ["Lerp", {:enabled => true}]
|
74
|
-
end
|
75
|
-
|
76
|
-
p.on(" -o", "--only EXPORTER_NAME", String, "Only export the selected format, format must be one of #{writers.join(", ")}") do |f|
|
77
|
-
sole_format = f
|
78
|
-
end
|
30
|
+
op = OptionParser.new
|
79
31
|
|
80
|
-
|
32
|
+
def mw(name, option)
|
33
|
+
Proc.new { |value| $middlewares.push([name, {option => value}]) }
|
34
|
+
end
|
35
|
+
|
36
|
+
op.banner = "Usage: tracksperanto -f ShakeScript -w 1920 -h 1080 /Films/Blockbuster/Shots/001/script.shk"
|
37
|
+
op.on("--code PATH_TO_SCRIPT", String, "Load custom Ruby code into tracksperanto") {|c| require(c) }
|
38
|
+
op.on(" -f", "--from TRANSLATOR", String, "Use the specific import translator") { |f| options[:importer] = f }
|
39
|
+
op.on(" -w", "--width WIDTH_IN_PIXELS", Integer, "Absolute input comp width in pixels (will try to autodetect)") { |w| options[:width] = w }
|
40
|
+
op.on(" -h", "--height HEIGHT_IN_PIXELS", Integer, "Absolute input comp height in pixels (will try to autodetect)") {|w| options[:height] = w }
|
41
|
+
op.on(" -o", "--only EXPORTER_NAME", String, "Only export the selected format, format must be one of #{writers.join(", ")}") { |f| writer_klass_name = f }
|
42
|
+
|
43
|
+
op.on(" -xs", "--xscale X_SCALING_FACTOR", Float, "Scale the result in X by this factor (1.0 is the default)", &mw("Scaler", :x_factor))
|
44
|
+
op.on(" -ys", "--yscale Y_SCALING_FACTOR", Float, "Scale the result in Y by this factor (1.0 is the default)", &mw("Scaler", :y_factor))
|
45
|
+
op.on(" -s", "--slip FRAMES", Integer, "Slip the result by this number of frames, positive is 'later'", &mw("Slipper", :slip))
|
46
|
+
op.on(" -g", "--golden", "Reset the residuals of all trackers to 0 (ignore correlation)", &mw("Golden", :enabled))
|
47
|
+
op.on(" -rx", "--reformat-x NEW_PIX_WIDTH", Integer, "Reformat the comp to this width and scale all tracks to it", &mw("Reformat", :width))
|
48
|
+
op.on(" -ry", "--reformat-y NEW_PIX_HEIGHT", Integer, "Reformat the comp to this height and scale all tracks to it", &mw("Reformat", :height))
|
49
|
+
op.on(" -m", "--min-length LENGTH_IN_FRAMES", Integer, "Only export trackers having more than X keyframes", &mw("LengthCutoff", :min_length))
|
50
|
+
op.on(" -xm", "--xshift X_IN_PIXELS", Float, "Move the points left or right", &mw("Shift", :x_shift))
|
51
|
+
op.on(" -ym", "--yshift Y_IN_PIXELS", Float, "Move the points up or down", &mw("Shift", :y_shift))
|
52
|
+
op.on(" -p", "--prefix PREFIX", String, "A prefix to prepend to tracker names in bulk", &mw("Prefix", :prefix))
|
53
|
+
op.on("--lerp", "Linearly interpolate missing keyframes", &mw("Lerp", :enabled))
|
54
|
+
|
55
|
+
op.on("--version", "Show the version and exit") do |v|
|
81
56
|
puts "Tracksperanto v.#{Tracksperanto::VERSION} running on Ruby #{RUBY_VERSION} on #{RUBY_PLATFORM}"
|
82
57
|
puts "Copyright 2008-#{Time.now.year} by Guerilla-DI (Julik Tarkhanov and contributors)"
|
83
58
|
puts "For questions and support contact info#{64.chr}guerilla-di.org"
|
84
59
|
exit(0)
|
85
|
-
}
|
86
60
|
end
|
87
61
|
|
88
62
|
begin
|
89
|
-
|
63
|
+
op.parse!
|
90
64
|
rescue OptionParser::MissingArgument => e
|
91
65
|
STDERR.puts "Unknown argument: #{e.message}"
|
92
66
|
puts parser
|
93
67
|
exit(-1)
|
94
68
|
end
|
95
69
|
|
96
|
-
begin
|
97
|
-
reader_klass = Tracksperanto.get_importer(reader_name)
|
98
|
-
rescue NameError => e
|
99
|
-
STDERR.puts "Unknown reader #{reader_name}, available readers: #{readers.join(', ')}"
|
100
|
-
exit(-1)
|
101
|
-
end
|
102
|
-
|
103
70
|
input_file = ARGV.pop
|
104
71
|
if !input_file
|
105
72
|
STDERR.puts "No input file provided - should be the last argument. Also use the --help option."
|
@@ -107,17 +74,17 @@ if !input_file
|
|
107
74
|
end
|
108
75
|
|
109
76
|
pbar = ProgressBar.new("Converting", 100)
|
110
|
-
pipe = Tracksperanto::Pipeline::Base.new(:progress_block => lambda{|p,m| pbar.set(p) }, :middleware_tuples => middlewares)
|
77
|
+
pipe = Tracksperanto::Pipeline::Base.new(:progress_block => lambda{|p,m| pbar.set(p.to_i) }, :middleware_tuples => $middlewares)
|
111
78
|
|
112
|
-
if
|
79
|
+
if writer_klass_name
|
113
80
|
begin
|
114
|
-
pipe.exporters = [Tracksperanto.get_exporter(
|
81
|
+
pipe.exporters = [Tracksperanto.get_exporter(writer_klass_name)]
|
115
82
|
rescue NameError
|
116
|
-
STDERR.puts "Unknown exporter #{
|
83
|
+
STDERR.puts "Unknown exporter #{writer_klass_name}. Available exporters: #{writers.join(", ")}"
|
117
84
|
exit(-1)
|
118
85
|
end
|
119
86
|
end
|
120
87
|
|
121
|
-
pipe.run(input_file,
|
88
|
+
pipe.run(input_file, options)
|
122
89
|
pbar.finish
|
123
90
|
puts ("Converted #{pipe.converted_points} trackers with #{pipe.converted_keyframes} keys")
|
data/lib/pipeline/base.rb
CHANGED
@@ -114,13 +114,13 @@ class Tracksperanto::Pipeline::Base
|
|
114
114
|
|
115
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)
|
119
|
-
|
119
|
+
|
120
120
|
report_progress(percent_complete, "Starting export")
|
121
|
-
|
121
|
+
|
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
125
|
exporter.start_export(importer.width, importer.height)
|
126
126
|
trackers.each_with_index do | t, tracker_idx |
|
data/lib/tracksperanto.rb
CHANGED
data/test/test_progressive_io.rb
CHANGED
@@ -6,8 +6,8 @@ class TestProgressiveIO < Test::Unit::TestCase
|
|
6
6
|
|
7
7
|
# Make a mock File object from a string
|
8
8
|
io = StringIO.new(s)
|
9
|
-
|
10
|
-
|
9
|
+
mock_stat = flexmock(:size => s.length)
|
10
|
+
flexmock(io).should_receive(:stat).and_return(mock_stat)
|
11
11
|
|
12
12
|
Tracksperanto::ProgressiveIO.new(io)
|
13
13
|
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.2
|
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-
|
12
|
+
date: 2010-04-02 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -61,7 +61,6 @@ files:
|
|
61
61
|
- README.txt
|
62
62
|
- Rakefile
|
63
63
|
- bin/tracksperanto
|
64
|
-
- coverage.info
|
65
64
|
- lib/export/base.rb
|
66
65
|
- lib/export/equalizer3.rb
|
67
66
|
- lib/export/equalizer4.rb
|
data/coverage.info
DELETED
Binary file
|