tracksperanto 2.3.0 → 2.3.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/Manifest.txt +4 -0
- data/bin/tracksperanto +3 -3
- data/lib/import/shake_grammar/lexer.rb +30 -7
- data/lib/import/shake_script.rb +21 -1
- data/lib/middleware/lint.rb +61 -0
- data/lib/pipeline/base.rb +7 -4
- data/lib/tracksperanto.rb +1 -1
- data/lib/tracksperanto/simple_export.rb +7 -5
- data/test/import/samples/shake_script/REDACTED_shake_file.shk +317 -0
- data/test/import/samples/shake_script/ofx_vardefs.shk +6 -0
- data/test/import/test_shake_lexer.rb +40 -3
- data/test/import/test_shake_script_import.rb +8 -0
- data/test/middleware/test_lint_middleware.rb +45 -0
- data/test/test_pipeline.rb +6 -2
- metadata +9 -4
data/History.txt
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
=== 2.3.1 / 2011-08-05
|
2
|
+
|
3
|
+
* Fixed support for curly braces in Shake scripts
|
4
|
+
* Added checks to prevent exports with empty trackers or exports which contain no data at all
|
5
|
+
|
1
6
|
=== 2.3.0 / 2011-17-04
|
2
7
|
|
3
8
|
* Fixed issue#1 (Last tracker in some Flame exports receives an empty shift channel)
|
data/Manifest.txt
CHANGED
@@ -40,6 +40,7 @@ lib/middleware/flop.rb
|
|
40
40
|
lib/middleware/golden.rb
|
41
41
|
lib/middleware/length_cutoff.rb
|
42
42
|
lib/middleware/lerp.rb
|
43
|
+
lib/middleware/lint.rb
|
43
44
|
lib/middleware/prefix.rb
|
44
45
|
lib/middleware/reformat.rb
|
45
46
|
lib/middleware/scaler.rb
|
@@ -112,10 +113,12 @@ test/import/samples/pftrack4/sourcefile_pftrack.2dt
|
|
112
113
|
test/import/samples/pftrack5/apft.2dt
|
113
114
|
test/import/samples/pftrack5/empty_trackers.2dt
|
114
115
|
test/import/samples/pftrack5/garage.2dt
|
116
|
+
test/import/samples/shake_script/REDACTED_shake_file.shk
|
115
117
|
test/import/samples/shake_script/designated_global_range_starting_at_negative_frame.shk
|
116
118
|
test/import/samples/shake_script/four_tracks_in_one_matchmove.shk
|
117
119
|
test/import/samples/shake_script/four_tracks_in_one_stabilizer.shk
|
118
120
|
test/import/samples/shake_script/from_matchmover.shk
|
121
|
+
test/import/samples/shake_script/ofx_vardefs.shk
|
119
122
|
test/import/samples/shake_script/oldTrackerNode.shk
|
120
123
|
test/import/samples/shake_script/shake_script_from_boujou.shk
|
121
124
|
test/import/samples/shake_script/shake_tracker_nodes.shk
|
@@ -151,6 +154,7 @@ test/middleware/test_flop_middleware.rb
|
|
151
154
|
test/middleware/test_golden_middleware.rb
|
152
155
|
test/middleware/test_length_cutoff_middleware.rb
|
153
156
|
test/middleware/test_lerp_middleware.rb
|
157
|
+
test/middleware/test_lint_middleware.rb
|
154
158
|
test/middleware/test_prefix.rb
|
155
159
|
test/middleware/test_reformat_middleware.rb
|
156
160
|
test/middleware/test_scaler_middleware.rb
|
data/bin/tracksperanto
CHANGED
@@ -38,7 +38,7 @@ end
|
|
38
38
|
|
39
39
|
options = {}
|
40
40
|
$middlewares = []
|
41
|
-
|
41
|
+
writer_class_name = nil
|
42
42
|
readers = Tracksperanto.importer_names
|
43
43
|
writers = Tracksperanto.exporter_names
|
44
44
|
|
@@ -63,7 +63,7 @@ end
|
|
63
63
|
op.on(" -f", "--from TRANSLATOR", String, "Use the specific import translator") { |f| options[:importer] = f }
|
64
64
|
op.on(" -w", "--width WIDTH_IN_PIXELS", Integer, "Absolute input comp width in pixels (will try to autodetect)") { |w| options[:width] = w }
|
65
65
|
op.on(" -h", "--height HEIGHT_IN_PIXELS", Integer, "Absolute input comp height in pixels (will try to autodetect)") {|w| options[:height] = w }
|
66
|
-
op.on(" -o", "--only EXPORTER_NAME", String, "Only export the selected format, format must be one of #{writers.join(", ")}") { |f|
|
66
|
+
op.on(" -o", "--only EXPORTER_NAME", String, "Only export the selected format, format must be one of #{writers.join(", ")}") { |f| writer_class_name = f }
|
67
67
|
|
68
68
|
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))
|
69
69
|
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))
|
@@ -107,7 +107,7 @@ end
|
|
107
107
|
|
108
108
|
pbar = Tracksperanto::PBar.new("Converting", 100, $stderr)
|
109
109
|
pipe = Tracksperanto::Pipeline::Base.new(:progress_block => lambda{|p,m| pbar.set_with_message(p, m) }, :middleware_tuples => $middlewares)
|
110
|
-
pipe.exporters = [Tracksperanto.get_exporter(
|
110
|
+
pipe.exporters = [Tracksperanto.get_exporter(writer_class_name)] if writer_class_name
|
111
111
|
pipe.run(input_file, options)
|
112
112
|
pbar.finish
|
113
113
|
|
@@ -34,7 +34,7 @@ module Tracksperanto::ShakeGrammar
|
|
34
34
|
def consume_comment(c)
|
35
35
|
if c == "\n" # Comment
|
36
36
|
push [:comment, @buf.gsub(/(\s+?)\/\/{1}/, '')]
|
37
|
-
|
37
|
+
erase_buffer
|
38
38
|
else
|
39
39
|
@buf << c
|
40
40
|
end
|
@@ -55,14 +55,23 @@ module Tracksperanto::ShakeGrammar
|
|
55
55
|
return consume_comment(c) if in_comment?
|
56
56
|
|
57
57
|
if !@buf.empty? && (c == "(") # Funcall
|
58
|
-
push([:funcall, @buf.strip] + self.class.new(@io, @sentinel, false, @stack_depth + 1).stack)
|
59
|
-
|
58
|
+
push([:funcall, @buf.strip] + self.class.new(@io, @sentinel, limit_to_one_stmt = false, @stack_depth + 1).stack)
|
59
|
+
erase_buffer
|
60
|
+
elsif c == '{' # OFX curly braces or a subexpression in a node's knob
|
61
|
+
# Discard subexpr
|
62
|
+
substack = self.class.new(@io, @sentinel, limit_to_one_stmt = true, @stack_depth + 1).stack
|
63
|
+
push(:expr)
|
60
64
|
elsif c == "[" # Array, booring
|
61
65
|
push([:arr, self.class.new(@io).stack])
|
66
|
+
elsif c == "}"# && @limit_to_one_stmt
|
67
|
+
throw STOP_TOKEN
|
62
68
|
elsif (c == "]" || c == ")" || c == ";" && @limit_to_one_stmt)
|
63
69
|
# Bailing out of a subexpression
|
64
70
|
consume_atom!
|
65
71
|
throw STOP_TOKEN
|
72
|
+
elsif (c == "," && @limit_to_one_stmt)
|
73
|
+
consume_atom!
|
74
|
+
throw STOP_TOKEN
|
66
75
|
elsif (c == ",")
|
67
76
|
consume_atom!
|
68
77
|
elsif (c == "@")
|
@@ -71,8 +80,10 @@ module Tracksperanto::ShakeGrammar
|
|
71
80
|
elsif (c == ";" || c == "\n")
|
72
81
|
# Skip these - the subexpression already is expanded anyway
|
73
82
|
elsif (c == "=")
|
74
|
-
|
75
|
-
@
|
83
|
+
vardef_atom = vardef(@buf.strip)
|
84
|
+
push [:assign, vardef_atom, self.class.new(@io, @sentinel, limit_to_one_stmt = true, @stack_depth + 1).stack.shift]
|
85
|
+
|
86
|
+
erase_buffer
|
76
87
|
else
|
77
88
|
@buf << c
|
78
89
|
end
|
@@ -85,7 +96,8 @@ module Tracksperanto::ShakeGrammar
|
|
85
96
|
|
86
97
|
# Grab the minimum atomic value
|
87
98
|
def consume_atom!
|
88
|
-
at
|
99
|
+
at = @buf.strip
|
100
|
+
erase_buffer
|
89
101
|
return if at.empty?
|
90
102
|
|
91
103
|
the_atom = case at
|
@@ -120,7 +132,18 @@ module Tracksperanto::ShakeGrammar
|
|
120
132
|
end
|
121
133
|
|
122
134
|
def vardef(var_specifier)
|
123
|
-
|
135
|
+
# Since we can have two-word pointers as typedefs (char *) we only use the last
|
136
|
+
# part of the thing as varname. Nodes return the :image type implicitly.
|
137
|
+
varname_re = /\w+$/
|
138
|
+
varname = var_specifier.scan(varname_re).to_s
|
139
|
+
typedef = var_specifier.gsub(varname_re, '').strip
|
140
|
+
typedef = :image if typedef.empty?
|
141
|
+
|
142
|
+
[:vardef, typedef, varname]
|
143
|
+
end
|
144
|
+
|
145
|
+
def erase_buffer
|
146
|
+
@buf = ''
|
124
147
|
end
|
125
148
|
end
|
126
149
|
end
|
data/lib/import/shake_script.rb
CHANGED
@@ -53,8 +53,28 @@ class Tracksperanto::Import::ShakeScript < Tracksperanto::Import::Base
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
+
# Find whether the passed atom includes a [:trk] on any level
|
57
|
+
def deep_include?(array_or_element, atom_name)
|
58
|
+
return true if array_or_element == atom_name
|
59
|
+
if array_or_element.is_a?(Array)
|
60
|
+
array_or_element.each do | elem |
|
61
|
+
if elem == atom_name
|
62
|
+
return true
|
63
|
+
elsif elem.is_a?(Array)
|
64
|
+
return true if deep_include?(elem, atom_name)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
false
|
70
|
+
end
|
71
|
+
|
72
|
+
# An atom that is a tracker node will look like this
|
73
|
+
# [:assign, [:vardef, "Stabilize2"], [:retval, [:trk, <T "track1" with 116 keyframes>, <T "track2" with 116 keyframes>, <T "track3" with 116 keyframes>, <T "track4" with 89 keyframes>]]]
|
74
|
+
# a Stabilize though will look like this
|
75
|
+
# [:assign, [:vardef, "Stabilize1"], [:retval, [:trk, <T "track1" with 116 keyframes>, <T "track2" with 116 keyframes>, <T "track3" with 116 keyframes>]]]
|
56
76
|
def atom_is_tracker_assignment?(a)
|
57
|
-
|
77
|
+
deep_include?(a, :trk)
|
58
78
|
end
|
59
79
|
|
60
80
|
# For Linear() curve calls. If someone selected JSpline or Hermite it's his problem.
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# Prevents you from exporting invalid trackers
|
2
|
+
class Tracksperanto::Middleware::Lint < Tracksperanto::Middleware::Base
|
3
|
+
class NoTrackersExportedError < RuntimeError
|
4
|
+
def message
|
5
|
+
"There were no trackers exported"
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
class EmptyTrackerSentError < RuntimeError
|
10
|
+
def initialize(name)
|
11
|
+
@name = name
|
12
|
+
end
|
13
|
+
|
14
|
+
def message
|
15
|
+
"The tracker #{@name} contained no keyframes. Probably there were some filtering ops done and no keyframes have been exported"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class TrackerRestartedError < RuntimeError
|
20
|
+
def initialize(name)
|
21
|
+
@name = name
|
22
|
+
end
|
23
|
+
|
24
|
+
def message
|
25
|
+
"The tracker #{@name} has been sent before the last tracker finished"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def start_export(w, h)
|
30
|
+
@trackers = 0
|
31
|
+
@keyframes = 0
|
32
|
+
@last_tracker_name = nil
|
33
|
+
super
|
34
|
+
end
|
35
|
+
|
36
|
+
def start_tracker_segment(name)
|
37
|
+
raise TrackerRestartedError.new(name) if @in_tracker
|
38
|
+
|
39
|
+
@in_tracker = true
|
40
|
+
@last_tracker_name = name
|
41
|
+
@keyframes = 0
|
42
|
+
super
|
43
|
+
end
|
44
|
+
|
45
|
+
def export_point(*a)
|
46
|
+
@keyframes += 1
|
47
|
+
super
|
48
|
+
end
|
49
|
+
|
50
|
+
def end_tracker_segment
|
51
|
+
raise EmptyTrackerSentError.new(@last_tracker_name) if @keyframes.zero?
|
52
|
+
@trackers +=1
|
53
|
+
@in_tracker = false
|
54
|
+
super
|
55
|
+
end
|
56
|
+
|
57
|
+
def end_export
|
58
|
+
raise NoTrackersExportedError if @trackers.zero?
|
59
|
+
super
|
60
|
+
end
|
61
|
+
end
|
data/lib/pipeline/base.rb
CHANGED
@@ -73,23 +73,26 @@ module Tracksperanto::Pipeline
|
|
73
73
|
# * parser - The parser class, for the case that it can't be autodetected from the file name
|
74
74
|
def run(from_input_file_path, passed_options = {}) #:yields: *all_middlewares
|
75
75
|
|
76
|
+
# Check for empty files
|
77
|
+
raise EmptySourceFileError if File.stat(from_input_file_path).size.zero?
|
78
|
+
|
76
79
|
# Reset stats
|
77
80
|
@converted_keyframes, @converted_points = 0, 0
|
78
81
|
|
79
82
|
# Assign the parser
|
80
83
|
importer = initialize_importer_with_path_and_options(from_input_file_path, passed_options)
|
81
84
|
|
82
|
-
# Check for empty files
|
83
|
-
raise EmptySourceFileError if File.stat(from_input_file_path).size.zero?
|
84
|
-
|
85
85
|
# Open the file
|
86
86
|
read_data = File.open(from_input_file_path, "rb")
|
87
87
|
|
88
88
|
# Setup a multiplexer
|
89
89
|
mux = setup_outputs_for(from_input_file_path)
|
90
90
|
|
91
|
+
# Wrap it into a module that will prevent us from exporting invalid trackers
|
92
|
+
lint = Tracksperanto::Middleware::Lint.new(mux)
|
93
|
+
|
91
94
|
# Setup middlewares
|
92
|
-
endpoint = wrap_output_with_middlewares(
|
95
|
+
endpoint = wrap_output_with_middlewares(lint)
|
93
96
|
@converted_points, @converted_keyframes = run_export(read_data, importer, endpoint)
|
94
97
|
end
|
95
98
|
|
data/lib/tracksperanto.rb
CHANGED
@@ -5,15 +5,17 @@ module Tracksperanto::SimpleExport
|
|
5
5
|
# Before calling this, initialize the exporter with the proper
|
6
6
|
# IO handle
|
7
7
|
def just_export(trackers_array, comp_width, comp_height)
|
8
|
-
|
8
|
+
lint = Tracksperanto::Middleware::Lint.new(self)
|
9
|
+
|
10
|
+
lint.start_export(comp_width, comp_height)
|
9
11
|
trackers_array.each do | t |
|
10
|
-
start_tracker_segment(t.name)
|
12
|
+
lint.start_tracker_segment(t.name)
|
11
13
|
t.each do | kf |
|
12
|
-
export_point(kf.frame, kf.abs_x, kf.abs_y, kf.residual)
|
14
|
+
lint.export_point(kf.frame, kf.abs_x, kf.abs_y, kf.residual)
|
13
15
|
end
|
14
|
-
end_tracker_segment
|
16
|
+
lint.end_tracker_segment
|
15
17
|
end
|
16
|
-
end_export
|
18
|
+
lint.end_export
|
17
19
|
end
|
18
20
|
end
|
19
21
|
|
@@ -0,0 +1,317 @@
|
|
1
|
+
// REDACTED - (c) Apple Computer, Inc. 1998-2006. All Rights Reserved.
|
2
|
+
// Apple, the Apple logo and Shake are trademarks of Apple Computer, Inc., registered in the U.S. and other countries.
|
3
|
+
|
4
|
+
|
5
|
+
SetTimeRange("1");
|
6
|
+
SetFieldRendering(0);
|
7
|
+
SetFps(23.98);
|
8
|
+
SetMotionBlur(1, 1, 0, 0);
|
9
|
+
SetMindReader(0);
|
10
|
+
SetNewNodeFocusing(0);
|
11
|
+
SetQuality(1);
|
12
|
+
SetUseProxy("Base");
|
13
|
+
SetProxyFilter("box");
|
14
|
+
SetPixelScale(1, 1);
|
15
|
+
SetUseProxyOnMissing(1);
|
16
|
+
SetDefaultWidth(1920);
|
17
|
+
SetDefaultHeight(1080);
|
18
|
+
SetDefaultBytes(1);
|
19
|
+
SetDefaultAspect(1);
|
20
|
+
SetDefaultViewerAspect(1);
|
21
|
+
SetView(0);
|
22
|
+
SetMacroCheck(1);
|
23
|
+
SetTimecodeMode("23.98 FPS");
|
24
|
+
|
25
|
+
DefineProxyPath("../1920x1080/<base>.<format>", 1, 1, -1, "Auto", -1, 1, 0, "",1);
|
26
|
+
DefineProxyPath("../960x540/<base>.<format>", 0.5, 1, 4, "Auto", 0, 1, 1, "");
|
27
|
+
DefineProxyPath("../480x270/<base>.<format>", 0.25, 1, 4, "Auto", 0, 1, 2, "");
|
28
|
+
DefineProxyPath("../240x135/<base>.<format>", 0.125, 1, 4, "Auto", 0, 1, 3, "");
|
29
|
+
SetAudio("100W@E0000qFdsuHW962Dl9BOW0mWa06w7mCJ000000000008");
|
30
|
+
image Primatte_v2_(image ofx_Source = 0, image ofx_BG = 0, image ofx_Mask = 0, const char * Poly00dral = "0.0 0.0 0.0", const char * Poly01dral = "0.0 0.0 0.0", const char * Poly02dral = "0.0 0.0 0.0", const char * Poly03dral = "0.0 0.0 0.0", const char * Poly04dral = "0.0 0.0 0.0", const char * Poly05dral = "0.0 0.0 0.0", const char * Poly06dral = "0.0 0.0 0.0", const char * Poly07dral = "0.0 0.0 0.0", const char * Poly08dral = "0.0 0.0 0.0", const char * Poly09dral = "0.0 0.0 0.0", const char * Poly10dral = "0.0 0.0 0.0", const char * Poly11dral = "0.0 0.0 0.0", const char * Poly12dral = "0.0 0.0 0.0", const char * Poly13dral = "0.0 0.0 0.0", const char * Poly14dral = "0.0 0.0 0.0", const char * Poly15dral = "0.0 0.0 0.0", const char * Poly16dral = "0.0 0.0 0.0", const char * Poly17dral = "0.0 0.0 0.0", const char * Poly18dral = "0.0 0.0 0.0", const char * Poly19dral = "0.0 0.0 0.0", const char * Poly20dral = "0.0 0.0 0.0", const char * Poly21dral = "0.0 0.0 0.0", const char * Poly22dral = "0.0 0.0 0.0", const char * Poly23dral = "0.0 0.0 0.0", const char * Poly24dral = "0.0 0.0 0.0", const char * Poly25dral = "0.0 0.0 0.0", const char * Poly26dral = "0.0 0.0 0.0", const char * Poly27dral = "0.0 0.0 0.0", const char * Poly28dral = "0.0 0.0 0.0", const char * Poly29dral = "0.0 0.0 0.0", const char * Poly30dral = "0.0 0.0 0.0", const char * Poly31dral = "0.0 0.0 0.0", const char * Poly32dral = "0.0 0.0 0.0", const char * Poly33dral = "0.0 0.0 0.0", const char * Poly34dral = "0.0 0.0 0.0", const char * Poly35dral = "0.0 0.0 0.0", const char * Poly36dral = "0.0 0.0 0.0", const char * Poly37dral = "0.0 0.0 0.0", const char * Poly38dral = "0.0 0.0 0.0", const char * Poly39dral = "0.0 0.0 0.0", const char * Poly40dral = "0.0 0.0 0.0", const char * Poly41dral = "0.0 0.0 0.0", const char * Poly42dral = "0.0 0.0 0.0", const char * Poly43dral = "0.0 0.0 0.0", const char * Poly44dral = "0.0 0.0 0.0", const char * Poly45dral = "0.0 0.0 0.0", const char * Poly46dral = "0.0 0.0 0.0", const char * Poly47dral = "0.0 0.0 0.0", const char * Poly48dral = "0.0 0.0 0.0", const char * Poly49dral = "0.0 0.0 0.0", const char * Poly50dral = "0.0 0.0 0.0", const char * Poly51dral = "0.0 0.0 0.0", const char * Poly52dral = "0.0 0.0 0.0", const char * Poly53dral = "0.0 0.0 0.0", const char * Poly54dral = "0.0 0.0 0.0", const char * Poly55dral = "0.0 0.0 0.0", const char * Poly56dral = "0.0 0.0 0.0", const char * Poly57dral = "0.0 0.0 0.0", const char * Poly58dral = "0.0 0.0 0.0", const char * Poly59dral = "0.0 0.0 0.0", const char * Poly60dral = "0.0 0.0 0.0", const char * Poly61dral = "0.0 0.0 0.0", const char * Poly62dral = "0.0 0.0 0.0", const char * Poly63dral = "0.0 0.0 0.0", const char * Poly64dral = "0.0 0.0 0.0", const char * Poly65dral = "0.0 0.0 0.0", const char * setu66_ = "0.0 0.0 0.0", const char * setu67_ = "0.0 0.0 0.0", const char * setu68_ = "0.0 0.0 0.0", const char * setu69_ = "0.0 0.0 0.0", const char * setu70_ = "0.0 0.0 0.0", const char * setu71_ = "0.0 0.0 0.0", const char * setu72_ = "0.0 0.0 0.0", const char * setu73_ = "0.0 0.0 0.0", int AutoComputeEval = 0, int AutoComputeEvalBG = 0, int AutoComputeEvalFG = 0, const char * Operation = "Select BG Color", const char * View = "Composite", const char * Mode = "Primatte", float From_TuneR = 0.0000000000, float From_TuneG = 0.0000000000, float From_TuneB = 0.0000000000, float To_TuneR = 0.0000000000, float To_TuneG = 0.0000000000, float To_TuneB = 0.0000000000, int Tune_l = 0, int Tune_m = 0, int Tune_s = 0, const char * Spill = "Complement", float ReplaceR = 0.5000000000, float ReplaceG = 0.5000000000, float ReplaceB = 0.5000000000, float BackingR = 0.0000000000, float BackingG = 0.0000000000, float BackingB = 0.0000000000, int ExtMatte = 0, int Defocus = 0, const char * DefocusDir = "Outward", int Shrink = 0, const char * Pick_Mode = "Bounding Box", const char * Grain_Size = "None", int Grain_Tol = 0, float Crop_Left = "0.0000000000 * width", float Crop_Bottom = "0.0000000000 * height", float Crop_Right = "0.0000000000 * width", float Crop_Top = "0.0000000000 * height", int N3D_Viewer = 0)
|
31
|
+
{
|
32
|
+
fx1 = OfxPluginFactory(Primatte_v2_);return fx1;
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
// Processing nodes
|
37
|
+
|
38
|
+
Stabilize1 = Stabilize(0, 0, 0, "1 point", Linear(0,1366@1,1365.5@2,1365.02@3,1364.11@4,1363.3@5,1362.62@6,1361.88@7,1361.03@8,1360.37@9,1360@10,1359.41@11,1358.81@12,1358.34@13,1358.09@14,1357.27@15,1356.27@16,1355.21@17,1354.59@18,1354.19@19,1353.61@20,1353.1@21,1352.85@22,1352.71@23,1352.38@24,1352.07@25,1351.74@26,1351.5@27,1351.19@28,1351.01@29,1350.85@30,1350.34@31,1350.2@32,1350.14@33,1350@34,1349.7@35,1349.44@36,1349.36@37,1349.08@38,1348.63@39,1348.35@40,1348.22@41,1348.12@42,1348.11@43,1348.13@44,1347.91@45,1347.76@46,1347.73@47,1347.59@48,1347.3@49,1347.1@50,1347.05@51,1347.04@52,1346.9@53,1346.84@54,1346.72@55,1346.55@56,1346.39@57,1346.33@58,1346.06@59,1345.98@60,1346@61,1345.99@62,1345.79@63,1345.72@64,1345.8@65,1345.71@66,1345.61@67),
|
39
|
+
Linear(0,606@1,605.67@2,605.746@3,605.78@4,605.857@5,605.872@6,605.901@7,606.006@8,605.795@9,606.011@10,606.027@11,605.943@12,605.925@13,605.907@14,605.786@15,605.869@16,605.672@17,605.636@18,605.663@19,605.605@20,605.465@21,605.526@22,605.47@23,605.563@24,605.65@25,605.566@26,605.66@27,605.688@28,605.694@29,605.942@30,605.687@31,605.782@32,605.654@33,605.817@34,605.77@35,605.656@36,605.761@37,605.805@38,605.89@39,605.907@40,605.909@41,605.728@42,605.891@43,605.808@44,605.813@45,605.698@46,605.599@47,605.768@48,605.743@49,605.939@50,605.762@51,605.716@52,605.719@53,605.637@54,605.704@55,605.642@56,605.63@57,605.825@58,605.894@59,605.712@60,605.744@61,605.625@62,605.519@63,605.437@64,605.59@65,605.762@66,605.851@67),
|
40
|
+
1, 1, Linear(0,890@1,889.413@2,888.704@3,887.597@4,886.667@5,885.852@6,885.007@7,883.963@8,883.279@9,882.873@10,882.263@11,881.57@12,880.975@13,880.664@14,879.953@15,878.899@16,877.836@17,877.309@18,876.896@19,876.353@20,875.782@21,875.601@22,875.431@23,875.077@24,874.794@25,874.588@26,874.293@27,873.926@28,873.789@29,873.587@30,873.21@31,872.998@32,872.925@33,872.715@34,872.422@35,872.265@36,872.12@37,871.746@38,871.4@39,871.022@40,870.889@41,870.802@42,870.818@43,870.759@44,870.563@45,870.414@46,870.32@47,870.177@48,869.892@49,869.646@50,869.631@51,869.589@52,869.454@53,869.383@54,869.312@55,869.179@56,869.083@57,868.87@58,868.698@59,868.618@60,868.591@61,868.576@62,868.486@63,868.419@64,868.356@65,868.303@66,868.116@67),
|
41
|
+
Linear(0,580@1,579.934@2,579.999@3,580.134@4,580.261@5,580.311@6,580.322@7,580.248@8,580.298@9,580.355@10,580.343@11,580.249@12,580.341@13,580.34@14,580.45@15,580.399@16,580.22@17,580.332@18,580.173@19,580.119@20,579.968@21,580.083@22,580.154@23,580.233@24,580.38@25,580.244@26,580.346@27,580.202@28,580.219@29,580.234@30,580.275@31,580.324@32,580.413@33,580.628@34,580.562@35,580.607@36,580.51@37,580.446@38,580.474@39,580.462@40,580.507@41,580.524@42,580.719@43,580.65@44,580.685@45,580.671@46,580.58@47,580.621@48,580.589@49,580.705@50,580.709@51,580.735@52,580.753@53,580.689@54,580.682@55,580.664@56,580.645@57,580.757@58,580.8@59,580.707@60,580.734@61,580.699@62,580.618@63,580.684@64,580.638@65,580.739@66,580.755@67),
|
42
|
+
0, 0, 2*width/3, 2*height/3, width/3, 2*height/3, "box",
|
43
|
+
xFilter, "trsx", 0, 0.5, -(shutterTiming*script.shutterTiming)/2,
|
44
|
+
1, 1, 0, 1, "v2.0", 36, "1/64", "luminance", 0.3, 0.59, 0.11,
|
45
|
+
0.75, "use start frame", 0.5, "stop", 0, 0, 25, "track1",
|
46
|
+
1349.44-height/25, 1349.44+height/25, 605.656-height/25,
|
47
|
+
605.656+height/25, 1349.44-height/15, 1349.44+height/15,
|
48
|
+
605.656-height/15, 605.656+height/15, "track2", 872.265-height/25,
|
49
|
+
872.265+height/25, 580.607-height/25, 580.607+height/25,
|
50
|
+
872.265-height/15, 872.265+height/15, 580.607-height/15,
|
51
|
+
580.607+height/15, "track3", 2*width/3-height/30, 2*width/3+height/30,
|
52
|
+
2*height/3-height/30, 2*height/3+height/30, 2*width/3-height/15,
|
53
|
+
2*width/3+height/15, 2*height/3-height/15, 2*height/3+height/15,
|
54
|
+
"track4", width/3-height/30, width/3+height/30, 2*height/3-height/30,
|
55
|
+
2*height/3+height/30, width/3-height/15, width/3+height/15,
|
56
|
+
2*height/3-height/15, 2*height/3+height/15);
|
57
|
+
|
58
|
+
|
59
|
+
// User Interface settings
|
60
|
+
|
61
|
+
SetKey(
|
62
|
+
"colorPicker.hex", "0",
|
63
|
+
"colorPicker.range", "32",
|
64
|
+
"globals.bufferSelectToggling", "0",
|
65
|
+
"globals.cacheMode", "2",
|
66
|
+
"globals.consoleLineLength", "120",
|
67
|
+
"globals.displayThumbnails", "1",
|
68
|
+
"globals.enhancedNodeView", "0",
|
69
|
+
"globals.fileBrowserExactList", "0",
|
70
|
+
"globals.fileBrowserFilterList", "1",
|
71
|
+
"globals.fileBrowserFullList", "1",
|
72
|
+
"globals.fileBrowserHeight", "540",
|
73
|
+
"globals.fileBrowserImageList", "0",
|
74
|
+
"globals.fileBrowserLC1", "482",
|
75
|
+
"globals.fileBrowserLC2", "70",
|
76
|
+
"globals.fileBrowserLC3", "110",
|
77
|
+
"globals.fileBrowserLC4", "245",
|
78
|
+
"globals.fileBrowserLC5", "175",
|
79
|
+
"globals.fileBrowserLC6", "65",
|
80
|
+
"globals.fileBrowserLC7", "111",
|
81
|
+
"globals.fileBrowserRIntSet", "0",
|
82
|
+
"globals.fileBrowserSC1", "211",
|
83
|
+
"globals.fileBrowserSC2", "211",
|
84
|
+
"globals.fileBrowserSC3", "211",
|
85
|
+
"globals.fileBrowserSeqList", "0",
|
86
|
+
"globals.fileBrowserShortList", "0",
|
87
|
+
"globals.fileBrowserWIntSet", "1",
|
88
|
+
"globals.fileBrowserWidth", "1035",
|
89
|
+
"globals.fileBrowserfullPath", "0",
|
90
|
+
"globals.fontBlue", "1",
|
91
|
+
"globals.fontGreen", "1",
|
92
|
+
"globals.fontRed", "1",
|
93
|
+
"globals.gridBlue", "0.15",
|
94
|
+
"globals.gridEnabled", "0",
|
95
|
+
"globals.gridGreen", "0.15",
|
96
|
+
"globals.gridHeight", "40",
|
97
|
+
"globals.gridRed", "0.15",
|
98
|
+
"globals.gridVisible", "0",
|
99
|
+
"globals.gridWidth", "40",
|
100
|
+
"globals.layoutTightness", "40",
|
101
|
+
"globals.multiPlaneLocatorScale", "1",
|
102
|
+
"globals.noodleABlue", "1",
|
103
|
+
"globals.noodleAGreen", "1",
|
104
|
+
"globals.noodleARed", "1",
|
105
|
+
"globals.noodleAZBlue", "0.4",
|
106
|
+
"globals.noodleAZGreen", "0",
|
107
|
+
"globals.noodleAZRed", "0",
|
108
|
+
"globals.noodleBWABlue", "0.4",
|
109
|
+
"globals.noodleBWAGreen", "0.4",
|
110
|
+
"globals.noodleBWARed", "0.4",
|
111
|
+
"globals.noodleBWAZBlue", "0.4",
|
112
|
+
"globals.noodleBWAZGreen", "0",
|
113
|
+
"globals.noodleBWAZRed", "0",
|
114
|
+
"globals.noodleBWBlue", "0.15",
|
115
|
+
"globals.noodleBWGreen", "0.15",
|
116
|
+
"globals.noodleBWRed", "0.15",
|
117
|
+
"globals.noodleBWZBlue", "0.4",
|
118
|
+
"globals.noodleBWZGreen", "0",
|
119
|
+
"globals.noodleBWZRed", "0",
|
120
|
+
"globals.noodleBlue", "1",
|
121
|
+
"globals.noodleColorCoding", "2",
|
122
|
+
"globals.noodleGreen", "1",
|
123
|
+
"globals.noodleRGBABlue", "0.7",
|
124
|
+
"globals.noodleRGBAGreen", "0.7",
|
125
|
+
"globals.noodleRGBARed", "0.7",
|
126
|
+
"globals.noodleRGBAZBlue", "1",
|
127
|
+
"globals.noodleRGBAZGreen", "0.4",
|
128
|
+
"globals.noodleRGBAZRed", "0.4",
|
129
|
+
"globals.noodleRGBBlue", "0",
|
130
|
+
"globals.noodleRGBGreen", "0.7",
|
131
|
+
"globals.noodleRGBRed", "0.7",
|
132
|
+
"globals.noodleRGBZBlue", "0.8",
|
133
|
+
"globals.noodleRGBZGreen", "0.2",
|
134
|
+
"globals.noodleRGBZRed", "0.2",
|
135
|
+
"globals.noodleRed", "1",
|
136
|
+
"globals.noodleStipple16", "1061109567",
|
137
|
+
"globals.noodleStipple32", "-1",
|
138
|
+
"globals.noodleStipple8", "-1431655766",
|
139
|
+
"globals.noodleTension", "0.25",
|
140
|
+
"globals.noodleZBlue", "0.4",
|
141
|
+
"globals.noodleZGreen", "0",
|
142
|
+
"globals.noodleZRed", "0",
|
143
|
+
"globals.paintFrameMode", "1",
|
144
|
+
"globals.pdfBrowserPath", "",
|
145
|
+
"globals.proxyTog.cycle", "-1,0,0,0,0,-1",
|
146
|
+
"globals.renderModeTog.cycle", "2,0,0,2",
|
147
|
+
"globals.rotoAutoControlScale", "1",
|
148
|
+
"globals.rotoBuildColorBlue", "0.75",
|
149
|
+
"globals.rotoBuildColorGreen", "0.75",
|
150
|
+
"globals.rotoBuildColorRed", "0.375",
|
151
|
+
"globals.rotoControlScale", "1",
|
152
|
+
"globals.rotoFocusColorBlue", "0.9375",
|
153
|
+
"globals.rotoFocusColorGreen", "0.375",
|
154
|
+
"globals.rotoFocusColorRed", "0.5",
|
155
|
+
"globals.rotoFocusSelectColorBlue", "0.5",
|
156
|
+
"globals.rotoFocusSelectColorGreen", "1",
|
157
|
+
"globals.rotoFocusSelectColorRed", "0.5",
|
158
|
+
"globals.rotoKeyedColorBlue", "1",
|
159
|
+
"globals.rotoKeyedColorGreen", "0.65",
|
160
|
+
"globals.rotoKeyedColorRed", "0.45",
|
161
|
+
"globals.rotoNormalColorBlue", "0.125",
|
162
|
+
"globals.rotoNormalColorGreen", "0.75",
|
163
|
+
"globals.rotoNormalColorRed", "0.75",
|
164
|
+
"globals.rotoNormalSelectColorBlue", "0.0625",
|
165
|
+
"globals.rotoNormalSelectColorGreen", "1",
|
166
|
+
"globals.rotoNormalSelectColorRed", "0.0625",
|
167
|
+
"globals.rotoPickRadius", "15",
|
168
|
+
"globals.rotoTangentColorBlue", "0.125",
|
169
|
+
"globals.rotoTangentColorGreen", "0.5625",
|
170
|
+
"globals.rotoTangentColorRed", "0.5625",
|
171
|
+
"globals.rotoTangentCreationRadius", "10",
|
172
|
+
"globals.rotoTempKeyColorBlue", "0",
|
173
|
+
"globals.rotoTempKeyColorGreen", "0.5",
|
174
|
+
"globals.rotoTempKeyColorRed", "1",
|
175
|
+
"globals.rotoTransformIncrement", "5",
|
176
|
+
"globals.showActiveGlows", "2",
|
177
|
+
"globals.showConcatenationLinks", "2",
|
178
|
+
"globals.showExpressionLinks", "2",
|
179
|
+
"globals.showTimeDependency", "2",
|
180
|
+
"globals.textureProxy", "1",
|
181
|
+
"globals.thumbAlphaBlend", "1",
|
182
|
+
"globals.thumbSize", "15",
|
183
|
+
"globals.thumbSizeRelative", "0",
|
184
|
+
"globals.viewerAspectRatio", "script.defaultViewerAspectRatio",
|
185
|
+
"globals.viewerZoom", "1.0/proxyScale/proxyRatio",
|
186
|
+
"globals.virtualSliderMode", "0",
|
187
|
+
"globals.virtualSliderSpeed", "0.25",
|
188
|
+
"globals.warpBoundaryNormalColorBlue", "0",
|
189
|
+
"globals.warpBoundaryNormalColorGreen", "0.5",
|
190
|
+
"globals.warpBoundaryNormalColorRed", "1",
|
191
|
+
"globals.warpConnectionNormalColorBlue", "0.8",
|
192
|
+
"globals.warpConnectionNormalColorGreen", "0",
|
193
|
+
"globals.warpConnectionNormalColorRed", "0.4",
|
194
|
+
"globals.warpDisplacedNormalColorBlue", "1",
|
195
|
+
"globals.warpDisplacedNormalColorGreen", "0",
|
196
|
+
"globals.warpDisplacedNormalColorRed", "1",
|
197
|
+
"globals.warpLockedColorBlue", "0.6",
|
198
|
+
"globals.warpLockedColorGreen", "0.6",
|
199
|
+
"globals.warpLockedColorRed", "0.6",
|
200
|
+
"globals.warpSourceNormalColorBlue", "1",
|
201
|
+
"globals.warpSourceNormalColorGreen", "0.8",
|
202
|
+
"globals.warpSourceNormalColorRed", "0",
|
203
|
+
"globals.warpTargetNormalColorBlue", "0.7",
|
204
|
+
"globals.warpTargetNormalColorGreen", "0.2",
|
205
|
+
"globals.warpTargetNormalColorRed", "0.2",
|
206
|
+
"globals.webBrowserPath", "",
|
207
|
+
"mainQuad.bot", "0.6",
|
208
|
+
"mainQuad.left", "0.29",
|
209
|
+
"mainQuad.right", "0.39795202",
|
210
|
+
"mainQuad.top", "0.6",
|
211
|
+
"mainWin.height", "1080",
|
212
|
+
"mainWin.tabChild1", "0.Image",
|
213
|
+
"mainWin.tabChild10", "0.ThreeD",
|
214
|
+
"mainWin.tabChild11", "0.Flares",
|
215
|
+
"mainWin.tabChild12", "0.Reorders",
|
216
|
+
"mainWin.tabChild13", "0.Curve_Editor_2",
|
217
|
+
"mainWin.tabChild14", "0.Node_View_2",
|
218
|
+
"mainWin.tabChild15", "0.Time_View",
|
219
|
+
"mainWin.tabChild16", "1.Parameters1",
|
220
|
+
"mainWin.tabChild17", "1.Parameters2",
|
221
|
+
"mainWin.tabChild18", "1.Globals",
|
222
|
+
"mainWin.tabChild19", "2.Viewers",
|
223
|
+
"mainWin.tabChild2", "0.Color",
|
224
|
+
"mainWin.tabChild20", "3.Node_View",
|
225
|
+
"mainWin.tabChild21", "3.Curve_Editor",
|
226
|
+
"mainWin.tabChild22", "3.Color_Picker",
|
227
|
+
"mainWin.tabChild23", "3.Console",
|
228
|
+
"mainWin.tabChild24", "3.Audio_Panel",
|
229
|
+
"mainWin.tabChild25", "3.Pixel_Analyzer",
|
230
|
+
"mainWin.tabChild3", "0.Filter",
|
231
|
+
"mainWin.tabChild4", "0.Key",
|
232
|
+
"mainWin.tabChild5", "0.Layer",
|
233
|
+
"mainWin.tabChild6", "0.Transform",
|
234
|
+
"mainWin.tabChild7", "0.Warp",
|
235
|
+
"mainWin.tabChild8", "0.Other",
|
236
|
+
"mainWin.tabChild9", "0.Tinder",
|
237
|
+
"mainWin.width", "1912",
|
238
|
+
"mainWin.xPos", "4",
|
239
|
+
"mainWin.yPos", "99",
|
240
|
+
"nodeView.Stabilize1.t", "0",
|
241
|
+
"nodeView.Stabilize1.x", "526.2155",
|
242
|
+
"nodeView.Stabilize1.y", "458.8213",
|
243
|
+
"nodeView.xPan", "-367.4545",
|
244
|
+
"nodeView.yPan", "-267.3041",
|
245
|
+
"nodeView.zoom", "0.857309759",
|
246
|
+
"pixelAnalyzer1.aStatToggleState", "0",
|
247
|
+
"pixelAnalyzer1.accumulate", "0",
|
248
|
+
"pixelAnalyzer1.bStatToggleState", "0",
|
249
|
+
"pixelAnalyzer1.bit16ToggleState", "0",
|
250
|
+
"pixelAnalyzer1.bit32ToggleState", "1",
|
251
|
+
"pixelAnalyzer1.bit8ToggleState", "0",
|
252
|
+
"pixelAnalyzer1.gStatToggleState", "0",
|
253
|
+
"pixelAnalyzer1.hStatToggleState", "0",
|
254
|
+
"pixelAnalyzer1.hex", "0",
|
255
|
+
"pixelAnalyzer1.imgToggleState", "0",
|
256
|
+
"pixelAnalyzer1.lStatToggleState", "1",
|
257
|
+
"pixelAnalyzer1.offToggleState", "0",
|
258
|
+
"pixelAnalyzer1.pxlToggleState", "1",
|
259
|
+
"pixelAnalyzer1.rStatToggleState", "0",
|
260
|
+
"pixelAnalyzer1.sStatToggleState", "0",
|
261
|
+
"pixelAnalyzer1.vStatToggleState", "0",
|
262
|
+
"spawnedViewerCount", "0",
|
263
|
+
"timeBar.current", "36",
|
264
|
+
"timeBar.high", "67",
|
265
|
+
"timeBar.incr", "1",
|
266
|
+
"timeBar.low", "1",
|
267
|
+
"timeView.ctrls.selGroup", "0",
|
268
|
+
"timeView.wSpace.constDisp", "0",
|
269
|
+
"timeView.wSpace.dispInOut", "1",
|
270
|
+
"timeView.wSpace.endTime", "100",
|
271
|
+
"timeView.wSpace.startTime", "1",
|
272
|
+
"timeView.wSpace.trim", "0",
|
273
|
+
"updater.mode", "2",
|
274
|
+
"vDesk.0.activeBuffer", "0",
|
275
|
+
"vDesk.0.compareMode", "0",
|
276
|
+
"vDesk.0.compareTog.cycle", "-1,0,0,0,-1",
|
277
|
+
"vDesk.0.dodNodeSerial", "Bungle(Select1, 0, 1920, 0, 1080, 0, 0, 0);",
|
278
|
+
"vDesk.0.dodToggle", "0",
|
279
|
+
"vDesk.0.exp", "0",
|
280
|
+
"vDesk.0.g", "1",
|
281
|
+
"vDesk.0.gamma", "1",
|
282
|
+
"vDesk.0.gradeToggle", "0",
|
283
|
+
"vDesk.0.h", "705",
|
284
|
+
"vDesk.0.i", "0",
|
285
|
+
"vDesk.0.ih", "0",
|
286
|
+
"vDesk.0.isActive", "1",
|
287
|
+
"vDesk.0.iw", "0",
|
288
|
+
"vDesk.0.lookupTog.cycle", "1,0,0",
|
289
|
+
"vDesk.0.lookupToggle", "0",
|
290
|
+
"vDesk.0.numViewerLookups", "0",
|
291
|
+
"vDesk.0.numViewerScripts", "8",
|
292
|
+
"vDesk.0.oscAutoKeyOnOff", "0",
|
293
|
+
"vDesk.0.oscLockTog.cycle", "1,0,0,0",
|
294
|
+
"vDesk.0.oscOnOff", "1",
|
295
|
+
"vDesk.0.oscTog.cycle", "1,0,0,1",
|
296
|
+
"vDesk.0.primaryVNode", "0",
|
297
|
+
"vDesk.0.roiOnOff", "1",
|
298
|
+
"vDesk.0.scriptNodeSerial0", "ApertureMarking(riNode, \"Auto\", 0, 0, 1, 1, 1.0, 1.0, 1.0, 1.0, 3, 1, 0.2, academyDefaultRed, academyDefaultGreen, academyDefaultBlue, academyDefaultAlpha, academyDefaultLineWidth, 1, 0.4, academyDefaultRed, academyDefaultGreen, academyDefaultBlue, academyDefaultAlpha, academyDefaultLineWidth, 1, 0.6, academyDefaultRed, academyDefaultGreen, academyDefaultBlue, academyDefaultAlpha, academyDefaultLineWidth, 0, 0.8, academyDefaultRed, academyDefaultGreen, academyDefaultBlue, academyDefaultAlpha, academyDefaultLineWidth, 0, 0.5, academyDefaultRed, academyDefaultGreen, academyDefaultBlue, academyDefaultAlpha, academyDefaultLineWidth, 0, 0.25, academyDefaultRed, academyDefaultGreen, academyDefaultBlue, academyDefaultAlpha, academyDefaultLineWidth, 1.0, 1.0, 1.0, 1.0, 3, 0, 0.2, fullDefaultRed, fullDefaultGreen, fullDefaultBlue, fullDefaultAlpha, fullDefaultLineWidth, 1, 0.4, fullDefaultRed, fullDefaultGreen, fullDefaultBlue, fullDefaultAlpha, fullDefaultLineWidth, 1, 0.6, fullDefaultRed, fullDefaultGreen, fullDefaultBlue, fullDefaultAlpha, fullDefaultLineWidth, 1.0, 1.0, 1.0, 1.0, 1, 1, 20, 0.25, tvDefaultRed, tvDefaultGreen, tvDefaultBlue, tvDefaultAlpha, tvDefaultLineWidth, 1, 10, 0.5, tvDefaultRed, tvDefaultGreen, tvDefaultBlue, tvDefaultAlpha, tvDefaultLineWidth);",
|
299
|
+
"vDesk.0.scriptNodeSerial1", "ViewerScript_2_(riNode, 1, 1, 1, Input.width/2, Input.height/2);",
|
300
|
+
"vDesk.0.scriptNodeSerial2", "ViewerScript_3_(riNode, 3, 0, .5);",
|
301
|
+
"vDesk.0.scriptNodeSerial3", "ViewZ(riNode, 0, 0, 0, 5000000, 1, 100);",
|
302
|
+
"vDesk.0.scriptNodeSerial4", "FloatView_(riNode, 2, 0, 0, 1, 1-red1, 1-green1, 1-blue1);",
|
303
|
+
"vDesk.0.scriptNodeSerial5", "TimeCode_(riNode, \"Timecode\", 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, .5, 20, 20);",
|
304
|
+
"vDesk.0.scriptNodeSerial6", "ApertureMask(riNode, 4, 1, 1, 100, 100);",
|
305
|
+
"vDesk.0.scriptTog.cycle", "-1,0,0,0,0,0,0,0,0,-1",
|
306
|
+
"vDesk.0.scriptToggle", "0",
|
307
|
+
"vDesk.0.secondaryVNode", "1",
|
308
|
+
"vDesk.0.viewerGrade.cycle", "-2,-2,0",
|
309
|
+
"vDesk.0.w", "1141",
|
310
|
+
"vDesk.0.x", "0",
|
311
|
+
"vDesk.0.xPan", "5",
|
312
|
+
"vDesk.0.xliderValue", "0",
|
313
|
+
"vDesk.0.y", "0",
|
314
|
+
"vDesk.0.yPan", "-27",
|
315
|
+
"vDesk.0.zoom", "0.5845361",
|
316
|
+
"vDesk.viewers", "1"
|
317
|
+
);
|
@@ -2,6 +2,7 @@ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
|
|
2
2
|
|
3
3
|
class ShakeLexerTest < Test::Unit::TestCase
|
4
4
|
P = File.dirname(__FILE__) + "/samples/shake_script/shake_tracker_nodes.shk"
|
5
|
+
OFX_CURLY_BRACES = File.dirname(__FILE__) + "/samples/shake_script/ofx_vardefs.shk"
|
5
6
|
L = Tracksperanto::ShakeGrammar::Lexer
|
6
7
|
WRONG = File.dirname(__FILE__) + "/samples/flame_stabilizer/hugeFlameSetup.stabilizer"
|
7
8
|
|
@@ -84,7 +85,38 @@ class ShakeLexerTest < Test::Unit::TestCase
|
|
84
85
|
]],
|
85
86
|
s)
|
86
87
|
end
|
87
|
-
|
88
|
+
|
89
|
+
def test_knob_expr
|
90
|
+
s = parse "Foobar(2, 4, {{ 4 * 16 }}, 4, 1)"
|
91
|
+
assert_equal(
|
92
|
+
[[
|
93
|
+
:funcall,
|
94
|
+
"Foobar",
|
95
|
+
2,
|
96
|
+
4,
|
97
|
+
:expr,
|
98
|
+
4,
|
99
|
+
1,
|
100
|
+
]],
|
101
|
+
s)
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_lexer_with_ofx_curly_braces
|
105
|
+
s = parse(File.read(OFX_CURLY_BRACES))
|
106
|
+
assert_equal(
|
107
|
+
[[
|
108
|
+
:funcall,
|
109
|
+
"image Primatte_v2_",
|
110
|
+
[:assign, [:vardef, "image", "ofx_Source"], 0],
|
111
|
+
[:assign, [:vardef, "image", "ofx_BG"], 0],
|
112
|
+
[:assign, [:vardef, "image", "ofx_Mask"], 0],
|
113
|
+
[:assign, [:vardef, "const char *", "Poly00dral"], "0.0 0.0 0.0"],
|
114
|
+
[:assign, [:vardef, "int", "N3D_Viewer"], 0],
|
115
|
+
:expr
|
116
|
+
], [:funcall, "Foo", 2]],
|
117
|
+
s)
|
118
|
+
end
|
119
|
+
|
88
120
|
def test_parse_funcall_with_valueats_at_negframes
|
89
121
|
s = parse 'Linear(0,716.08@-1,715.846@2)'
|
90
122
|
assert_equal(
|
@@ -121,12 +153,17 @@ class ShakeLexerTest < Test::Unit::TestCase
|
|
121
153
|
|
122
154
|
def test_parse_varassign
|
123
155
|
s = parse 'Foo = Blur(Foo, 1, 2, 3); 1'
|
124
|
-
assert_equal [[:assign, [:vardef, "Foo"], [:funcall, "Blur", [:atom, "Foo"], 1, 2, 3]], 1], s
|
156
|
+
assert_equal [[:assign, [:vardef, :image, "Foo"], [:funcall, "Blur", [:atom, "Foo"], 1, 2, 3]], 1], s
|
125
157
|
end
|
126
158
|
|
127
159
|
def test_parse_varassign_with_typedef
|
128
160
|
s = parse 'curve float focal = Linear(0,2257.552@1,2257.552@2)'
|
129
|
-
assert_equal [[:assign, [:vardef, "curve
|
161
|
+
assert_equal [[:assign, [:vardef, "curve float", "focal"], [:funcall, "Linear", 0, [:value_at, 1, 2257.552], [:value_at, 2, 2257.552]]]], s
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_parse_varassign_with_typedef_charstar
|
165
|
+
s = parse 'char * information = "Ausgezeichnet!";'
|
166
|
+
assert_equal [[:assign, [:vardef, "char *", "information"], "Ausgezeichnet!" ]], s
|
130
167
|
end
|
131
168
|
|
132
169
|
def test_parse_whole_file_does_not_raise
|
@@ -116,6 +116,14 @@ class ShakeScriptImportTest < Test::Unit::TestCase
|
|
116
116
|
trackers = Tracksperanto::Import::ShakeScript.new(:io => fixture, :width => 1920, :height => 1080).to_a
|
117
117
|
assert_equal 8, trackers.length
|
118
118
|
end
|
119
|
+
|
120
|
+
def test_REDACTED_shake_file
|
121
|
+
fixture = File.open(File.dirname(__FILE__) + "/samples/shake_script/REDACTED_shake_file.shk")
|
122
|
+
trackers = Tracksperanto::Import::ShakeScript.new(:io => fixture, :width => 1920, :height => 1080).to_a
|
123
|
+
assert_equal 2, trackers.length
|
124
|
+
assert_equal "Stabilize1_track1", trackers[0].name
|
125
|
+
assert_equal "Stabilize1_track2", trackers[1].name
|
126
|
+
end
|
119
127
|
|
120
128
|
def test_tracker_node_from_stoneage_shake_version
|
121
129
|
fixture = File.open(File.dirname(__FILE__) + "/samples/shake_script/oldTrackerNode.shk")
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__)) + '/../helper'
|
2
|
+
|
3
|
+
class LintMiddlewareTest < Test::Unit::TestCase
|
4
|
+
def test_empty_export_raises
|
5
|
+
m = flexmock
|
6
|
+
m.should_receive(:start_export).once
|
7
|
+
|
8
|
+
ex = Tracksperanto::Middleware::Lint.new(m)
|
9
|
+
ex.start_export(100, 100)
|
10
|
+
assert_raise(Tracksperanto::Middleware::Lint::NoTrackersExportedError) do
|
11
|
+
ex.end_export
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_exporting_empty_tracker_raises
|
17
|
+
m = flexmock
|
18
|
+
m.should_receive(:start_export).once
|
19
|
+
m.should_receive(:start_tracker_segment).once
|
20
|
+
|
21
|
+
ex = Tracksperanto::Middleware::Lint.new(m)
|
22
|
+
ex.start_export(100, 100)
|
23
|
+
ex.start_tracker_segment("Foo")
|
24
|
+
|
25
|
+
assert_raise(Tracksperanto::Middleware::Lint::EmptyTrackerSentError) do
|
26
|
+
ex.end_tracker_segment
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def test_exporting_with_two_starts_raises
|
32
|
+
m = flexmock
|
33
|
+
m.should_receive(:start_export).once
|
34
|
+
m.should_receive(:start_tracker_segment).once
|
35
|
+
|
36
|
+
ex = Tracksperanto::Middleware::Lint.new(m)
|
37
|
+
ex.start_export(100, 100)
|
38
|
+
ex.start_tracker_segment("Foo")
|
39
|
+
|
40
|
+
assert_raise(Tracksperanto::Middleware::Lint::TrackerRestartedError) do
|
41
|
+
ex.start_tracker_segment("Bar")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
data/test/test_pipeline.rb
CHANGED
@@ -59,12 +59,15 @@ class PipelineTest < Test::Unit::TestCase
|
|
59
59
|
]
|
60
60
|
|
61
61
|
mock_mux = flexmock("MUX")
|
62
|
+
mock_lint = flexmock("LINT")
|
62
63
|
flexmock(Tracksperanto::Export::Mux).should_receive(:new).and_return(mock_mux)
|
64
|
+
flexmock(Tracksperanto::Middleware::Lint).should_receive(:new).with(mock_mux).and_return(mock_lint)
|
65
|
+
|
63
66
|
m = flexmock("middleware object")
|
64
67
|
mock_middleware_class = flexmock("middleware class")
|
65
68
|
|
66
69
|
flexmock(Tracksperanto).should_receive(:get_middleware).with("Bla").once.and_return(mock_middleware_class)
|
67
|
-
mock_middleware_class.should_receive(:new).with(
|
70
|
+
mock_middleware_class.should_receive(:new).with(mock_lint, {:foo => 234}).once
|
68
71
|
|
69
72
|
assert_raise(NoMethodError) { pipeline.run(@stabilizer) }
|
70
73
|
end
|
@@ -95,7 +98,8 @@ class PipelineTest < Test::Unit::TestCase
|
|
95
98
|
end
|
96
99
|
|
97
100
|
def test_run_with_unknown_format_raises
|
98
|
-
|
101
|
+
File.open("./input.txt", "w"){|f| f.write("foo") }
|
102
|
+
|
99
103
|
pipeline = Tracksperanto::Pipeline::Base.new
|
100
104
|
assert_raise(Tracksperanto::Pipeline::UnknownFormatError) { pipeline.run("./input.txt") }
|
101
105
|
assert_raise(Tracksperanto::Pipeline::UnknownFormatError) { pipeline.run("./input.txt", :width => 100, :height => 100) }
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tracksperanto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 2.3.
|
9
|
+
- 1
|
10
|
+
version: 2.3.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Julik Tarkhanov
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-05-08 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -118,6 +118,7 @@ files:
|
|
118
118
|
- lib/middleware/golden.rb
|
119
119
|
- lib/middleware/length_cutoff.rb
|
120
120
|
- lib/middleware/lerp.rb
|
121
|
+
- lib/middleware/lint.rb
|
121
122
|
- lib/middleware/prefix.rb
|
122
123
|
- lib/middleware/reformat.rb
|
123
124
|
- lib/middleware/scaler.rb
|
@@ -190,10 +191,12 @@ files:
|
|
190
191
|
- test/import/samples/pftrack5/apft.2dt
|
191
192
|
- test/import/samples/pftrack5/empty_trackers.2dt
|
192
193
|
- test/import/samples/pftrack5/garage.2dt
|
194
|
+
- test/import/samples/shake_script/REDACTED_shake_file.shk
|
193
195
|
- test/import/samples/shake_script/designated_global_range_starting_at_negative_frame.shk
|
194
196
|
- test/import/samples/shake_script/four_tracks_in_one_matchmove.shk
|
195
197
|
- test/import/samples/shake_script/four_tracks_in_one_stabilizer.shk
|
196
198
|
- test/import/samples/shake_script/from_matchmover.shk
|
199
|
+
- test/import/samples/shake_script/ofx_vardefs.shk
|
197
200
|
- test/import/samples/shake_script/oldTrackerNode.shk
|
198
201
|
- test/import/samples/shake_script/shake_script_from_boujou.shk
|
199
202
|
- test/import/samples/shake_script/shake_tracker_nodes.shk
|
@@ -229,6 +232,7 @@ files:
|
|
229
232
|
- test/middleware/test_golden_middleware.rb
|
230
233
|
- test/middleware/test_length_cutoff_middleware.rb
|
231
234
|
- test/middleware/test_lerp_middleware.rb
|
235
|
+
- test/middleware/test_lint_middleware.rb
|
232
236
|
- test/middleware/test_prefix.rb
|
233
237
|
- test/middleware/test_reformat_middleware.rb
|
234
238
|
- test/middleware/test_scaler_middleware.rb
|
@@ -315,6 +319,7 @@ test_files:
|
|
315
319
|
- test/middleware/test_golden_middleware.rb
|
316
320
|
- test/middleware/test_length_cutoff_middleware.rb
|
317
321
|
- test/middleware/test_lerp_middleware.rb
|
322
|
+
- test/middleware/test_lint_middleware.rb
|
318
323
|
- test/middleware/test_prefix.rb
|
319
324
|
- test/middleware/test_reformat_middleware.rb
|
320
325
|
- test/middleware/test_scaler_middleware.rb
|