lib/export/syntheyes.rb in tracksperanto-2.1.0 vs lib/export/syntheyes.rb in tracksperanto-2.1.1

- old
+ new

@@ -13,11 +13,11 @@ def start_export( img_width, img_height) @width, @height = img_width, img_height end def start_tracker_segment(tracker_name) - @last_registered_frame, @tracker_name = nil, tracker_name + @last_registered_frame, @tracker_name = nil, camelize(tracker_name) end def export_point(frame, abs_float_x, abs_float_y, float_residual) values = [ @tracker_name, frame, convert_to_uv(abs_float_x, @width), @@ -40,15 +40,31 @@ # OUTCOME_OK = 4 -- usable u/v present on this frame # OUTCOME_KEY = 8 -- there is a key here (OK will be on too) # OUTCOME_JUMPED = 16 # OUTCOME_OUTASIGHT = 32 # We actually provide pregenerated status codes instead of that to get the desired outcome codes. + # When you set all frames to be keyframes this affects the solver in a negative way because Syntheyes + # (reasonably) gives priority to keyframes over standard frames of the tracker - and also + # the transition frames parameter does not work too well over keyframes def get_outcome_code(frame) outcome = if @last_registered_frame.nil? || (@last_registered_frame != (frame - 1)) STATUS_REENABLE else STATUS_STD end @last_registered_frame = frame outcome + end + + # The import script in Syntheyes is designed to transform "Tracker_1" + # into "Tracker 1" by replacing underscores with spaces. This is all good and + # well but downstream when Syntheyes exports the matchmove some apps will be + # getting the features reinstated with spaces in their names. In some cases + # (for example in Maya) this leads to dangling groups because primitives with spaces + # in names cannot even be created! The reach of this problem is dependent on the + # sanity of the one who wrote the export sizzle script for Syntheyes. The morale of the + # story is - we will use CamelCase instead of underscores and avoid having + # spaces in feature names as such + def camelize(lower_case_and_underscored_word) + lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase } end end