tracksperanto 1.6.7 → 1.6.8

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 CHANGED
@@ -1,3 +1,7 @@
1
+ === 1.6.8 / 2010-01-13
2
+
3
+ * Fix frame gap handling for repeating gaps in the Nuke importer
4
+
1
5
  === 1.6.7 / 2010-01-13
2
6
 
3
7
  * Fix frame gap sizes in the Nuke exporter (thanks Michael Lester)
data/Manifest.txt CHANGED
@@ -86,6 +86,7 @@ test/import/samples/nuke/018.nk
86
86
  test/import/samples/nuke/one_tracker_with_break.nk
87
87
  test/import/samples/nuke/one_tracker_with_break_in_grp.nk
88
88
  test/import/samples/nuke/tracker_with_differing_gaps.nk
89
+ test/import/samples/nuke/tracker_with_repeating_gaps.nk
89
90
  test/import/samples/pftrack4/sourcefile_pftrack.2dt
90
91
  test/import/samples/pftrack5/garage.2dt
91
92
  test/import/samples/shake_script/four_tracks_in_one_matchmove.shk
@@ -60,16 +60,22 @@ class Tracksperanto::Import::NukeScript < Tracksperanto::Import::Base
60
60
  atoms, tuples = curve_text.gsub(/\}/m, ' }').split, []
61
61
  # Nuke saves curves very efficiently. x(keyframe_number) means that an uninterrupted sequence of values will start,
62
62
  # after which values follow. When the curve is interrupted in some way a new x(keyframe_number) will signifu that we
63
- # skip to that specified keyframe and the curve continues from there
63
+ # skip to that specified keyframe and the curve continues from there, in gap size defined by the last fragment.
64
+ # That is, x1 1 x3 2 3 4 will place 2, 3 and 4 at 2-frame increments
64
65
 
65
66
  last_processed_keyframe = 1
67
+ intraframe_gap_size = 1
66
68
  while atom = atoms.shift
67
69
  if atom =~ SECTION_START
68
70
  last_processed_keyframe = $1.to_i
71
+ if tuples.any?
72
+ last_captured_frame = tuples[-1][0]
73
+ intraframe_gap_size = last_processed_keyframe - last_captured_frame
74
+ end
69
75
  elsif atom =~ KEYFRAME
70
76
  report_progress("Reading curve at frame #{last_processed_keyframe}")
71
77
  tuples << [last_processed_keyframe, $1.to_f]
72
- last_processed_keyframe += 1
78
+ last_processed_keyframe += intraframe_gap_size
73
79
  elsif atom == '}'
74
80
  return tuples
75
81
  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'
7
+ VERSION = '1.6.8'
8
8
 
9
9
  module Import; end
10
10
  module Export; end
