class Tracksperanto::Import::MayaLive

Constants

COMMENT

Attributes

aspect[RW]

Maya Live exports and imports tracks in “aspect units”, so a point at 0,0 will be at -1.78,-1 in MayaLive coordinates with aspect of 1.78. Therefore we offer an override for the aspect being imported (if the pixels are not square)

Public Class Methods

autodetects_size?() click to toggle source
# File lib/import/maya_live.rb, line 12
def self.autodetects_size?
  true
end
human_name() click to toggle source
# File lib/import/maya_live.rb, line 8
def self.human_name
  "Maya Live track export file"
end
known_snags() click to toggle source
# File lib/import/maya_live.rb, line 16
def self.known_snags
  'Only square pixel aspect ratio shots are supported.'
end

Public Instance Methods

each() { |last_tracker| ... } click to toggle source
# File lib/import/maya_live.rb, line 22
def each
  io = Tracksperanto::ExtIO.new(@io)
  extract_width_height_and_aspect(io.gets_non_empty)
  
  while line = io.gets_and_strip
    if line =~ COMMENT
      yield(@last_tracker) if @last_tracker
      @last_tracker = Tracksperanto::Tracker.new(:name => line.gsub(/#{COMMENT} Name(\s+)/, ''))
      next
    end
    
    tracker_num, frame, x, y, residual = line.split
    
    abs_x, abs_y = aspect_values_to_pixels(x, y)
    @last_tracker.keyframe! :frame => frame, :abs_x => abs_x, :abs_y => abs_y,  :residual => set_residual(residual)
  end
  
  yield(@last_tracker) if @last_tracker
end

Private Instance Methods

aspect_values_to_pixels(x, y) click to toggle source
# File lib/import/maya_live.rb, line 44
def aspect_values_to_pixels(x, y)
  [
    (@width.to_f / 2.0) + (x.to_f * @x_unit.to_f),
    (@height.to_f / 2.0) + (y.to_f * @y_unit.to_f)
  ]
end
extract_width_height_and_aspect(from_str) click to toggle source
# File lib/import/maya_live.rb, line 51
def extract_width_height_and_aspect(from_str)
  self.width, self.height = from_str.scan(/\d+/)
  @aspect ||= width.to_f / height.to_f
  @x_unit = width / (@aspect * 2)
  @y_unit = height / (1 * 2)
end
set_residual(residual) click to toggle source
# File lib/import/maya_live.rb, line 58
def set_residual(residual)
  (residual == "-1" ? 0 : residual)
end