tracksperanto 2.9.6 → 2.9.7
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/bin/tracksperanto +1 -1
- data/lib/import/syntheyes_all_tracker_paths.rb +38 -0
- data/lib/tracksperanto.rb +1 -1
- data/lib/tracksperanto/tracker.rb +5 -0
- data/test/import/test_syntheyes_all_tracker_paths_import.rb +25 -0
- data/test/test_tracker.rb +9 -0
- data/tracksperanto.gemspec +4 -2
- metadata +22 -20
data/History.txt
CHANGED
data/bin/tracksperanto
CHANGED
@@ -69,7 +69,7 @@ op.on("--code PATH_TO_SCRIPT", String, "Load custom Ruby code into tracksperanto
|
|
69
69
|
end
|
70
70
|
|
71
71
|
|
72
|
-
op.on(" -f", "--from TRANSLATOR", String, "Use the specific import translator") { |f| options[:importer] = f }
|
72
|
+
op.on(" -f", "--from TRANSLATOR", String, "Use the specific import translator - #{readers.join(", ")}") { |f| options[:importer] = f }
|
73
73
|
op.on(" -w", "--width WIDTH_IN_PIXELS", Integer, "Absolute input comp width in pixels (will try to autodetect)") { |w| options[:width] = w }
|
74
74
|
op.on(" -h", "--height HEIGHT_IN_PIXELS", Integer, "Absolute input comp height in pixels (will try to autodetect)") {|w| options[:height] = w }
|
75
75
|
op.on(" -o", "--only EXPORTER_NAME", String, "Only export the selected format, format must be one of #{writers.join(", ")}") { |f| writer_class_name = f }
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
class Tracksperanto::Import::SyntheyesAllTrackerPaths < Tracksperanto::Import::Base
|
3
|
+
def self.human_name
|
4
|
+
"Syntheyes \"All Tracker Paths\" export .txt file"
|
5
|
+
end
|
6
|
+
|
7
|
+
CHARACTERS_OR_QUOTES = /[AZaz"]/
|
8
|
+
TRACKER_KEYFRAME = /^(\d+) ((\d+)\.(\d+)) ((\d+)\.(\d+))/
|
9
|
+
|
10
|
+
def each
|
11
|
+
t = Tracksperanto::Tracker.new
|
12
|
+
while line = @io.gets do
|
13
|
+
if line =~ CHARACTERS_OR_QUOTES
|
14
|
+
t = Tracksperanto::Tracker.new(:name => line)
|
15
|
+
fill_tracker(t, @io)
|
16
|
+
yield(t)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def fill_tracker(t, io)
|
24
|
+
loop do
|
25
|
+
prev_pos = io.pos
|
26
|
+
line = io.gets
|
27
|
+
if line =~ TRACKER_KEYFRAME
|
28
|
+
parts = line.scan(TRACKER_KEYFRAME).flatten
|
29
|
+
t.keyframe!(:frame => parts[0], :abs_x => parts[1], :abs_y => parts[2])
|
30
|
+
else
|
31
|
+
# Backtrack to where we started the line and return control
|
32
|
+
io.pos = prev_pos
|
33
|
+
return
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
data/lib/tracksperanto.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require File.expand_path(File.dirname(__FILE__)) + '/../helper'
|
3
|
+
|
4
|
+
class SyntheyesAllPathsImportTest < Test::Unit::TestCase
|
5
|
+
DELTA = 0.001 # our SynthEyes sample is somewhat inaccurate :-P
|
6
|
+
|
7
|
+
def test_introspects_properly
|
8
|
+
i = Tracksperanto::Import::SyntheyesAllTrackerPaths
|
9
|
+
assert_equal "Syntheyes \"All Tracker Paths\" export .txt file", i.human_name
|
10
|
+
assert !i.autodetects_size?
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_parsing_from_importable
|
14
|
+
fixture = File.open(File.dirname(__FILE__) + '/samples/syntheyes_all_tracker_paths/shot06_2dTracks.txt')
|
15
|
+
trackers = Tracksperanto::Import::SyntheyesAllTrackerPaths.new(:io => fixture, :width => 2560, :height => 1080).to_a
|
16
|
+
assert_equal 139, trackers.length
|
17
|
+
assert_equal "Tracker2_", trackers[0].name
|
18
|
+
assert_equal "Tracker3_", trackers[1].name
|
19
|
+
assert_equal 44, trackers[0].length
|
20
|
+
|
21
|
+
first_kf = trackers[0].at_frame(0)
|
22
|
+
assert_in_delta 760.632, first_kf.abs_x, DELTA
|
23
|
+
assert_in_delta 760.0, first_kf.abs_y, DELTA
|
24
|
+
end
|
25
|
+
end
|
data/test/test_tracker.rb
CHANGED
@@ -64,6 +64,15 @@ class TrackerTest < Test::Unit::TestCase
|
|
64
64
|
assert_equal [kfs], Tracksperanto::Tracker.new(:keyframes => [kfs]).keyframes
|
65
65
|
end
|
66
66
|
|
67
|
+
def test_clear
|
68
|
+
t = Tracksperanto::Tracker.new do | t |
|
69
|
+
t.keyframe! :abs_x => 123, :abs_y => 456
|
70
|
+
end
|
71
|
+
assert_equal 1, t.length
|
72
|
+
t.clear
|
73
|
+
assert t.length.zero?
|
74
|
+
end
|
75
|
+
|
67
76
|
def test_supports_array_methods
|
68
77
|
kfs = Tracksperanto::Keyframe.new(:frame => 1, :abs_x => 123, :abs_y => 456)
|
69
78
|
t = Tracksperanto::Tracker.new(:keyframes => [kfs])
|
data/tracksperanto.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "tracksperanto"
|
8
|
-
s.version = "2.9.
|
8
|
+
s.version = "2.9.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Julik Tarkhanov"]
|
12
|
-
s.date = "2012-03-
|
12
|
+
s.date = "2012-03-17"
|
13
13
|
s.description = "Converts 2D track exports between different apps like Flame, MatchMover, PFTrack..."
|
14
14
|
s.email = "me@julik.nl"
|
15
15
|
s.executables = ["tracksperanto"]
|
@@ -59,6 +59,7 @@ Gem::Specification.new do |s|
|
|
59
59
|
"lib/import/shake_script.rb",
|
60
60
|
"lib/import/shake_text.rb",
|
61
61
|
"lib/import/syntheyes.rb",
|
62
|
+
"lib/import/syntheyes_all_tracker_paths.rb",
|
62
63
|
"lib/middleware/base.rb",
|
63
64
|
"lib/middleware/crop.rb",
|
64
65
|
"lib/middleware/flip.rb",
|
@@ -145,6 +146,7 @@ Gem::Specification.new do |s|
|
|
145
146
|
"test/import/test_shake_lexer.rb",
|
146
147
|
"test/import/test_shake_script_import.rb",
|
147
148
|
"test/import/test_shake_text_import.rb",
|
149
|
+
"test/import/test_syntheyes_all_tracker_paths_import.rb",
|
148
150
|
"test/import/test_syntheyes_import.rb",
|
149
151
|
"test/middleware/test_crop_middleware.rb",
|
150
152
|
"test/middleware/test_flip_middleware.rb",
|
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: 2.9.
|
4
|
+
version: 2.9.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
12
|
+
date: 2012-03-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: obuf
|
16
|
-
requirement: &
|
16
|
+
requirement: &4013890 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *4013890
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: progressive_io
|
27
|
-
requirement: &
|
27
|
+
requirement: &4013530 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '1.0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *4013530
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: flame_channel_parser
|
38
|
-
requirement: &
|
38
|
+
requirement: &4013220 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '4.0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *4013220
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: progressbar
|
49
|
-
requirement: &
|
49
|
+
requirement: &4012820 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - =
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 0.10.0
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *4012820
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: update_hints
|
60
|
-
requirement: &
|
60
|
+
requirement: &4012430 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '1.0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *4012430
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: jeweler
|
71
|
-
requirement: &
|
71
|
+
requirement: &4011740 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *4011740
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rake
|
82
|
-
requirement: &
|
82
|
+
requirement: &4010310 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *4010310
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: flexmock
|
93
|
-
requirement: &
|
93
|
+
requirement: &4010050 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0.8'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *4010050
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: cli_test
|
104
|
-
requirement: &
|
104
|
+
requirement: &4009660 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
version: '1.0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *4009660
|
113
113
|
description: Converts 2D track exports between different apps like Flame, MatchMover,
|
114
114
|
PFTrack...
|
115
115
|
email: me@julik.nl
|
@@ -161,6 +161,7 @@ files:
|
|
161
161
|
- lib/import/shake_script.rb
|
162
162
|
- lib/import/shake_text.rb
|
163
163
|
- lib/import/syntheyes.rb
|
164
|
+
- lib/import/syntheyes_all_tracker_paths.rb
|
164
165
|
- lib/middleware/base.rb
|
165
166
|
- lib/middleware/crop.rb
|
166
167
|
- lib/middleware/flip.rb
|
@@ -247,6 +248,7 @@ files:
|
|
247
248
|
- test/import/test_shake_lexer.rb
|
248
249
|
- test/import/test_shake_script_import.rb
|
249
250
|
- test/import/test_shake_text_import.rb
|
251
|
+
- test/import/test_syntheyes_all_tracker_paths_import.rb
|
250
252
|
- test/import/test_syntheyes_import.rb
|
251
253
|
- test/middleware/test_crop_middleware.rb
|
252
254
|
- test/middleware/test_flip_middleware.rb
|