@@ -0,0 +1,79 @@
1
+ #! /Applications/Nuke5.2v3/Nuke5.2v3.app/Contents/MacOS/Nuke5.2v3 -nx
2
+ version 5.2300
3
+ define_window_layout_xml {<?xml version="1.0" encoding="UTF-8"?>
4
+ <layout version="1.0">
5
+ <window x="0" y="22" w="1680" h="1024" screen="0">
6
+ <splitter orientation="1">
7
+ <split size="1062"></split>
8
+ <splitter orientation="1">
9
+ <split size="40"></split>
10
+ <dock id="" hideTitles="1" activePageId="Toolbar.1">
11
+ <page id="Toolbar.1"></page>
12
+ </dock>
13
+ <split size="1018"></split>
14
+ <splitter orientation="2">
15
+ <split size="499"></split>
16
+ <dock id="" activePageId="Viewer.1">
17
+ <page id="Viewer.1"></page>
18
+ </dock>
19
+ <split size="499"></split>
20
+ <dock id="" activePageId="DAG.1">
21
+ <page id="DAG.1"></page>
22
+ <page id="Curve Editor.1"></page>
23
+ </dock>
24
+ </splitter>
25
+ </splitter>
26
+ <split size="614"></split>
27
+ <dock id="" activePageId="Properties.1">
28
+ <page id="Properties.1"></page>
29
+ <page id="Script Editor.1"></page>
30
+ </dock>
31
+ </splitter>
32
+ </window>
33
+ </layout>
34
+ }
35
+ Root {
36
+ inputs 0
37
+ name /Code/apps/tracksperanto/test/import/samples/nuke/tracker_with_repeating_gaps.nk
38
+ frame 12
39
+ format "2048 1556 0 0 2048 1556 1 2K_Super_35(full-ap)"
40
+ proxy_type scale
41
+ proxy_format "1024 778 0 0 1024 778 1 1K_Super_35(full-ap)"
42
+ }
43
+ Viewer {
44
+ inputs 0
45
+ frame 12
46
+ name Viewer1
47
+ xpos -40
48
+ ypos -10
49
+ }
50
+ Constant {
51
+ inputs 0
52
+ channels rgb
53
+ name Constant1
54
+ xpos -265
55
+ ypos -191
56
+ }
57
+ Tracker3 {
58
+ track1 {{curve x1 196 326 440 x6 554 658 752} {curve x1 574 556 534 x6 512 492 476}}
59
+ offset1 {0 0}
60
+ pattern1 {-32 -32 32 32}
61
+ search1 {-22 -22 22 22}
62
+ track2 {1126 676}
63
+ offset2 {0 0}
64
+ pattern2 {-32 -32 32 32}
65
+ search2 {-22 -22 22 22}
66
+ track3 {1126 880}
67
+ offset3 {0 0}
68
+ pattern3 {-32 -32 32 32}
69
+ search3 {-22 -22 22 22}
70
+ track4 {922 880}
71
+ offset4 {0 0}
72
+ pattern4 {-32 -32 32 32}
73
+ search4 {-22 -22 22 22}
74
+ translate {{curve x1 0 130 244 x6 358 462 556} {curve x1 0 -18 -40 x6 -62 -82 -98}}
75
+ center {{curve x1 196 196 196 x6 196 196 196} {curve x1 574 574 574 x6 574 574 574}}
76
+ name Tracker1
77
+ xpos -265
78
+ ypos -119
79
+ }
@@ -51,6 +51,19 @@ class NukeImportTest < Test::Unit::TestCase
51
51
  assert_equal 109, t[-1].frame
52
52
  end
53
53
 
54
+ def test_parsing_node_with_succesive_gaps_larger_than_one_frame
55
+ fixture = File.open(File.dirname(__FILE__) + '/samples/nuke/tracker_with_repeating_gaps.nk')
56
+ parser = Tracksperanto::Import::NukeScript.new
57
+ parser.width = 2048
58
+ parser.height = 1556
59
+ trackers = parser.parse(fixture)
60
+ assert_equal 1, trackers.length
61
+ t = trackers[0]
62
+ assert_equal 5, t[3].frame
63
+ assert_equal 8, t[4].frame
64
+ assert_equal 11, t[5].frame
65
+ end
66
+
54
67
  def test_parsing_from_nuke_group
55
68
  fixture = File.open(File.dirname(__FILE__) + '/samples/nuke/one_tracker_with_break_in_grp.nk')
56
69
 
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.7
4
+ version: 1.6.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julik Tarkhanov
@@ -133,6 +133,7 @@ files:
133
133
  - test/import/samples/nuke/one_tracker_with_break.nk
134
134
  - test/import/samples/nuke/one_tracker_with_break_in_grp.nk
135
135
  - test/import/samples/nuke/tracker_with_differing_gaps.nk
136
+ - test/import/samples/nuke/tracker_with_repeating_gaps.nk
136
137
  - test/import/samples/pftrack4/sourcefile_pftrack.2dt
137
138
  - test/import/samples/pftrack5/garage.2dt
138
139
  - test/import/samples/shake_script/four_tracks_in_one_matchmove.shk