// // Title: Sapphire Panorama AVI script // Author: Aaron Torpy // Date: 5 Mar 2009 // URL: http://www.bundysoft.com/wiki/doku.php?id=tutorials:l3dt:panorama // Updated: 14 Jul 2011 // hvar pHF set pHF float scale set scale // create settings variables float ls.PositionX float ls.PositionY float ls.Heading float ls.Altitude int ls.nFrames // initialise settings with default values set ls.PositionX
2> set ls.PositionY
2> set ls.nFrames 360 set ls.Altitude 500 set ls.Heading 0 // get position from Sapphire if open if set ls.PositionX set ls.PositionY set ls.Altitude set ls.Altitude // convert from reduced units to metres set ls.Heading set ls.Heading // convert to degrees endif // ask user for settings if > return false endif // ask user for filename filesel FS filesel.Init &FS false NULL "AVI movie file (*.avi)|*.avi|" "avi" NULL if > return false endif string FileName set FileName float alt set alt
float azim set azim Sapphire.ShowWnd Sapphire.SetPause true Sapphire.Camera.SetElev 0 Sapphire.Camera.SetAzim azim Sapphire.Camera.SetPos3d ls.PositionX ls.PositionY alt // calculate angle step size float dtheta set dtheta
ls.nFrames> // prepare progres box progbox prog progbox.SetTitle &prog "Recording movie" progbox.ShowWnd &prog // prepare some variables for the loop int k kmax set k 0 set kmax ls.nFrames map Frame // run a few frames to make Sapphire settle do Sapphire.RenderFrame 0 while 10> // now run the panorama loop set k 0 do // update progress display progbox.SetProgress &prog k kmax Sapphire.Camera.SetAzim azim // set camera angle Sapphire.RenderFrame 0 // render a frame Sapphire.ScreenCap2 &Frame // capture frame to 'Frame' image // if first frame, initialise AVI stream if assert 25 "CVID"> "Error: cannot open file stream" endif file.AVI_VFW.AddFrame &Frame // add 'Frame' image to AVI stream // increment azimuth set azim while kmax> // finalise AVI stream file.AVI_VFW.CloseStream // finish by setting Sapphire free if Sapphire.SetPause false endif