lib/export/equalizer3.rb
# Export for 3DE v3 point files. 3DE always starts frames at 1.
class Tracksperanto::Export::Equalizer3 < Tracksperanto::Export::Base
HEADER = '// 3DE Multiple Tracking Curves Export %d x %d * %d frames'
def self.desc_and_extension
"3de_v3.txt"
end
def self.human_name
"3DE v3 point export .txt file"
end
def start_export( img_width, img_height)
@w, @h = img_width, img_height
# 3DE needs to know the number of keyframes in advance
@buffer = Tracksperanto::BufferIO.new
@highest_keyframe = 0
end
def start_tracker_segment(tracker_name)
@buffer.puts(tracker_name)
end
def export_point(frame, abs_float_x, abs_float_y, float_residual)
off_by_one = frame + 1
@buffer.puts("\t%d\t%.3f\t%.3f" % [off_by_one, abs_float_x, abs_float_y])
@highest_keyframe = off_by_one if (@highest_keyframe < off_by_one)
end
def end_export
@buffer.rewind
@io.puts(HEADER % [@w, @h, @highest_keyframe])
@io.puts(@buffer.read) until @buffer.eof?
@buffer.close!
@io.puts("") # Newline at end
end
end