# Sci-D-Vis AfterEffects "Patch". # include Uwe's TCL vector lib... set path [get3DEInstallPath] source $path/user_data/tcl_archive/veclib.tcl # global scale... set global_scale 100 set pg [getSelectedPGroup] if {$pg==0}\ { bell post3DEInfoRequester " \n Error, there is no Pointgroup selected. \n" return } set fobj [getSelectedFobj] if {$fobj==0}\ { bell post3DEInfoRequester " \n Error, there is no sequence selected! \n" return } set filename [post3DEFileRequester "Export After Effects (Clipboard) file..." "*"] if {$filename!=""}\ { set file [open $filename w+] # write "header"... puts $file "Adobe After Effects 5.0 Keyframe Data" puts $file "" puts $file "\tUnits Per Second\t24" set width [getFobjImageWidth $fobj] puts $file "\tSource Width\t$width" set height [getFobjImageHeight $fobj] puts $file "\tSource Height\t$height" set camera [getFobjCamera $fobj] set aspect [getCameraPixelAspect $camera] puts $file "\tSource Pixel Aspect Ratio\t$aspect" puts $file "\tComp Pixel Aspect Ratio\t$aspect" puts $file "" # write positional data... puts $file "Position" puts $file "\tFrame\tX pixels\tY pixels\tZ pixels" set no_frames [getFobjNoFrames $fobj] for {set frame 1} {$frame<=$no_frames} {set frame [expr $frame+1]}\ { set pos3d [getPGroupPosition3D $pg $fobj $frame] set x [expr [lindex $pos3d 0]*$global_scale] set y [expr [lindex $pos3d 1]*$global_scale] set z [expr [lindex $pos3d 2]*$global_scale] set i [expr $frame-1] puts $file "\t$i\t$x\t$y\t$z" } # z rotational data... puts $file "Z Rotation" puts $file "\tFrame\tdegrees" set no_frames [getFobjNoFrames $fobj] for {set frame 1} {$frame<=$no_frames} {set frame [expr $frame+1]}\ { set mtx [getPGroupRotation3D $pg $fobj $frame] set vec [mat3rotangles $mtx 1 0 2] set z [expr ([lindex $vec 2]*180)/3.141592654] set i [expr $frame-1] puts $file "\t$i\t$z" } puts $file "" # x rotational data... puts $file "X Rotation" puts $file "\tFrame\tdegrees" set no_frames [getFobjNoFrames $fobj] for {set frame 1} {$frame<=$no_frames} {set frame [expr $frame+1]}\ { set mtx [getPGroupRotation3D $pg $fobj $frame] set vec [mat3rotangles $mtx 1 0 2] set x [expr (([lindex $vec 1]*180)/3.141592654)-45] set i [expr $frame-1] puts $file "\t$i\t$x" } puts $file "" # y rotational data... puts $file "Y Rotation" puts $file "\tFrame\tdegrees" set no_frames [getFobjNoFrames $fobj] for {set frame 1} {$frame<=$no_frames} {set frame [expr $frame+1]}\ { set mtx [getPGroupRotation3D $pg $fobj $frame] set vec [mat3rotangles $mtx 1 0 2] set y [expr (([lindex $vec 0]*180)/3.141592654)+90] set i [expr $frame-1] puts $file "\t$i\t$y" } puts $file "" # close & exit... puts $file "Orientation" puts $file "\tFrame\tdegrees" puts $file "\t0\t0\t0\t0" puts $file "" puts $file "" puts $file "End of Keyframe Data" close $file post3DEInfoRequester " \n Ok, After Effects data written into file... \n" }