An introduction to the class, the requirements of the class and a short quiz to get everyone going. Slides: [[intro.pdf|http://www.cc.gatech.edu/classes/AY2007/cs4480_spring/lectures/01_intro/intro.pdf]]\nSee\n*http://www.sportvision.com\n*http://www.dartfish.com
An Introductory Session on MAYA by Clint Hidinger, held in the DMG Lab.
Tutorials by Graduate Students on how to use OPEN CV\n* Howard Zhou on Windows\n* Jay Summet on Linux\n\nAlso Project Group Discussions.
!!Pyramids, Splicing, and Seaming.\n\n!To read\n* Burt and Adelson, "The Laplacian Pyramid as a Compact Image Code", IEEE Transactions on Commun(31), No. 4, April 1983, pp. 532-540. [[PDF|./readings/pyramid83.pdf]]\n* Burt and Adelson, "A Multiresolution Spline with Application to Image Mosaics", ACM Transactions on Graphics(2), No. 4, pp 217-236, October 1983. [[PDF|./readings/spline83.pdf]]\n \n!Links\n* [[CS 7321 Spring 98 projects|http://www.cc.gatech.edu/classes/cs7321_98_winter/participants/]]\n* [[Cyborg Dreams (DVFX 2002)|http://www.cc.gatech.edu/dvfx/videos/dvfx2002.html#CyborgDream]]\n* [[Image Quilting| http://graphics.cs.cmu.edu/people/efros/research/quilting.html]]\n* [[Graph Cut Textures|http://graphics.cs.cmu.edu/people/efros/research/quilting.html]]\n* Matlab Sources\n** [[Gaussian Pyramids|http://www.google.com/url?sa=t&ct=res&cd=3&url=http%3A%2F%2Fwww.mathworks.com%2Fmatlabcentral%2Ffileexchange%2FloadFile.do%3FobjectId%3D5115%26objectType%3DFILE&ei=49rIRYzgFpGGgATY1_HsDQ&usg=__OboMPXjXvQDuxuZ81OhdD5GoYgA=&sig2=xz2_Xv4rexa7bDcu0iHBQg]]\n** [[Laplacian Pyramid Toolbox|http://www.google.com/url?sa=t&ct=res&cd=4&url=http%3A%2F%2Fwww.mathworks.com%2Fmatlabcentral%2Ffileexchange%2FloadFile.do%3FobjectId%3D9868%26objectType%3Dfile&ei=49rIRYzgFpGGgATY1_HsDQ&usg=__3rvoxoRRz0YbcpPvWeRmBqZfwSs=&sig2=_m_Ur2XmDSw8pHo_mPSZXw]]\n** [[matlabPyrTools|http://www.cns.nyu.edu/pub/eero/matlabPyrTools.tar.gz]]
!To Read\n* Zhengyou Zhang "A flexible new technique for Camera Calibration" IEEE Transactions on Pattern Analysis and Machine Intelligence, 22(11):1330-1334, 2000 ([[WebSite|http://research.microsoft.com/~zhang/Calib/]] [[PDF|http://research.microsoft.com/~zhang/Papers/TR98-71.pdf]] [[Windows Code|javascript:function openEula(url){window.open(url,'eula','width=500,height=450,scrollbars=no,address=no,menu=no');}openEula('http://research.microsoft.com/research/downloads/download.aspx?FUID={7E9DE40F-06DB-452C-A0F2-4FABB4F20F52}' + '&CodeName=' + escape('Microsoft Easy Camera Calibration Tool ') + '&Version=' + escape('1.0'));]])\n* Also see [[Calibration Tools for Matlab|http://www.vision.caltech.edu/bouguetj/calib_doc/]]\n!Links\n\n* http://www.realviz.com\n* http://www.2d3.com\n\n\n!Videos\n* The Mummy\n* AI
! Readings\n* Chen and Williams; View interpolation for image synthesis; SIGGRAPH 1993. [[pdf|./readings/chen-williams-s93.pdf]]\n* Beier and Neely "Feature-based image metamorphosis" SIGGRAPH 1992. [[pdf|./readings/beier-neely-s92.pdf]]\n* Horry, Anjyo, and Arai. "Tour into the picture: Using a spidery mesh interface to make animation from a single image." SIGGRAPH 97 [[pdf|./readings/horry-s96.pdf]] [[movie|http://www.cc.gatech.edu/classes/AY2000/cs4480_spring/cases/tip-siggraph98/fishkill.mov]]\n**[[Course Notes from SIGGRPAH 1998|http://www.cc.gatech.edu/classes/AY2000/cs4480_spring/cases/tip-siggraph98/]]\n\n! Additional Material\n* DL_TipE.html (Hitachi), http://koigakubo.hitachi.co.jp/little/DL_TipE.html\n* glTIP (Hong Kong U), http://www.cs.ust.hk/~cpegnel/glTIP/\n* Black or White (1991) Music Video, http://www.imdb.com/title/tt0255006/, http://www.youtube.com/watch?v=ud-Nk7e261w\n
!Readings\n* Levoy & Hanrahan; Light Field Rendering, SIGGRAPH 1996. [[Website|http://graphics.stanford.edu/papers/light/]]\n* Seitz and Dyer; View morphing, SIGGRAPH 1996 [[pdf|http://www.cc.gatech.edu/dvfx/readings/sietz-dyer-s96.pdf]], [[Website|http://www.cs.washington.edu/homes/seitz/vmorph/vmorph.htm]]\n\n\n!Additional Material\n* Paul Debevec \n** http://www.debevec.org/Campanile/\n** http://www.debevec.org/RNL/\n** http://www.debevec.org/FiatLux/\n* http://research.microsoft.com/MSRSIGGRAPH/96/Lumigraph.htm\n* http://www.cs.washington.edu/education/courses/cse590ss/01wi/projects/project1/results.htm\n
7 November 2006: \nWe are are aware that the UG section (CS4480) is already full and no slots are available. Please, sign up for an overload and more importantly, please come to the first class session as some slots will be added on that. Due to the extensive demand for this course, we request that anyone who is NOT really interested in this material at present, please consider withdrawing right now. Contact <<IE>> if you have questions. \n\nGraduate students who want to register for CS8803dfx, please contact <<IE>>. Do note that grduate students will be required to do some additional work for the graduate section.
! Recording a video on DV camera\n* Use a new DV tape. Overwriting on a old footage may results in choppy or corrupted video.\n* Shoot your video continuously. Do not leave a gap between your shots. (When you download the video, capturing programs will fail on those gaps, because the timecode is not available.)\n* Set your DV camera to "P.SCAN" mode, and you may want to toggle the switch above the main button to the "P" mode (instead of green rectangle which is automatic).\n* Consider using a head cleaning tape. I have bought two cleaning tapes, which you can find on the blue box on my desk (TSRB 230, Jerry's desk). Bring your camera anytime, and use one of them. Or you can also take one of them to your home, as long as you bring it back early in the next morning.\n! Capturing and digitizing a video from DV camera\n* Use firewire interface rather than DV Raptor (DV Raptor in DML lab is old. Any decent machines with working firewire should be able to capture the video without any problems. You can use Movie Maker or Premiere on Windows.)\n* All machines (either Windows or Mac) in DML lab should have at least one working 6-pin firewire port.\n* You will find a 4pin-to-6pin firewire cable in DML lab to be shared among all of you. I left it on a machine named "peckinpah". Please leave the cable in the DML lab after you use, and report to TA (jerry@cc) if you cannot find it.\n* Try to download(capture) your entire video all at once in a single big file, and then use the digitized file to split into smaller segments. (Working on a digitized video file is much easier than going forward/backward with DV camera. DV cameras are prone to frequent "Eject the tape" errors.)\n! Using the green screen (TSRB 325)\n* Visit [[swiki|http://swiki.cc.gatech.edu/dvfx2007/]] for scheduling your shots using the blue screen in TSRB 325.\n* Find anyone of IMTC@Tech (in nearby offices on 3rd floor) or your TA, and ask him/her to open the door.\n* If you want to have an access to the lab for yourself (for after-hour or over-weekend access), you will need a buzz card with proximity sensor. Get the new buzz card first at student center (It will cost $15?), and let TA know your 6(or 7)-digit number on the back (lower left corner) of your new buzzcard. TA will get you registered for the access to the lab.\n* Light switches are located next to doors on both side of the lab.\n* Turn off all the lights, and close the door completely when you leave the lab.
!Important Notes: \n* @@color(red): Things to DO before the term is OVER ... [[FinalThings]] @@\n* See [[Final Projects|http://www.cc.gatech.edu/computing/dvfx/videos/dvfx2007.html]]. All videos will be there SOONEST
[[Assignment 1: Chromakeying|ps/ps1.html]] (due on 02/06/07), before CLASS
[[Assignment 2: Adding CG to Real World|ps/ps2.html]] (due on 02/22/07 and 03/01/07)
For equipment check-out/in, visit Jerry(TA) at TSRB 230 on Tuesday and Thursday afternoon with prior email notice. Plan your project schedule accordingly. Appointments on the other days may be arranged at special occassions.\nRead [[Advices on capturing and digitizing a video footage]] to save your time and efforts.\n*[[Assignment 1: Chromakeying|PS1 Overview]] <<DUE>> on 02/08/07 (before class)\n*[[Critique 1]] Topic <<DUE>> 02/06/07 (before class), Presentation <<DUE>> 02/20/07 (before class for in class presentation)\n*[[Assignment 2: Adding CG to Real World|PS2 Overview]] (<<DUE>>on 02/22/07 and 03/01/07)\n*[[Critique 2]] Topic <<DUE>> 03/15/07 (before class), Presentation <<DUE>> 03/27/07 (before class for in class presentation)\n*Final Project\n**[[FP_Proposal]] <<DUE>> \n**[[FP_Midterm Report]] <<DUE>> \n**[[FP_Update 1]] <<DUE>> \n**[[FP_Update 2]] <<DUE>> \n**[[FP_Update 3]] <<DUE>> \n**[[FP_Update 4]] <<DUE>> \n**[[FP_Preview Showing]] <<DUE>> 04/12/07 6am\n**[[FP_Final Showing]] <<DUE>> 04/26/07 6am\n**[[FP_Report]] <<DUE>> by the END OF FINAL EXAMS period.\n**[[FP_Contributions Report]] <<DUE>> by the END OF FINAL EXAMS period.\n*Equipment Return <<DUE>> by the END OF FINAL EXAMS period.
\n!!CS 4480 - Digital Video Special FX and CS 8803dfx - Digital Video Special FX \nA study of digital multimedia and the analysis and synthesis of digital video. ==Special attention paid to techniques for generating video special effects.==. ''New for 2007, Special attention paid to techniques for analysis and synthesis of sports video.''\n<<<\n3.000 Credit Hours\n3.000 Lecture hours\nLevels: Graduate Semester, Undergraduate Semester\nSchedule Types: Lecture*\n<<<\n!Course Attributes:\nGraphics & Visualization (CS), Tech Elect CS, Engr, &Sciences\n\n!Restrictions:\nMust be enrolled in one of the following Campuses: \n Georgia Tech-Atlanta *\n\n!Prerequisites:\nUndergraduate Semester level CS 3451 Minimum Grade of D
\n!Information\nHere is the form that I want each and every member of the class to fill out, and email it to me (and only me, ie DO NOT "REPLY ALL" to this MESSAGE) by Wednesday May 2, 9am EST (NO EXCEPTIONS). Sooner would be appreciated. Please keep the subject header of the email response the same as above. (At least make sure DVFX is in the subject). A non-response to this may have an adverse effect on your performance evaluation for this class. Section (A), (B), and (C) are required by everyone. Section (D) and (E) are optional.\n\n!(A) Permissions:\n\nI, ___________________, hereby Grant Georgia Tech and Professor Essa permission to show the videos, related documentation, and the images related to the projects and assignments that I have worked on as part of this class (CS 4480/8803dfx, Spring 2007) via web, any other form of media, and/or in form of a live presentation.\n\nI, ___________________, have also acquired permissions from others who helped with this project and related materials and they have agreed with the sharing of these materials.\n\nName:\nPERMENANT Address:\nPERMENANT EMAIL ADDRESS:\n\n!(B) Contributions:\n\nName:\nGroup #:\nGroup NAME: \nGroup Member's NAMES:\n<....>\n<....>\n<....>\n\nWhat my ROLE was in the group?\n<ANSWER HERE>\n\nDid I meet this required GOAL?\n<ANSWER HERE>\n\nIf NOT, what I did instead?\n<ANSWER HERE>\n\nWhat was the role of my GROUPMATEs?\n<NAME - ROLE>\n<NAME - ROLE>\n<NAME - ROLE>\n\nDid they meet their required ROLE? If not what did they do?\n\nDid someone not on the team help? What did they do?\n\nWho was the leader? (a leader is NOT necessary for this, but sometime\nsomeone takes that role)\n\nWas the leader effective?\n\nWere you involved with all aspects of the project and know about everything that went into the production?\n\nWhat was the hardest part of your project? your group's project?\n\nOn a scale of 1-10, how would you rate your performance for the final project?\n\nOn a scale of 1-10, how would you rate your team-mate's performance for the final project?\nLastName1: <SCORE>\nLastName2: <SCORE>\nLastName3: <SCORE>\n\nIf given a chance, will you choose to work with your partners again? \nExplain both YES and NO.\n\n!(C) Mailing List\nThe Mailing list for this class is at https://mailman.cc.gatech.edu/mailman/listinfo/dvfx2007. Please update your email address on that list. I will use that email list to share with you interesting things like job openings in this area and future screenings. \n\n!(D) Comments:\nAny thoughts about the class. Answer to this has NO effect on your grade. I really value input from students.\n\n\n!(E) Research:\nI am always looking for students who are motivated to do research in this area. If so inclined/interested, please come talk to me.
Class Material Reuse Permission: Portions of the <<GT>>'s <<CS4480>>/<<DVFX>>Web may be reprinted or adapted for academic nonprofit purposes, providing the source is accurately quoted and duly credited. The <<DVFX>> Web © 1999-2007, <<CoC>>, Georgia Institute of Technology.
See http://swiki.cc.gatech.edu/dvfx2007/#Critiques. Make sure to see previously done critiques to avoid duplication and examples of how to best do a critique.\n\nUpload your critique topic and then your fill report to your Group Page at http://swiki.cc.gatech.edu/dvfx2007/4
See http://swiki.cc.gatech.edu/dvfx2007/#Critiques. Make sure to see previously done critiques to avoid duplication and examples of how to best do a critique.\n\nUpload your critique topic and then your fill report to your Group Page at http://swiki.cc.gatech.edu/dvfx2007/4\n\nNOTE: This 2nd critique, should be really in line with your final project.
All announcements for this class will be posted at <<BLOG>>
!Day Schedule/Time & Location\n\nClass weekly timing are: \n|!Mondays |!Tuesdays | !Wednesdays |!Thursdays |!Fridays|\n| | 12:05p - 1:25p | | 12:05p - 1:25p | |\nClass Meets in Klaus 1447
!Upcoming Deadlines are:\n@@color(red):\n\n* Final Exams Period: <<DUE>> [[FinalReports]], [[Contributions]] by 9am EST Wednesday 5/2/2007.\n* Final Exams Period: <<DUE>> All EQUIPMENT to Jerry Choi by 5pm EST Tuesday 5/1/2007.\n\n!Past\n@@\n@@color(gray): \n* Tue 02/06/2007 <<DUE>> Groups FORMED, Update Groups page on <<SWIKI>> <<check>>\n* Tue 02/06/2007 <<DUE>> [[Critique 1]] topic chosen. Update Groups page on <<SWIKI>> <<check>>\n* Tue 02/08/2007 <<DUE>> (before class) [[Assignment 1: Chromakeying|PS1 Overview]] <<check>>\n* Tue 02/20/2007 <<DUE>> (before class) [[Critique 1]], In class critique presentation <<check>>\n* Thu 02/22/2007 <<DUE>> (before class) [[Assignment 2: Adding CG to Real World|PS2 Overview]] Part 1. <<check>>\n* Tue 02/27/2007 <<DUE>> (before class) [[FP_Proposal]] In class discussion of proposals. <<check>>\n* Thu 03/01/2007 <<DUE>> (before class) [[Assignment 2: Adding CG to Real World|PS2 Overview]] Part 2. <<check>>\n* Thu 03/15/2007 <<DUE>> (before class) [[FP_MidTerm Report]], In class discussion of [[FP_MidTerm Report]]. <<check>>\n* Tue 03/27/2007 <<DUE>> (before class) [[Critique 2]] title and [[FP_Update 1]]. <<check>>\n* Tue 04/03/2007 <<DUE>> (before class) [[Critique 2]] and [[FP_Update 2]] In class presentations of [[Critique 2]], [[FP_Update 1]], and [[FP_Update 2]] <<check>>\n* Tue 04/10/2007 <<DUE>> (before class) [[FP_Update 3]] <<check>>\n* Thu 04/12/2007 [[FP_Preview Showing]]. All video/demos <<DUE>> by class time 04/12/2007 <<check>>\n* Tue 04/17/2007 <<DUE>> before class [[FP_Update 4]] <<check>> \n* Thu 04/26/2007 [[FP_Final Showing]]. All video/demos <<DUE>> by 6am 04/26/2007 <<check>> @@\n
[[Welcome]]
!Course Description\nTechniques to manipulate digital imagery to generate beautiful effects for movies and television have revolutionized the film industry.&nbsp; Developers and artists using a computer as a digital manipulation tool can now generate special effects to tell stories on projects of various scales, ranging from very high budget films to low-budget independent films to television movies to movie shorts from home video collections.\n\nThe Digital Video Special Effects class (CS4480) and its graduate version (CS 8803dfx) offered this spring quarter is aimed at teaching the techniques that are used to generate video special effects. This course is designed to allow students to explore their creativity while extending their graphics and programming skills. In this class we will undertake a detailed exploration of the world of digital media as it applies to the generation of digital special effects. Topics covered in this class include, digital representations of audio and video, spatial and temporal aspects of video, digital compositing and blending, merging graphics and raw video, and merging &amp; morphing of\ndigital streams. Participants in class will be required to generate special effects, critique and analyze effects from movies, develop skills and abilities to manipulate digital video and audio, and implement their own algorithms to express their technical and artistic skills.\n\nUsing off-the-shelf software for video manipulation, combined with your own algorithms implemented for the class, general ingenuity, and artistic skills, students will generate "video shorts" that will show off their zany ideas in all their 32-bit glory.\n\n<html> \n<h3>Topics</h3>\n<div align="center">\n <center>\n <!--mstheme--></font><table>\n <tr>\n <td NOSAVE><!--mstheme--><font face="century gothic,arial,helvetica">\n\n <!--mstheme--></font><!--msthemelist--><table border="0" cellpadding="0" cellspacing="0" width="100%">\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Introduction to New Paradigms <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Representations of Digital Media&nbsp; <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Computing Methodologies&nbsp; <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Image Effects <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Video Effects <!--mstheme--></font><!--msthemelist--></td></tr>\n\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Audio Effects&nbsp; <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Spatial Techniques <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Temporal Techniques&nbsp;<!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--></table><!--mstheme--><font face="century gothic,arial,helvetica">\n <!--mstheme--></font></td>\n <td><!--mstheme--><font face="century gothic,arial,helvetica">\n <!--mstheme--></font><!--msthemelist--><table border="0" cellpadding="0" cellspacing="0" width="100%">\n\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Into the Picture&nbsp; <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Merging Graphics with Video <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Blending Multiple Streams&nbsp; <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Video and Image Compositing <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Morphing <!--mstheme--></font><!--msthemelist--></td></tr>\n\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Putting it together&nbsp; <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">3D <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Case Studies&nbsp;<!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--></table><!--mstheme--><font face="century gothic,arial,helvetica">\n <!--mstheme--></font></td>\n </table><!--mstheme--><font face="century gothic,arial,helvetica">\n </center>\n\n </div>\n <h3>Prerequisites</h3>\n <h3>Grading</h3>\n <div align="center">\n <center>\n <!--mstheme--></font><table border="1" cellpadding="2" cellspacing="0" width="100%" bordercolordark="#330099" bordercolorlight="#330099">\n <tr>\n <td><!--mstheme--><font face="century gothic,arial,helvetica"><b>Description</b><!--mstheme--></font></td>\n\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica"><b>What</b><!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica"><b>%</b><!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica"><b>Total of the Grade</b><!--mstheme--></font></td>\n </tr>\n <tr>\n <td rowspan="2"><!--mstheme--><font face="century gothic,arial,helvetica">Problem Sets.<!--mstheme--></font></td>\n <td><!--mstheme--><font face="century gothic,arial,helvetica">#1: Compositing<!--mstheme--></font></td>\n\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">14%<!--mstheme--></font></td>\n <td align="center" rowspan="2"><!--mstheme--><font face="century gothic,arial,helvetica">28%<!--mstheme--></font></td>\n </tr>\n <tr>\n <td><!--mstheme--><font face="century gothic,arial,helvetica">#2: Matched Moves<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">14%&nbsp;<!--mstheme--></font></td>\n </tr>\n\n <tr>\n <td rowspan="2"><!--mstheme--><font face="century gothic,arial,helvetica">Critiques<!--mstheme--></font></td>\n <td><!--mstheme--><font face="century gothic,arial,helvetica">#1:<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">8%<!--mstheme--></font></td>\n <td align="center" rowspan="2"><!--mstheme--><font face="century gothic,arial,helvetica">16%<!--mstheme--></font></td>\n </tr>\n <tr>\n\n <td><!--mstheme--><font face="century gothic,arial,helvetica">#2:<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">8%&nbsp;<!--mstheme--></font></td>\n </tr>\n <tr>\n <td rowspan="5"><!--mstheme--><font face="century gothic,arial,helvetica">Final Project<!--mstheme--></font></td>\n <td><!--mstheme--><font face="century gothic,arial,helvetica">0: Proposal<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">7%<!--mstheme--></font></td>\n\n <td align="center" rowspan="5"><!--mstheme--><font face="century gothic,arial,helvetica">46%<!--mstheme--></font></td>\n </tr>\n <tr>\n <td><!--mstheme--><font face="century gothic,arial,helvetica">1: Mid Term Report<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">6%<!--mstheme--></font></td>\n </tr>\n <tr>\n\n <td><!--mstheme--><font face="century gothic,arial,helvetica">2: Weekly Updates (3)<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">9%<!--mstheme--></font></td>\n </tr>\n <tr>\n <td><!--mstheme--><font face="century gothic,arial,helvetica">3: Final Presentation<br>\n Internal Screening (8%)<br>\n Final Screening (8%)<!--mstheme--></font></td>\n\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">16%<!--mstheme--></font></td>\n </tr>\n <tr>\n <td><!--mstheme--><font face="century gothic,arial,helvetica">4: Final Report<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">8%<!--mstheme--></font></td>\n </tr>\n <tr>\n\n <td><!--mstheme--><font face="century gothic,arial,helvetica">Class Survey Submission<!--mstheme--></font></td>\n <td><!--mstheme--><font face="century gothic,arial,helvetica">&nbsp;<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">4%<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">4%<!--mstheme--></font></td>\n </tr>\n <tr>\n <td><!--mstheme--><font face="century gothic,arial,helvetica">Class Participation/Attendance<!--mstheme--></font></td>\n\n <td><!--mstheme--><font face="century gothic,arial,helvetica">&nbsp;<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">6%<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">6%<!--mstheme--></font></td>\n </tr>\n <tr>\n <td><!--mstheme--><font face="century gothic,arial,helvetica">&nbsp;<!--mstheme--></font></td>\n <td><!--mstheme--><font face="century gothic,arial,helvetica">&nbsp;<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">&nbsp;<!--mstheme--></font></td>\n\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">100%<!--mstheme--></font></td>\n </tr>\n </table><!--mstheme--><font face="century gothic,arial,helvetica">\n <p>Letter Grades to % (= &quot;equals&quot;, &gt; &quot;greater then&quot;, &lt; &quot;less then&quot;)</p>\n\n <!--mstheme--></font><table border="1" width="100%" id="table5" cellspacing="0" bordercolordark="#330099" bordercolorlight="#330099">\n <tr>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica"><b>A+</b><!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">=100<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica"><b>A</b><!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">&gt;90<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica"><b>A-</b><!--mstheme--></font></td>\n\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">&gt;80<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica"><b>B</b><!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">&gt;70<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica"><b>C</b><!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">&gt;60<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica"><b>D</b><!--mstheme--></font></td>\n\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">&gt;50<!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica"><b>F</b><!--mstheme--></font></td>\n <td align="center"><!--mstheme--><font face="century gothic,arial,helvetica">&lt;50<!--mstheme--></font></td>\n </tr>\n </table><!--mstheme--><font face="century gothic,arial,helvetica">\n </center>\n </div>\n\n <h3>Projects</h3>\n <!--mstheme--></font><!--msthemelist--><table border="0" cellpadding="0" cellspacing="0" width="100%">\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">In groups of 3 (or 4). <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Each member of the group should bring special expertise and contribution\n to the project. <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Group members need to be approved by Instructor (and TA). <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Students can form (propose) their own groups.&nbsp; Submit an\n application to the instructor, stating each group member's expertise and\n tasks within a project. <!--mstheme--></font><!--msthemelist--></td></tr>\n\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">If groups are not formed by students, then the Instructor/TA will help\n with the assigning of members to groups. <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Groups have to be finalized by <font color="#FF0000">EARLY</font>.\n <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">A project proposal is needed (<font color="#ff0000">7%</font>) <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Mid Term project shows static effects and story-board (<font color="#ff0000">6%</font>) \n <!--mstheme--></font><!--msthemelist--></td></tr>\n\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Final Project shown for internal Jury (<font color="#ff0000">8%</font>) \n <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Final Project shown for external Jury (<font color="#ff0000">8%</font>) \n <!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Final Report (including details of&nbsp; individual contributions) (<font color="#FF0000">8</font><font color="#ff0000">%</font>)&nbsp;\n\n by Final Exam Slot.<!--mstheme--></font><!--msthemelist--></td></tr>\n<!--msthemelist--></table><!--mstheme--><font face="century gothic,arial,helvetica">\n <h3>Policies</h3>\n <dl>\n <dt>Honor Code:\n <dd><a href="http://www.gatech.edu/honor">Academic Honor Code </a>instituted\n by the Students of Georgia Tech applies in this class.\n <dt>Collaboration:\n <dd>The critiques <b>HAVE TO BE DONE in a GROUP. If in COLLABORATION</b> \n with someone, please specify.<dd>Projects are in teams.&nbsp; Each member will <b>need</b> to justify\n their contribution to the final project.\n <dt>Reports:\n <dd>All written material will be submitted electronically in HTML format and\n will be put up on the WWW pages for this course. If for some reason you\n object to this please see the instructor.\n <dt>Late Policy:\n <dd>There is none.&nbsp; Everything is due electronically the date assinged.\n Nothing will be accepted after the deadline and the grade of &quot;F&quot;\n\n will be assinged to that project.</dd>\n </dl>\n <h3>Office Hours</h3>\n <h4>By appointment. Please check Instructor/TA schedules and send e-mail:</h4>\n <!--mstheme--></font><!--msthemelist--><table border="0" cellpadding="0" cellspacing="0" width="100%">\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">&nbsp;<a href="http://www.cc.gatech.edu/~irfan/schedule/">http://www.cc.gatech.edu/~irfan/schedule/</a><!--mstheme--></font><!--msthemelist--></td></tr>\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Please DO NOT Call the instructor on the phone, unless it is a dire \n emergency. Email is the primary communication mode with the instructor. USE \n &quot;<font color="#FF0000"><b>DVFX</b></font>&quot; in the subject line to prevent \n being filed into SPAM folder,<!--mstheme--></font><!--msthemelist--></td></tr>\n\n<!--msthemelist--></table><!--mstheme--><font face="century gothic,arial,helvetica">\n <h3>WWW/Email</h3>\n <!--mstheme--></font><!--msthemelist--><table border="0" cellpadding="0" cellspacing="0" width="100%">\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Most of the class will extensively use the WWW.&nbsp; The schedule and\n the lecture notes will be made available off the CLASS HOME page.&nbsp;\n All reports and student submissions are required in WEB readable format.&nbsp;\n Further information on that will be provided.<!--mstheme--></font><!--msthemelist--></td></tr>\n\n <!--msthemelist--><tr><td valign="baseline" width="42"><img src="_themes/blueprnt/blubul1a.gif" width="15" height="15" hspace="13" alt="bullet"></td><td valign="top" width="100%"><!--mstheme--><font face="century gothic,arial,helvetica">Email will be the primary form of communication after the class period.&nbsp;\n Please make sure to inform the instructor of your permanent email address. \n USE &quot;<font color="#FF0000"><b>DVFX</b></font>&quot; in the subject line to \n prevent being filed into SPAM folder.<!--mstheme--></font><!--msthemelist--></td></tr>\n\n</html>\n
*Disclaimer: The opinions expressed on this site are exclusively those of the students, instructors, and the TA, and and do not necessarily reflect the opinions of Georgia Tech or the College of Computing.\n*See [[Copyright]] Info.\n*[[Georgia Tech Disclaimer|http://www.gatech.edu/legal-privacy]]\n*[[GA State Regents Guide to Understanding Copyright & Educational Fair Use|http://www.usg.edu/legal/copyright/]]
Coming Soon
!Information\nThe FINAL projects will be PREMIERED as part of the GVU Showcase on April 26 at 12n in TSRB 132-34. See [[announcement|http://www.cc.gatech.edu/gvu/events/brownbags/fy07/042607.html]]\n\n!Instructions\n\n@@color(red): PLEASE FOLLOW the following Instructions very carefully, especially the file naming conventions etc.@@ Remember, each group is required to submit a movie and a "making of" to describe the "construction" process. In a few cases, I expect the "making of" to be contained within the movie. Each of the segments should be STAND ALONE, as in they are self-explanatory, as there will be no opportunity to explain what was done during the showing. Also, the deadline IS FIRM. \n\n!!Turnin\n\n@@color(red): Turn ALL of the following in by 6AM on Thursday April 26, 2007 (NO EXTENSIONS!)@@\nAll of this to be submitted in \n/net/dvfx/DVFX/2007/Submit/~FinalScreening/<YOURGROUPNUMBER>\n\n#1 file containing audio + video of your _movie_ **see details below**\n** name it ##_Name_Codec.ext, where ## is your group number [PLEASE DO NOT COMPRESS THE VIDEO too much. DV format preferred, see below to Details.]\n#1 still-image of 720x480 (around 300dpi, so it can also be printed) that best represents your production. [remember that NTSC shaves 50pixels off left AND right.]\n** name it ##_IMAGE.bmp\n#1 still-image of all teammates, your names, and the group-name: 720x480, (around 300dpi, so it can also be printed) [remember that NTSC shaves 50pixels off left AND right.]\n**name it ##_IMAGE.bmp\n#"Making of" \n**name it ##_Name_Codec_MO.ext [PLEASE DO NOT COMPRESS THE VIDEO too much. DV format preferred, see below to Details.]\n#Create ##_README.txt in the same directory and add the info as shown below. \n#e-mail to Jerry Choi <jerry at cc.gatech.edu> stating that you have turned in your video and where to contact you if they have questions and other info that they may NEED. OR just email the above README.txt file.\n#BRING with you some sort of backup to class to show your video in case the one you submitted does not work\n#ALL group members MUST ATTEND (and be awake)!\n\n!!Details\n\n*Movie files should be DV, 44.1 kHz stereo, and audio levels should match /net/dvfx/hollywood_edge/VolumeSample.wav. (/net/dvfx/hollywood_edge/ has sounds effects that you can use in your videos!)\n*Note: If the audio isn't saved as _stereo_, the tape will have silence.\n*Credits should be short, clear, and NON-SCROLLING! Use NTSC-safe colors.\n**Beware of DV->NTSC clipping (see note for pix above!)\n\n!!##_README.txt\n----\nInformation about the PRODUCTION and the TEAM\n\nProduction Title: <.......................>\nNames of Students (Alphabetically)\n<.....>\n<.....>\n<.....>\n\nLength of Production (with titles and everything): <XX> seconds\nLength of Making Of: <XX> seconds\n\nCoweb Page: <http://swiki.cc.gatech.edu:8080/dvfx2006/3/.......>\n\nWho to contact in case of emergency (like video does not work)?\nName Contact #\n<...> <...>\n<...> <...>\n<...> <...>\n<...> <...>\n----
Upload your critique topic and then your fill report to your Group Page at http://swiki.cc.gatech.edu/dvfx2007/4
!Information\n\nAll groups are required to show in class their final projects. This is a pre-screening, leading to the final public premiere scheduled for April 26 at 12n.\n\n\n!Instructions\n!!Turnin\n\nTurn ALL of the following in by 12n on Thursday April 12, 2007 (NO EXTENSIONS!) \n AND bring a version that can be played in class, and bring a copy for me.\n\nAll of this to be submitted in \n/net/dvfx/DVFX/2007/Submit/InternalScreening/<YOURGROUPNUMBER>\n\n#1 file containing audio + video of your _movie_ **see details below**\n** name it ##_IS1_Name_Codec.ext, where ## is your group number\n#1 still-image of 720x480 that best represents your production\n** name it ##_IMAGE.bmp\n#1 still-image of all teammates, your names, and the group-name: 720x480, but remember that NTSC shaves 50pixels off left AND right.\n**name it ##_TEAM.bmp\n#"Making of" is NOT required at present, but I'd love to see it.\n**name it ##_Name_MO_Codec.ext\n#Create ##_README.txt in the same directory and add the info as shown below. \n#e-mail to Jerry Choi <jerry at cc.gatech.edu> stating that you have turned in your video and where to contact you if they have questions and other info that they may NEED. OR just email the above README.txt file.\n#BRING with you some sort of backup to class to show your video in case the one you submitted does not work\n#ALL group members MUST ATTEND (and be awake)!\n\n!!Details\n\n*Movie files should be DV, 44.1 kHz stereo, and audio levels should match /net/dvfx/hollywood_edge/VolumeSample.wav. (/net/dvfx/hollywood_edge/ has sounds effects that you can use in your videos!)\n*Note: If the audio isn't saved as _stereo_, the tape will have silence.\n*Credits should be short, clear, and NON-SCROLLING! Use NTSC-safe colors.\n**Beware of DV->NTSC clipping (see note for pix above!)\n\n!!##_README.txt\n----\nInformation about the PRODUCTION and the TEAM\n\nProduction Title: <.......................>\nNames of Students (Alphabetically)\n<.....>\n<.....>\n<.....>\n\nLength of Production (with titles and everything): <XX> seconds\nLength of Making Of: <XX> seconds\n\nCoweb Page: <http://swiki.cc.gatech.edu:8080/dvfx2006/3/.......>\n\nWho to contact in case of emergency (like video does not work)?\nName Contact #\n<...> <...>\n<...> <...>\n<...> <...>\n<...> <...>\n----
\nInstructions from <<DVFX>> 2006 are here. These will be updated. http://www-static.cc.gatech.edu/classes/AY2006/cs4480_spring/instructions/InternalsScreeningTurnin.txt
Upload your critique topic and then your fill report to your Group Page at http://swiki.cc.gatech.edu/dvfx2007/4
Coming Soon
Upload your critique topic and then your fill report to your Group Page at http://swiki.cc.gatech.edu/dvfx2007/4
Upload your critique topic and then your fill report to your Group Page at http://swiki.cc.gatech.edu/dvfx2007/4
Upload your critique topic and then your fill report to your Group Page at http://swiki.cc.gatech.edu/dvfx2007/4
Upload your critique topic and then your fill report to your Group Page at http://swiki.cc.gatech.edu/dvfx2007/4
The spreadsheet for final grades is [[here|./readings/DVFX07-grades.html]]. I reserve the right to make some changes to this until final entry into the system.
Folks:\n\nI have started to finalizing the plans for the final project\npremiere/showcase. Remember it will be at 12n as a part of the GVU\nBrownbag series on Thursday Apr 26.\n\nAt this premiere/screening, I want to show videos of your work to\neveryone ... In the past, this screening is packed with standing room\nonly.\n\nI need from all of you by Monday April 16, 2007 by 10pm (else I make up\nthings for you). 1, 2, 3, are needed by email to jerry at cc.gatech.edu\nand CANNOT be changed. 4 and 5 below are images and need to be uploaded\nto /net/dvfx/DVFX/2007/Submit/InternalScreening/<YOURGROUPNUMBER> and\nyou will have a chance to update these by Monday next week.\n\n1) Title of your project.\n For productions give it a fancy title (see past videos)\n "A Fading Dream"\n For sports technology, give it a technical title\n "Visualizing Football Playbooks"\n Send this to jerry at cc.gatech.edu\n\n2) Names of the team (Alphabetically)\n First Name, Last Name\n First Name, Last Name\n ...\n Send this to jerry at cc.gatech.edu\n\n3) Your Group # and A name for your group.\n Send this to jerry at cc.gatech.edu\n\n4) a 480x720, 300 dpi image in JPG format, that shows your project the\nbest\n upload to\n/net/dvfx/DVFX/2007/Submit/InternalScreening/<YOURGROUPNUMBER>\n\n5) a 480X720, 300 dpi image in JPG format, that shows the team\n upload to\n/net/dvfx/DVFX/2007/Submit/InternalScreening/<YOURGROUPNUMBER>\n\nJerry will take this information and create a website like\nhttp://www.cc.gatech.edu/dvfx/videos/dvfx2006.html\n\nThanks.\n\nIrfan
Every section of ~FinalProject is under construction
Final Report (<<DUE>> by Wed May 2, 9am EST):\n\n# A final report is DUE from all of you. In this report, I want\n##Some detail of what you did and how. Use the pipeline idea to explain the process.\n##What worked and what did not, Why?\n##Update the [[SWIKI/COWEB of the project|http://swiki.cc.gatech.edu/dvfx2007/4]] with this INFO. Make sure all the content is there and not linked to some other site.\n#CODE.\n**ZIP/TAR up all your COMMENTED CODE with info on how to install/use it\n**If using OPEN CV state of the set up was different. If using other software, state what is needed and how to go about it.\n
Now a few final things. You have to all 3 of the following. Note the deadline for each.\n\n!Equipment Return (<<DUE>> by Tue May 1, 5pm EST):\n **ALL equipment HAS to be returned to the TA Jerry Choi by Tuesday May 1, 5pm. Jerry will send out a note of when he will be available to receive the equipment and check in everything. Grades will NOT be assigned to anyone who do DOES NOT RETURN ALL EQUIPMENT IN WORKING CONDITION.\n\n!Final Report (<<DUE>> by Wed May 2, 9am EST):\n (see [[FinalReports]])\n##A final report is DUE from all of you. In this report, I want\n###Some detail of what you did and how. Use the pipeline idea to explain the process.\n###What worked and what did not, Why?\n###Update the SWIKI/COWEB (http://swiki.cc.gatech.edu/dvfx2007/4­) of the project with this INFO. \n****Make sure all the content is there and not linked to some other site.\n##CODE.\n**ZIP/TAR up all your COMMENTED CODE with info on how to install/use it\n**If using OPEN CV state of the set up was different. If using other software, state what is needed and how to go about it.\n**PUT this in /net/dvfx/DVFX/2007/Submit/FinalReports/## (## = group #)\n\n!Contributions Report and Permissions of USE form (DUE by Wed May 2, 9am EST)\n (see [[Contributions]])\n**Next email have a questionnaire for your and your teammates contributions to the project and giving us the permission to use your materials for educational use. Please fill this out and send to me (and me only) via email. I need this to finalize grades and WILL not give a grade to anyone who does not submit this in time. \n
!Guest Speakers\n* 01/30/2007: [[Frank Dellaert|http://www.cc.gatech.edu/~dellaert/]] "Filtering Methods" <<check>>\n* 02/22/2007: [[Maribeth Gandy|http://www.imtc.gatech.edu/people/gandy.html]] "Audio in Movies" (DVFX 1999 Alum, [[See DVFX 1999 Projects|http://www.cc.gatech.edu/classes/cs4803d_99_spring/projects.html]])\n* 03/27/2007: Kiran Bhat [[Old Webpage|http://www.cs.cmu.edu/~kiranb/]], [[ILM|http://www.ilm.com]]. "[[A guided tour into the ILM Visual Effects pipeline|Kiran Bhat Abstract]]" \n* 04/19/2007: Wayne Wooten, [[PIXAR Animation Studios|http://www.pixar.com]] "TBD" (GATech, CoC Alum, PhD 1998) (see [[1995 Talk Announcement|http://www.cc.gatech.edu/classes/AY2005/cs4480_spring/guests/wooten.htm]])\n* 04/24/2007: [[Sing Bing Kang|http://research.microsoft.com/~sbkang/]], [[Microsoft Research|http://research.microsoft.com/]], Redmond, "TBD" (see [[1995 Talk Announcement|http://www.cc.gatech.edu/classes/AY2005/cs4480_spring/guests/kang.htm]])\n\n!To be Scheduled\n* Marv White, Rick Cavallaro, Sportvision Inc\n* Greg Turk. GA Tech\n* Turner Studios
/***\n|''Name:''|InlineJavascriptPlugin|\n|''Source:''|http://www.TiddlyTools.com/#InlineJavascriptPlugin|\n|''Author:''|Eric Shulman - ELS Design Studios|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.0.10|\n\nInsert Javascript executable code directly into your tiddler content. Lets you ''call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.\n!!!!!Usage\n<<<\nWhen installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.\n\n''Deferred execution from an 'onClick' link''\nBy including a label="..." parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.\n\n''External script source files:''\nYou can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.\n\n''Display script source in tiddler output''\nBy including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.\n\n''Defining javascript functions and libraries:''\nAlthough the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).\n\nTo ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.\n\nSince the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.\n\n''Creating dynamic tiddler content''\nAn important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:\n* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.\n* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.\n* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.\n\nIf your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.\n\n//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//\n\n''Accessing the ~TiddlyWiki DOM''\nThe plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.\n\nAccess to this DOM element allows you to create scripts that can:\n* vary their actions based upon the specific location in which they are embedded\n* access 'tiddler-relative' information (use findContainingTiddler(place))\n* perform direct DOM manipulations (when returning wikified text is not enough)\n<<<\n!!!!!Examples\n<<<\nan "alert" message box:\n><script show>\n alert('InlineJavascriptPlugin: this is a demonstration message');\n</script>\ndynamic output:\n><script show>\n return (new Date()).toString();\n</script>\nwikified dynamic output:\n><script show>\n return "link to current user: [["+config.options.txtUserName+"]]";\n</script>\ndynamic output using 'place' to get size information for current tiddler:\n><script show>\n if (!window.story) window.story=window;\n var title=story.findContainingTiddler(place).id.substr(7);\n return title+" is using "+store.getTiddlerText(title).length+" bytes";\n</script>\ncreating an 'onclick' button/link that runs a script:\n><script label="click here" show>\n if (!window.story) window.story=window;\n alert("Hello World!\snlinktext='"+place.firstChild.data+"'\sntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");\n</script>\nloading a script from a source url:\n>http://www.TiddlyTools.com/demo.js contains:\n>>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}\n>>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}\n><script src="demo.js" show>\n return "loading demo.js..."\n</script>\n><script label="click to execute demo() function" show>\n demo()\n</script>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.10.16 [1.5.2]'' add newline before closing '}' in 'function out_' wrapper. Fixes error caused when last line of script is a comment.\n''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly\n''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output\n''2006.01.05 [1.4.0]'' added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.\n''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski\n''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content. Based on a suggestion by BradleyMeck\n''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax\n''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access \n''2005.11.08 [1.0.0]'' initial release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.inlineJavascript= {major: 1, minor: 5, revision: 2, date: new Date(2006,10,16)};\n\nconfig.formatters.push( {\n name: "inlineJavascript",\n match: "\s\s<script",\n lookahead: "\s\s<script(?: src=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?(?: label=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?( show)?\s\s>((?:.|\s\sn)*?)\s\s</script\s\s>",\n\n handler: function(w) {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n if (lookaheadMatch[1]) { // load a script library\n // make script tag, set src, add to body to execute, then remove for cleanup\n var script = document.createElement("script"); script.src = lookaheadMatch[1];\n document.body.appendChild(script); document.body.removeChild(script);\n }\n if (lookaheadMatch[4]) { // there is script code\n if (lookaheadMatch[3]) // show inline script code in tiddler output\n wikify("{{{\sn"+lookaheadMatch[0]+"\sn}}}\sn",w.output);\n if (lookaheadMatch[2]) { // create a link to an 'onclick' script\n // add a link, define click handler, save code in link (pass 'place'), set link attributes\n var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);\n link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}\n link.code="function _out(place){"+lookaheadMatch[4]+"\sn};_out(this);"\n link.setAttribute("href","javascript:;"); link.setAttribute("title",""); link.style.cursor="pointer";\n }\n else { // run inline script code\n var code="function _out(place){"+lookaheadMatch[4]+"\sn};_out(w.output);"\n code=code.replace(/document.write\s(/gi,'place.innerHTML+=(');\n try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }\n if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);\n }\n }\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n} )\n//}}}\n
<<IE>>, <<CI>>, <<CS>>\nTA: Jaeil (Jerry) Choi.
See <<IE>>
Special DVFX/GVU Talk.\n\nTitle: "A guided tour into the ILM Visual Effects pipeline."\nSpeaker: Kiran Bhat, Industrial Light and Magic (http://www.ilm.com/)\n\nDate: Tuesday 3/27/07\nTime: 12noon - 1pm\nLocation: Klaus 1447\n\n\nAbstract:\n\nIn this talk, I will describe a few key technologies that were used to the create the state-of-the art visual effects in Pirates of the Caribbean and Poseidon. I will touch upon the ILM creature development pipeline, simulation engines, data capture and rendering technologies. Time permitting, I will also discuss a few open research problems in visual effects R&D.\n\nBio: \n\nKiran Bhat graduated with a PhD in robotics from the School of Computer science at Carnegie Mellon University in 2004. His graduate work focussed on techniques for creating realistic animations from video. \nRight after graduate school, he joined the Algorithms group at Epson R&D in Palo Alto, where worked on large field-of-view projection technologies for Epson's display division. Since May 2005, he has been a part of the research & development group at Industrial Light and Magic, where he works on projects in computer animation, simulations and data capture techniques.\n
* List of <<CoC>> [[Instructional Labs|http://www.cc.gatech.edu/tso/labs/]]. We will specifically rely on the [[Digital Media and Gaming Lab|http://www-static.cc.gatech.edu/tso/labs/dml/]], which should have this [[software|http://www.cc.gatech.edu/tso/instructional/2007proposeddmgl.shtml]]
/***\n|''Name:''|LegacyStrikeThroughPlugin|\n|''Description:''|Support for legacy (pre 2.1) strike through formatting|\n|''Version:''|1.0.1|\n|''Date:''|Jul 21, 2006|\n|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|\n|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|\n|''License:''|[[BSD open source license]]|\n|''CoreVersion:''|2.1.0|\n|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|\n\n***/\n\n//{{{\n\n// Ensure that the LegacyStrikeThrough Plugin is only installed once.\nif(!version.extensions.LegacyStrikeThroughPlugin)\n {\n version.extensions.LegacyStrikeThroughPlugin = true;\n\nconfig.formatters.push(\n{\n name: "legacyStrikeByChar",\n match: "==",\n termRegExp: /(==)/mg,\n element: "strike",\n handler: config.formatterHelpers.createElementAndWikify\n});\n\n} // end of "install only once"\n//}}}\n
[img[dvfx|http://www.cc.gatech.edu/dvfx/images/dvfx7.gif]]\n----\n[[Welcome]]\n[[Final Projects|http://www.cc.gatech.edu/computing/dvfx/videos/dvfx2007.html]]\n[[Instructors]]\n[[Schedule]]\n[[Guest Speakers]]\n{{nowrap{+++[Assignments]...{{borderright{\n {{small{<<tiddler [[Menu: Assignments]]>>}}}}}}===}}}\n[[Announcements]]\n[[Description]]\n[[Recent Changes|TabTimeline]]\n----\n[[BLOG|http://gt-dvfx.blogspot.com/]] | [[SWIKI|http://swiki.cc.gatech.edu/dvfx2007/]]\n----\n<<tag Sessions>>\n<<tag Deliverables>>\n----\n[[Related Classes]]\n[[Resources]]\n----\n[[Copyright]]\n[[Disclaimer]]\n^^[[TiddlyWiki|http://www.tiddlywiki.com]] version <<version>>^^\n^^<<tiddler ToggleSidebar>>^^\n----\n<html> <link rel="shortcut icon" href="./images/favicon.ico" /> </html>\n<<alias CS4480 "[[CS 4475|http://www-static.cc.gatech.edu/classes/AY2007/cs4480_spring/]]">>\n<<alias DVFX "[[DVFX|http://www.cc.gatech.edu/dvfx]]">>\n<<alias GT "[[Georgia Tech|http://www.gatech.edu/]]">>\n<<alias CoC "[[College of Computing|http://www.cc.gatech.edu/]]">>\n<<alias IIC "[[IIC|http://www.cc.gatech.edu/iic]]">>\n<<alias GVU "[[GVU Center|http://www.gvu.gatech.edu/]]">>\n<<alias IE "[[Irfan Essa|http://www.cc.gatech.edu/~irfan]]">>\n<<alias CI "[[Charles Isbell|http://www.cc.gatech.edu/~isbell]]">>\n<<alias CS "[[Cedric Stallworth]]">>\n<<alias TiddlyWiki "[[TiddlyWiki|http://www.tiddlywiki.com]]">>\n<<alias check "[img[check|images/check.jpg]]">>\n<<alias BLOG "[[BLOG|http://gt-dvfx.blogspot.com/]]">>\n<<alias SWIKI "[[SWIKI|http://swiki.cc.gatech.edu/dvfx2007/]]">>\n<<alias DUE "@@color(red): DUE@@">>\n<html><script src="http://www.google-analytics.com/urchin.js" type="text/javascript">\n</script>\n<script type="text/javascript">\n_uacct = "UA-521785-13";\nurchinTracker();\n</script></html>\n\n<script>\n document.getElementById('sidebar').style.display='none';\n document.getElementById('displayArea').style.marginRight="1em";\n config.options.chkShowRightSidebar=false;\n saveOptionCookie('chkShowRightSidebar');\n return false;\n</script>\n<script>\n if (config.options.chkShowRightSidebar==undefined) config.options.chkShowRightSidebar=false;\n if (!config.options.txtDisplayAreaRightMargin||!config.options.txtDisplayAreaRightMargin.length)\n config.options.txtDisplayAreaRightMargin="17em";\n var show=config.options.chkShowRightSidebar;\n document.getElementById('sidebar').style.display=show?"block":"none";\n document.getElementById('displayArea').style.marginRight=show?config.options.txtDisplayAreaRightMargin:"1em";\n</script>\n
[[Assignment Overview|Assignment Overview]]\n+++[PS1 Chromakeying]...{{borderright{\n{{small{[[Overview|PS1 Overview]]}}} \n{{small{[[1: DV Capture|PS1 Part 1: DV Capture]]}}} \n{{small{[[2: Premiere|PS1 Part 2: Premiere]]}}} \n{{small{[[3: AfterEffects|PS1 Part 3: AfterEffects]]}}} \n{{small{[[4: Submission|PS1 Part 4: Submission]]}}} \n}}} === \n[[Critique 1|Critique 1]]\n+++[PS2 Adding CG]...{{borderright{\n{{small{[[Overview|PS2 Overview]]}}} \n{{small{[[a: Calibration|PS2a Camera Calibration]]}}} \n{{small{[[b: Compositing|PS2b Compositing CG Elements]]}}} \n{{small{[[c: Match-move|PS2c Match-move]]}}} \n}}} === \n[[Critique 2|Critique 2]]\n+++[Final Project]...{{borderright{\n{{small{[[Overview|FinalProject Overview]]}}} \n{{small{[[Proposal|FP_Proposal]]}}} \n{{small{[[Midterm Report|FP_Midterm Report]]}}} \n{{small{[[Update 1|FP_Update 1]]}}} \n{{small{[[Update 2|FP_Update 2]]}}} \n{{small{[[Update 3|FP_Update 3]]}}} \n{{small{[[Update 4|FP_Update 4]]}}} \n{{small{[[Preview|FP_Preview Showing]]}}} \n{{small{[[Final Show|FP_Final Showing]]}}} \n{{small{[[Report|FP_Report]]}}} \n}}} === \n
/***\n|''Name:''|NestedSlidersPlugin|\n|''Source:''|http://www.TiddlyTools.com/#NestedSlidersPlugin|\n|''Author:''|Eric Shulman - ELS Design Studios|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.0.10|\n\nQuickly make any tiddler content into an expandable 'slider' panel, without needing to create a separate tiddler to contain the slider content. Optional syntax allows ''default to open'', ''custom button label/tooltip'' and ''automatic blockquote formatting.''\n\nYou can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created. This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.\n\nFor more details, please click on a section headline below:\n++++!!!!![Configuration]>\nDebugging messages for 'lazy sliders' deferred rendering:\n<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering\n<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered\n===\n++++!!!!![Usage]>\nWhen installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content. Use {{{+++}}} and {{{===}}} to delimit the slider content. Additional optional syntax elements let you specify\n*default to open\n*cookiename\n*heading level\n*floater (with optional CSS width value)\n*mouse auto rollover\n*custom class/label/tooltip/accesskey\n*automatic blockquote\n*deferred rendering\nThe complete syntax, using all options, is:\n//{{{\n++++(cookiename)!!!!!^width^*{{class{[label=key|tooltip]}}}>...\ncontent goes here\n===\n//}}}\nwhere:\n* {{{+++}}} (or {{{++++}}}) and {{{===}}}^^\nmarks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.^^\n* {{{(cookiename)}}}^^\nsaves the slider opened/closed state, and restores this state whenever the slider is re-rendered.^^\n* {{{!}}} through {{{!!!!!}}}^^\ndisplays the slider label using a formatted headline (Hn) style instead of a button/link style^^\n* {{{^width^}}} (or just {{{^}}})^^\nmakes the slider 'float' on top of other content rather than shifting that content downward. 'width' must be a valid CSS value (e.g., "30em", "180px", "50%", etc.). If omitted, the default width is "auto" (i.e., fit to content)^^\n* {{{*}}}^^\nautomatically opens/closes slider on "rollover" as well as when clicked^^\n* {{{{{class{[label=key|tooltip]}}}}}}^^\nuses custom label/tooltip/accesskey. {{{{{class{...}}}}}}, {{{=key}}} and {{{|tooltip}}} are optional. 'class' is any valid CSS class name, used to style the slider label text. 'key' must be a ''single letter only''. Default labels/tootips are: ">" (more) and "<" (less), with no default access key assignment.^^\n* {{{">"}}} //(without the quotes)//^^\nautomatically adds blockquote formatting to slider content^^\n* {{{"..."}}} //(without the quotes)//^^\ndefers rendering of closed sliders until the first time they are opened. //Note: deferred rendering may produce unexpected results in some cases. Use with care.//^^\n\n//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//\n===\n++++!!!!![Examples]>\nsimple in-line slider: \n{{{\n+++\n content\n===\n}}}\n+++\n content\n===\n----\nuse a custom label and tooltip: \n{{{\n+++[label|tooltip]\n content\n===\n}}}\n+++[label|tooltip]\n content\n===\n----\ncontent automatically blockquoted: \n{{{\n+++>\n content\n===\n}}}\n+++>\n content\n===\n----\nall options combined //(default open, cookie, heading, sized floater, rollover, class, label/tooltip/key, blockquoted, deferred)//\n{{{\n++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...\n content\n===\n}}}\n++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...\n content\n===\n----\ncomplex nesting example:\n{{{\n+++^[get info...=I|click for information or press Alt-I]\n put some general information here, plus a floating slider with more specific info:\n +++^10em^[view details...|click for details]\n put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===\n ===\n===\n}}}\n+++^[get info...=I|click for information or press Alt-I]\n put some general information here, plus a floating slider with more specific info:\n +++^10em^[view details...|click for details]\n put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===\n ===\n===\n===\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.07.28 - 2.0.0'' added custom class syntax around label/tip/key syntax: {{{{{classname{[label=key|tip]}}}}}}\n''2006.07.25 - 1.9.3'' when parsing slider, save default open/closed state in button element, then in onClickNestedSlider(), if slider state matches saved default, instead of saving cookie, delete it. Significantly reduces the 'cookie overhead' when default slider states are used.\n''2006.06.29 - 1.9.2'' in onClickNestedSlider(), when setting focus to first control, skip over type="hidden"\n''2006.06.22 - 1.9.1'' added panel.defaultPanelWidth to save requested panel width, even after resizing has changed the style value\n''2006.05.11 - 1.9.0'' added optional '^width^' syntax for floating sliders and '=key' syntax for setting an access key on a slider label\n''2006.05.09 - 1.8.0'' in onClickNestedSlider(), when showing panel, set focus to first child input/textarea/select element\n''2006.04.24 - 1.7.8'' in adjustSliderPos(), if floating panel is contained inside another floating panel, subtract offset of containing panel to find correct position\n''2006.02.16 - 1.7.7'' corrected deferred rendering to account for use-case where show/hide state is tracked in a cookie\n''2006.02.15 - 1.7.6'' in adjustSliderPos(), ensure that floating panel is positioned completely within the browser window (i.e., does not go beyond the right edge of the browser window)\n''2006.02.04 - 1.7.5'' add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals\n''2006.01.18 - 1.7.4'' only define adjustSliderPos() function if it has not already been provided by another plugin. This lets other plugins 'hijack' the function even when they are loaded first.\n''2006.01.16 - 1.7.3'' added adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels. While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels. Short-term workaround is to only adjust the position for 'top-level' floaters.\n''2006.01.16 - 1.7.2'' added button property to slider panel elements so that slider panel can tell which button it belongs to. Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends\n''2006.01.14 - 1.7.1'' added optional "^" syntax for floating panels. Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.\n''2006.01.14 - 1.7.0'' added optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)\n''2006.01.03 - 1.6.2'' When using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element. (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)\n''2005.12.15 - 1.6.1'' added optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders\nremoved checkbox option for 'global' application of lazy sliders\n''2005.11.25 - 1.6.0'' added optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)\n''2005.11.21 - 1.5.1'' revised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability. Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.\n''2005.11.20 - 1.5.0'' added (cookiename) syntax for optional tracking and restoring of slider open/close state\n''2005.11.11 - 1.4.0'' added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style\n''2005.11.07 - 1.3.0'' removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other\nformatting extensions) and simplified/improved regular expressions to trim multiple excess newlines\n''2005.11.05 - 1.2.1'' changed name to NestedSlidersPlugin\nmore documentation\n''2005.11.04 - 1.2.0'' added alternative character-mode syntax {{{(((}}} and {{{)))}}}\ntweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax\n''2005.11.03 - 1.1.1'' fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used\ncode cleanup, added documentation\n''2005.11.03 - 1.1.0'' changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}\nchanged name to EasySlidersPlugin\n''2005.11.03 - 1.0.0'' initial public release\n<<<\n!!!!!Credits\n<<<\nThis feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] with initial research and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson.\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.nestedSliders = {major: 2, minor: 0, revision: 0, date: new Date(2006,7,28)};\n//}}}\n\n//{{{\n// options for deferred rendering of sliders that are not initially displayed\nif (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;\nif (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;\n\n// default styles for 'floating' class\nsetStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \s\n background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");\n//}}}\n\n//{{{\nconfig.formatters.push( {\n name: "nestedSliders",\n match: "\s\sn?\s\s+{3}",\n terminator: "\s\ss*\s\s={3}\s\sn?",\n lookahead: "\s\sn?\s\s+{3}(\s\s+)?(\s\s([^\s\s)]*\s\s))?(\s\s!*)?(\s\s^(?:[^\s\s^\s\s*\s\s[\s\s>]*\s\s^)?)?(\s\s*)?(?:\s\s{\s\s{([\s\sw]+[\s\ss\s\sw]*)\s\s{)?(\s\s[[^\s\s]]*\s\s])?(?:\s\s}{3})?(\s\s>)?(\s\s.\s\s.\s\s.)?\s\ss*",\n handler: function(w)\n {\n // defopen=lookaheadMatch[1]\n // cookiename=lookaheadMatch[2]\n // header=lookaheadMatch[3]\n // panelwidth=lookaheadMatch[4]\n // rollover=lookaheadMatch[5]\n // class=lookaheadMatch[6]\n // label=lookaheadMatch[7]\n // blockquote=lookaheadMatch[8]\n // deferred=lookaheadMatch[9]\n\n lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart)\n {\n // location for rendering button and panel\n var place=w.output;\n\n // default to closed, no cookie, no accesskey\n var show="none"; var title=">"; var tooltip="show"; var cookie=""; var key="";\n\n // extra "+", default to open\n if (lookaheadMatch[1])\n { show="block"; title="<"; tooltip="hide"; }\n\n // cookie, use saved open/closed state\n if (lookaheadMatch[2]) {\n cookie=lookaheadMatch[2].trim().slice(1,-1);\n cookie="chkSlider"+cookie;\n if (config.options[cookie]==undefined)\n { config.options[cookie] = (show=="block") }\n if (config.options[cookie])\n { show="block"; title="<"; tooltip="hide"; }\n else\n { show="none"; title=">"; tooltip="show"; }\n }\n\n // parse custom label/tooltip/accesskey: [label=X|tooltip]\n if (lookaheadMatch[7]) {\n title = lookaheadMatch[7].trim().slice(1,-1);\n var pos=title.indexOf("|");\n if (pos!=-1) { tooltip = title.substr(pos+1,title.length); title=title.substr(0,pos); }\n if (title.substr(title.length-2,1)=="=") { key=title.substr(title.length-1,1); title=title.slice(0,-2); }\n if (pos==-1) tooltip += " "+title; // default tooltip: "show/hide <title>"\n }\n\n // create the button\n if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link\n var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;\n var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,lookaheadMatch[6],title);\n btn.onclick=onClickNestedSlider;\n btn.setAttribute("href","javascript:;");\n btn.setAttribute("title",tooltip);\n }\n else\n var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,lookaheadMatch[6]);\n\n // set extra button attributes\n btn.sliderCookie = cookie; // save the cookiename (if any) in the button object\n btn.defOpen=lookaheadMatch[1]!=null; // save default open/closed state (boolean)\n btn.keyparam=key; // save the access key letter ("" if none)\n if (key.length) {\n btn.setAttribute("accessKey",key); // init access key\n btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus\n }\n\n // "non-click" MouseOver open/close slider\n if (lookaheadMatch[5]) btn.onmouseover=onClickNestedSlider;\n\n // create slider panel\n var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";\n var panel=createTiddlyElement(place,"div",null,panelClass,null);\n panel.button = btn; // so the slider panel know which button it belongs to\n panel.defaultPanelWidth=(lookaheadMatch[4] && lookaheadMatch[4].length>2)?lookaheadMatch[4].slice(1,-1):""; // save requested panel size\n btn.sliderPanel=panel;\n panel.style.display = show;\n panel.style.width=panel.defaultPanelWidth;\n\n // render slider (or defer until shown) \n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n if ((show=="block")||!lookaheadMatch[9]) {\n // render now if panel is supposed to be shown or NOT deferred rendering\n w.subWikify(lookaheadMatch[8]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);\n // align slider/floater position with button\n adjustSliderPos(place,btn,panel,panelClass);\n }\n else {\n var src = w.source.substr(w.nextMatch);\n var endpos=findMatchingDelimiter(src,"+++","===");\n panel.setAttribute("raw",src.substr(0,endpos));\n panel.setAttribute("blockquote",lookaheadMatch[8]?"true":"false");\n panel.setAttribute("rendered","false");\n w.nextMatch += endpos+3;\n if (w.source.substr(w.nextMatch,1)=="\sn") w.nextMatch++;\n if (config.options.chkDebugLazySliderDefer) alert("deferred '"+title+"':\sn\sn"+panel.getAttribute("raw"));\n }\n }\n }\n }\n)\n\n// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)\nfunction findMatchingDelimiter(src,starttext,endtext) {\n var startpos = 0;\n var endpos = src.indexOf(endtext);\n // check for nested delimiters\n while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {\n // count number of nested 'starts'\n var startcount=0;\n var temp = src.substring(startpos,endpos-1);\n var pos=temp.indexOf(starttext);\n while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }\n // set up to check for additional 'starts' after adjusting endpos\n startpos=endpos+endtext.length;\n // find endpos for corresponding number of matching 'ends'\n while (startcount && endpos!=-1) {\n endpos = src.indexOf(endtext,endpos+endtext.length);\n startcount--;\n }\n }\n return (endpos==-1)?src.length:endpos;\n}\n//}}}\n\n//{{{\nwindow.onClickNestedSlider=function(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theLabel = theTarget.firstChild.data;\n var theSlider = theTarget.sliderPanel\n var isOpen = theSlider.style.display!="none";\n // if using default button labels, toggle labels\n if (theLabel==">") theTarget.firstChild.data = "<";\n else if (theLabel=="<") theTarget.firstChild.data = ">";\n // if using default tooltips, toggle tooltips\n if (theTarget.getAttribute("title")=="show")\n theTarget.setAttribute("title","hide");\n else if (theTarget.getAttribute("title")=="hide")\n theTarget.setAttribute("title","show");\n if (theTarget.getAttribute("title")=="show "+theLabel)\n theTarget.setAttribute("title","hide "+theLabel);\n else if (theTarget.getAttribute("title")=="hide "+theLabel)\n theTarget.setAttribute("title","show "+theLabel);\n // deferred rendering (if needed)\n if (theSlider.getAttribute("rendered")=="false") {\n if (config.options.chkDebugLazySliderRender)\n alert("rendering '"+theLabel+"':\sn\sn"+theSlider.getAttribute("raw"));\n var place=theSlider;\n if (theSlider.getAttribute("blockquote")=="true")\n place=createTiddlyElement(place,"blockquote");\n wikify(theSlider.getAttribute("raw"),place);\n theSlider.setAttribute("rendered","true");\n }\n // show/hide the slider\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n theSlider.style.display = isOpen ? "none" : "block";\n // reset to default width (might have been changed via plugin code)\n theSlider.style.width=theSlider.defaultPanelWidth;\n // align slider/floater position with target button\n if (!isOpen) adjustSliderPos(theSlider.parentNode,theTarget,theSlider,theSlider.className);\n // if showing panel, set focus to first 'focus-able' element in panel\n if (theSlider.style.display!="none") {\n var ctrls=theSlider.getElementsByTagName("*");\n for (var c=0; c<ctrls.length; c++) {\n var t=ctrls[c].tagName.toLowerCase();\n if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")\n { ctrls[c].focus(); break; }\n }\n }\n if (this.sliderCookie && this.sliderCookie.length) {\n config.options[this.sliderCookie]=!isOpen;\n if (config.options[this.sliderCookie]!=this.defOpen)\n saveOptionCookie(this.sliderCookie);\n else { // remove cookie if slider is in default display state\n var ex=new Date(); ex.setTime(ex.getTime()-1000);\n document.cookie = this.sliderCookie+"=novalue; path=/; expires="+ex.toGMTString();\n }\n }\n return false;\n}\n\n// hijack animation handler 'stop' handler so overflow is visible after animation has completed\nSlider.prototype.coreStop = Slider.prototype.stop;\nSlider.prototype.stop = function() { this.coreStop(); this.element.style.overflow = "visible"; }\n\n// adjust panel position based on button position\nif (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel,panelClass) {\n if (panelClass=="floatingPanel") {\n var left=0;\n var top=btn.offsetHeight; \n if (place.style.position!="relative") {\n var left=findPosX(btn);\n var top=findPosY(btn)+btn.offsetHeight;\n var p=place; while (p && p.className!='floatingPanel') p=p.parentNode;\n if (p) { left-=findPosX(p); top-=findPosY(p); }\n }\n if (left+panel.offsetWidth > getWindowWidth()) left=getWindowWidth()-panel.offsetWidth-10;\n panel.style.left=left+"px"; panel.style.top=top+"px";\n }\n}\n\nfunction getWindowWidth() {\n if(document.width!=undefined)\n return document.width; // moz (FF)\n if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )\n return document.documentElement.clientWidth; // IE6\n if(document.body && ( document.body.clientWidth || document.body.clientHeight ) )\n return document.body.clientWidth; // IE4\n if(window.innerWidth!=undefined)\n return window.innerWidth; // IE - general\n return 0; // unknown\n}\n//}}}
!Goals\n# Undertake the entire pipeline from shooting video to digitizing video to maniplulating & processing video to rendering new video to encoding and saving a file for submission.\n# Learn the basics of Adobe Premiere and After Effects so you can use both for simple editing and so you know how to apply the built-in features, should you need them. OR learn the basics of Final Cut Pro / Shake for Mac Users!.\n# Spot the challenging aspects of compositing: segmentation, reflections, shadows, lighting, and real/virtual camera alignment.\n# Determine how to control the environment that best supports chroma-keying.\n\nNOTE: This is a learning exercise, so it only affects your grade if you don't do it. Make the footage look as good as possible, but it won't be pretty for reasons we'll talk about in class.\n\nNOTE For Mac Users: You can do this assignment using Final Cut Pro and Shake.\n\n!Steps\n[[PS1 Part 1: DV Capture]]\n[[PS1 Part 2: Premiere]]\n[[PS1 Part 3: AfterEffects]]\n[[PS1 Part 4: Submission]]\n
Visit CPL lab (TSRB 230; next to Irfan's office) with your ID (Buzz card or driver's license) to checkout a camera and a tripod from the TA. You will sign up a form and take the full responsibility for the equipments. Since we are using 10 cameras for over 30 participants, you better schedule your check-out early. Contact TA by email (jerry@cc) with 'DVFX' in the subject line.\n\nFilm a subject in front of a solid-color background. It doesn't have to be fancy, just something that moves around for about 15sec. One good area to film in the chroma-key area is in the TSRB 325 or in any space that you can convert into a controlled space with fixed color background and controlled lighting. In TSRB 325 we have a green background and floor with plenty of lightings you can control. Please use them carefully. (Information on the access to TSRB 325 will be announced to you by email.)\n\nThe Lab(TSRB 325) Access Info: The Green Screen Lab is in TSRB 325. You need a GT Buzz Card to access the building. If it is duiring regular business hours (10a-6p), you can enter the buidling, go to the third floor looking for IMTC and if you ask nicely, someone can let you in to the lab. Or you can look for Jerry on the second floor (TSRB230), too. For after hours/weekend access, you will need to upgrade your BUZZcard to a PROX BUZZcard (all that means is that it has a PROXIMITY sensor). I believe you can do this at a BUZZcard place for $15 (sorry!). If you have that, send a note to TA (jerry@cc.gatech.edu) with "Access to Green Screen Space for 30 Undergrads for DVFX" in the subject line and give your name, GTID, and the 7-digit number on the back of your PROX Buzz card. NOW for something VERY IMPORTANT: There is a lot of expensive equipment in that space, be careful. Turn-off the lights and also DO NOT walk on the green screen with shoes.\n\nConsider turning _off_ various auto-options of the camera (things like auto-focus and auto-gain will cause your solid color to change its appearance throughout the sequence). The footage is now a DV file sitting on the miniDV tape, and needs to be pulled onto a hard-disk as described in class.
Composite the movie onto an image or movie of your choosing. If you are eager to learn this stage before getting access to a camera, some sample sequences are in\n> /net/dvfx/DVFX/2006/sampleData/*.avi.\n\nRather than ftp, we recommend you set up a symbolic link from your UNIX home, so you can put/get files through samba:\n> unix% ln -s /net/dvfx/DVFX/2006 DVFX (In Unix)\n\n!Guiding Steps\n# Run Premiere\n# Agree to the default project\n# File->Import->file your favorite of the movies on DVFX\n# Drag its icon from the project to the timeline's Video2 layer\n# Import an image or movie you found/generated/stole\n# Drag it to the Video1 layer.\n# In the time-line, play with the time-slider, moving files around in time, etc.\n# Right-click the green-screen footage and pick Video->transparency.\n# Try the different keying types. Especially play with the sliders for Chroma keying and Difference Matting (notice, this asks you for a matte-file, which you can extract from the sample movie by rendering out a frame).\n# Play with the Sample window and its controls (try holding down space-bar and Alt). Notice the 4 handles in the corners of the sample window.\n# When done, adjust the blue Workspace bar at the top of the Timeline window to select the part you want to render.\n# With the Timeline window active (won't work otherwise), File->Export->Movie.\n# Check all your settings! You want to export an .avi, and you want the codec to be none/DVRaptor/other at high quality. To stay under 200MB in final size, try rendering a shorter movie, or using a different output resolution.\n Extra: Add a title screen and a transition effect, and maybe some audio.\n\n
# Same as above, but very slightly different interface, and lots of other features to play with.\n# Run After Effects\n# Effect->Keying->Color Key, and play from there Also try Transfer Mode->Difference and others\n# It's not blue, but it's still just above the time-line.\n# Composition->Add to Render Queue.\n# Window->Render Queue, and adjust the settings to suit.\n Extra: make a split screen using masks and/or Transformation of the layer\n \n\n
!Videos\n By noon on Feb 8, deposit your favorite version of TWO composited movies (which may not exceed 200MB, and should really be much less) in\n>/net/dvfx/DVFX/2007/Submit/~PS1/myLastName_softwareIused_codecIused.EXT.\n(eg. ~Essa_Premiere_DiVx.avi OR ~Essa_FinalCut_Mpeg4.mov)\n\nIMPORTRANT: \n* You are picking only the movies that you're happiest with to turn in, and that "softwareIused" leaves the door open if you want to additionally try out other packages you found or wrote. Feel free to change the permissions on the file if you don't wish fellow-students to see it until class-time. (You submit two videos.)\n* We will look at TIMESTAMPS on the files written to determine when the last version was submitted. Has to be before deadline specified. If want to upload something after the deadline, make sure to name it with a different version #\n* You can use any codec, but please use popular ones, such as wmv, mjpeg, divx, etc.\n* @@If you cannot access the submission directory above, then upload your files on the class swiki, and send me(jerry@cc) the link. You can easily find a direction on how to upload a file there.@@\n\n!Report (Write-up)\nIn addition to the above submitted video, create a webpage on your [[class swiki|http://swiki.cc.gatech.edu:8080/dvfx2007/3]] pages showing at least 1 image from both of your video, marked in some drawing program and a description of was the problem in the marked region and how it could be solved.\n \nThis assignment should not take long, even if you have never used these tools before. You're getting so much time to complete it because you're working individually, so not everyone can check out a camera at the same time... i.e. don't wait until the last minute.\n\n!Grading Breakdown:\n* Video 1 & 2:\n* Did the whole pipeline (and we can view the file) = 30%\n* Quality of Results (ie. did the set up and everything) = 40%\n* Creative = 10%\n* Report = 20%
Do both parts in groups of 3 people, and submit results by noon on each deadline.\n\nDeadlines:\n* [[PS2a Camera Calibration]] due 2/23/06 noon\n* [[PS2b Compositing CG Elements]] due 3/2/06 noon\n\n
# Groups check out camera + tripod.\n# Film dynamic calibration pattern (move and twist the pattern along all 3 axes: static camera, dynamic pattern) & a short action scene with pattern in 2 home locations (static camera, static pattern). For example, a home location could be on the ground where you want to composite a CG dinosaur into your scene or taped to the wall where you want composite in a window looking out into space.\n# Continue filming while moving camera around (slow spin, walk, etc.) w/o pattern. NOTE: This footage is solely used for part c of the assignment (match moving).\n# Digitize the footage\n# Extract 12+ interesting frames from calibration into stills (bmp or tif) with numbered filename suffixes (e.g. frame_21.tif)\n# Pull down a copy of the calibration_tool directory for local use\n# Follow tutorial to calibrate internal camera parameters using stills (copy results into a text file)\n# Follow tutorial to calibrate camera extrinsics for image with pattern in home positions; save translation and rotation matrices to same text file, and submit it to /net/dvfx/DVFX/2007/~PS2/your_group_number/\n* The calibration pattern is in TSRB 230, next to TA(jerry@cc)'s desk. You can grab it anytime and use it anywhere in TSRB. Just leave a note on Jerry's desk telling who you are and where's the pattern.\n* You can also create your own calibration pattern, by printing an image like [[this|images/calib_pattern.png]].\n\n! Camera Calibration Details\n\n(By Gabriel Brostow, TA for DVFX 1999-2002, Minor updates by Jerry Choi 2006).\n\n# Check camera inventory sheet when checking camera out, so you’re not held responsible for things which were already missing. For this project, you should not need to borrow equipment for more than a day, but you have it for few days just in case. You should buy one or more of your own DV tapes. These can be close to $5 if you buy in bulk (feel free to share shopping tips on the SWIKI). When using a blank tape for the first time, record it from start to finish with the lens covered, so it has a consistent time-code. This will prevent problems when dumping to the drive.\n# Remember to switch to manual focus and progressive scan. This is critical for camera calibration.\n# You can print a calibration file of your own (make the squares are all the same and line them up) and mount it on a perfectly planar surface. You can also use the larger calibration pattern located in TSRB (It's at the TA's desk; You can take it outside with an arrangement. Contact TA). Remember to measure the exact width and height of a square. For example, measure width of 4 boxes (B, W, B, W) and divide total by 4 to get a more accurate X-dimension. Record in cm. for later. Origin is in upper left of the pattern pictured here, and I skipped the first and last row of boxes since the printer chopped them short.\n# (for calibration) Fix the camera, and move the pattern around so it takes up most of the field of view, and try to explore the space: show different positions and orientations, keeping the origin-corner as the left-top most corner in the image. Without moving the camera (or changing the zoom/focus!), move around in the scene or do something simple – this is just to show that it’s a sequence and not a single frame. Keep it short (30sec or less), and possibly make it relate to the 3D graphics you’ll be adding later. Don’t worry if you don’t yet know where you’ll be adding stuff to the scene (just glare in random directions for now).\n# (for CG composition) Snap multiple “home” position images (fixed camera and the pattern, with different distance, viewing angle, etc.) Never do anything that can change the intrinsic parameters of the camera (zooming, etc.)[img[images/PS2a_002.jpg]] [img[images/PS2a_004.jpg]] [img[images/PS2a_006.jpg]] [img[images/PS2a_008.jpg]]\n# (for match-move) Move the camera in the fixed scene (or at least with enough fixed 'feature' points in the scene). Keep this under 30 sec. Don’t move the camera too drastically. This will be used only if we can obtain some match-move software licenses, and will only be important for the more ambitious groups.\n# Use firewire cable to download the video and digitize it.\n# Premiere is ok for this, just export a frame instead of a movie. Don’t dare change the image size or use lossy compression (*.jpg)! Premiere default is bitmap, which is fine. Select frames so that the movement of the calibration pattern will cover all the variations in all the axes in the 3D space. If you carefully plan the poses of the calibration pattern, even 12 frames might be good enough to extract all the camera parameters you need (I recommend 16-20 frames). Rename and save the key frame images with serial numbers in their names. Just count from 1, and everything will be fine.\n# Download the camera calibration toolbox for Matlab from here\n# Follow the First Calibration Example on this page. The calib_gui program’s interface is pictured below. [img[images/PS2a_010.png]] [img[images/PS2a_012.jpg]] Basically, follow the onscreen instructions/questions and the hints that appear in the images to perform all the tasks leading to “Exit” (starting in the top left and going across). Reprojection error MUST be less than a pixel, and ought to be around 0.1 pixels if you throw out the really bad images and keep around 8 good ones. Reprojection: the corner-finder puts little crosses when it finds something, and the corresponding point from the 3D model of your calib pattern is rendered using the calculated calibration as a circle. These should line up. \n# What can I say - it’s the box in the lower left. If you add/suppress it into the list of active images, you can visualize (and sanity-check) where it was relative to the other calibration images. If it’s way off (because, say, it appeared too small in the image), you’ll want to use a different image as the “home”.\n# Save (a) calibration result (intrinsic parameters; press the lower-right button), (b) 2 pairs of rotation matrix (Rc_ext) and translation vector (Tc_ext) for two 'home' images a text file (Just copy the Matlab result), and submit it to /net/dvfx/DVFX/2007/PS2/your_group_number/ . Remember that we will use time-stamps of files to determine when something was submitted, so if you choose to update the file, give it a different filename.\n\nSubmit a text file with intrinsic parameters (printed-out by the toolkit) and extrinsic parameters (also printed-out by the Toolkit) of a 'home' image.\n Intrinsic parameters look like this:\n ------------------------------------\n Calibration results (with uncertainties):\n Focal Length: fc = [ 870.96508 887.33411 ] ‚± [ 1.29246 1.30538 ]\n Principal point: cc = [ 337.35541 245.93202 ] ‚± [ 2.56144 1.91218 ]\n Skew: alpha_c = [ 0.00000 ] ‚± [ 0.00000 ] => angle of pixel axes = 90.00000 ‚± 0.00000 degrees\n Distortion: kc = [ -0.21301 0.26780 0.00083 0.00217 0.00000 ] ‚± [ 0.01420 0.14739 0.00048 0.00053 0.00000 ]\n Pixel error: err = [ 0.09065 0.09928 ]\n\n Note that your pixel error should be less than 0.15 .
This part of the assignment walks you through mapping the results of Part 1 into the camera model for Maya. Your task is to follow the directions, and then augment either your “home” images or a sequence shot from those camera positions with CG elements of your choice. 75% of the task is the technical aspect of mapping the real-world calibration to virtual cameras, and 25% is your creativity and attention to detail in adding the CG elements. Since you have only one week for this part, focus on quality instead of quantity – we’re happy to see one image done really well vs. a long sequence where things float and the lighting is off. Of course, a well done sequence is better still.\nTurn in your results in /net/dvfx/DVFX/2007/PS2/your_group_number/\n\n[[PS2b Part 1: Output from PS2a]]\n[[PS2b Part 2: Mapping to MAYA]]\n[[PS2b Part 3: Calibration Pattern]]\n[[PS2b Part 4: Modeling in MAYA]]\n[[PS2b Part 5: Rendering]]\n[[PS2b Part 6: Submission]]\n
If all is well you will have submitted something like the following for PS2: Adding CG to live, VIDEO, part a, following PS2a: Camera Calibration Specifics.\n\nBelow are my [GJB's] intrinsic and extrinsic calibration results produced using the calib_gui tool from the CVL. These are provided to illustrate where your calibration numbers map to in Maya. Note that I’m only showing one set of intrinsic & extrinsic computations. You will be make one set of intrinsics to be used with 2 sets of extrinsic calibrations. In Maya, this means you’ll make a camera, set its intrinsics, duplicate it, and then apply an extrinsic calibration to each of them. \n\n Calibration results after optimization:\n\n Intrinsic parameters:\n\n Focal Length: fc = [ 822.48804 748.83937 ]\n Principal point: cc = [ 356.67264 228.22535 ]\n Skew: alpha_c = [ 0.00000 ] => angle of pixel = 90.00000 degrees\n Distortion: kc = [ -0.23444 0.46020 -0.00117 -0.00099 -0.83313 ]\n Pixel error: err = [ 0.11161 0.12090 ]\n\n Extrinsic parameters:\n\n Translation vector: Tc_ext = [ -106.514107 319.558805 2463.612936 ]\n Rotation vector: omc_ext = [ -1.220792 -0.462710 -0.571164 ]\n Rotation matrix: Rc_ext = [ 0.772569 0.634324 -0.027771\n -0.158799 0.235386 0.958841\n 0.614752 -0.736361 0.282582 ]\n Pixel error: err = [ 0.11180 0.14169 ]\n Projection: proj_mat = [854.693853 259.083852 77.948219 791096.751336\n 21.387051 8.209970 782.510324 801557.135786\n 0.614752 -0.736361 0.282582 2463.612936 ]\n\n\n[img[images/PS2b_002.jpg]]\nFigure 1: Before commenting on the shades, consider that I was dealing with two halogen lights placed directly above the camera.\n
Hand-calculations for mapping the above intrinsics to Maya-compatible form.\n# You will need to perform some calculations before mapping your cameras’ parameters to Maya cameras:\n# First, find your pixel aspect ratio from the focal lengths (fc):\n 748.83937 / 822.48804 = 0.910456242 ( = b/a)\n# Now express your camera aperture in inches (Maya measures this and a few other things in inches, no matter what global units are selected in the preferences):\n 720mm = 28.34646 inches\n 480mm / (b/a) = 480mm / .910456242 =\n 527.20820381mm =\n 20.7562284965 inches\n# Look at the extrinsic parameters from your "home" images.\n# Pick two different home images, preferably ones that appear different from each other, but where both saw the same pose of the calibration object, and both had small reprojection errors.\n# For each of the home images:\n# Make a new matrix of size 4x4 with the Rc_ext as the first 3 rows and cols, the Tc_ext as the first 3 elements of the 4th column, and (0 0 0 1) as the fourth row. Note that when transposing the Translation vector to populate the fourth column, you should also divide each value by 10 because we'll want to operate in cm, and the calibration spit these out in mm.\n# I get a matrix like this:\n 0.772569 0.634324 -0.027771 -10.6514107\n -0.158799 0.235386 0.958841 31.9558805\n 0.614752 -0.736361 0.282582 246.3612936\n 0 0 0 1\n# Now calculate the inverse of that matrix. (inverse is because we want to move the camera in Maya, not the pattern)\n# Then transpose it. (transpose is because Maya is column-major not row-major)\n# Save it for when we apply the extrinsics to the virtual cameras. Hint - matlab is pretty good for these operations.\n# After transposing the whole matrix, mine looks like this:\n 0.772569 0.634323 -0.0277706 0\n -0.158799 0.235386 0.958841 0\n 0.614752 -0.73636 0.282582 0\n -138.148 180.645 -100.554 1
Get out the info about the calib pattern you used for the extrinsic calcs:\n\n I used 5x5 of the squares on the calib pattern, where:\n Each Square width: 84.75mm\n Square height: 84.25mm|\n\n so... the whole pattern (width, height) = ( 42.375cm, 42.125cm )\n
Now we'll start modeling our pattern and our cameras in Maya, with the goal of rendering a replica from two angles which looks like the raw footage.\n\nPerform the following actions:\n\n# Window-> Settings/Preferences -> Preferences -> Settings:\n Linear = centimeter (usually default)\n Up Axis: Z\n Angular: radians\n# Create->Polygon Primitives->Plane (now a plane appears, centered at the origin).\n# Beware: Some Maya sessions may be not be set to create planes in the z=0 plane by default. If your plane isn’t purely in the xy plane, create a new one, and use the “custom” box at the right of the menu entry for ->Plane so you can specify the Z-plane radio button.\n# Hit Ctr-A to view its attributes\n# Go to the PolyPlane tab, and adjust the settings for the overall width/height of the plane, as well as the number of subdivisions (should be same as # of squares in your pattern). While you're here, change the Texture setting to "Preserve Aspect Ratio."\n# Go to the pPlane settings tab and type into the Translate (x and y) fields amounts that will move the plane so it fits wholly in the positive_x and positive_y quadrant. That will be half of the pattern's width and height (in cm).\n# Go to the pPlaneShape tab and the settings for Mesh Component Display: here you'll want the backface culling to be off, since we'll be looking at the underside of the plane.\n# To make the pattern look pretty, you'll want to do:\n Window->Hypershade, pick Rendering->Materials, right-click in the empty space on the right, and Create->Materials->Lambert (left-click to put it down). Double-click the new icon to bring up this material's settings. You want to change the color to a special pattern, so click on the pattern-button to the right of the Color's slider. Pick "checker," and under the Placement tab, give it a RepeatUV equal to half of your #boxes_in_width and height.\n (Note, if the number of squares doesn't match up, use the bigger # for both U and V).\n# Now select the plane in the scene and right-click on the checker material's icon to "Assign Texture's Material to Selection."\n# You now have a calibration pattern which should be the same size and look as the one you used to calibrate the extrinsics of your scene. Create->Lights->Point Light will be needed at some point so your nice checker model isn't pitch black. Move it around after you perform the steps below to add the camera. So far, this was the easy part. \n\n
Save your file now, and as frequently as you can remember.\n# Create->Camera\n# Window->Render Globals...\n# Change Image format to tif\n# Change Camera to camera1\n# Resolution: choose Custom, and set to 720 x 480\n# set Pixel Aspect Ratio to: (b/a) (hit Tab to see how this auto-changes the Device aspect ratio to 1.366).\n# Insure 'Channels' is set to "RGB Channel"\n# You'll probably want to set the Anti-aliasing Quality set to High, but it's not critical.\n# Select camera, and hit ctr-A (get attributes window)\n# In the cameraShape, set the Focal Length to a (the 1st or bigger focal length). (Angle of View just changed automatically!)\n# Leave Camera Scale and other fields not mentioned here at default.\n# Change your Near Clip Plane to 0.01 and your Far Clip Plane to 50000. Bigger doesn't hurt, and should be used if things are too far apart.\n# Camera Aperture for (x,y) were calculated above, so these should be 28.346inches and something near 20 (depending on your a and b).\n# Change the Film Fit to "Horizontal"\n# Change the Film Offset to:\n {720/2 - cc(1), (cc(2) - 480/2) } =\n (3.32736mm, -11.77465mm) =\n (0.1309984 inches, -0.463569 inches)\n# What did we just do? We moved the location of the film to match the non-centeredness of the real film/ccd w.r.t the actual lens.\n# Change Display Options to have ON: Display Film Gate and Resolution\n# Add Environment-> Image Plane: Create: Image Name = path to your home image. Image Plane should be "Attached to Camera" What just happened? This camera has a billboard showing your home-image mounted in front of it. If the camera moves, so does the image plane, though objects, like the calib-pattern object, can be placed between the two.\n# Optionally make "Display" set to "in all views."\n# Size = same as Camera Aperture\n# Offset = same as Film Offset\n# Fit: "To Size" and click on "Fit to Film Gate"\n# Note: this should allow you to render through Maya the same image as you had as input. If it’s somehow squished, try a Horizontal fit to match the camera settings.\n The depth of the Image Plane does not affect the size of the background image attached to your camera. However, placing it too close to the camera could mean that it occludes the plane sitting behind it, so type in a depth which accommodates your distance from the origin: less than 50000, but more than the largest translation component of your extrinsics.\n# In main Maya app, pick a window, and Panel->Perspective->Camera1\n# Note: If you only have one panel on the screen and want to have more, use Window->View Arrangement->Four\n# In the same window, pick Shading->"Smooth Shade All"\n# Also under Shading, switch on Hardware Texturing if possible.\n# Fine time to save your work.\n# You should still not be seeing much in the camera's panel. I like to peek at the state of the world by using a different panel and switching it to a perspective view, which I can move around:\n# Panels->Perspective->persp. Alt-Shift middle-mouse-button and Alt-shift left button allow you to translate and rotate the scene, which should currently contain a camera and a pattern both sitting at the origin.\n# If you've saved your work, you might want to play with translating and rotating the camera to make the CG "model" line-up with the image of the model. Alt-r and Alt-t reveal rotation and translation handles you can mouse around with to manipulate the camera or the model. Leave the model alone, but do your best by moving the camera. This is hard, and once you're done wasting your time, you'll proceed to the following instructions, because you'll realize that a little math is easier than ALOT of clicking and dragging.\n# It's important that you realize that what follows IS part of the assignment, but, strictly speaking, isn't necessary for rendering CG to go with your footage. Why? Your virtual camera now projects 3D objects in almost the same way as your real camera did (more later on why not 100%). That means the two cameras' intrinsics match. Since the camera didn't move, you could (theoretically) start inserting CG flying elephants and they would enter and leave the field of view in the right fashion, assuming you modeled them to scale (using cm units as we specified earlier). This means that you could theoretically get by without extrinsic calibration at all. So who needs the external parameters of the camera (rotation and translation)? Doing a match-move certainly requires it, and actually needs the R and t for each frame of footage. But even when the camera is static, it's nice to do the following steps, because then you can line-up the ground-planes (or wall planes if that's where you put the calibration pattern) with the cardinal directions within Maya. You can texture and place new CG objects in the scene, and they should line-up in each camera for which you calculate the extrinsic parameters. That's more than just a little useful if you intend to replace walls or match up foot-falls. It's especially handy if you've calibrated multiple cameras and want them all in the same CG scene.\n# To remove ambiguity about rotation order pre/post multiplication, we're just going to enter our transformation matrices directly. Note that Maya matrices are transposed versions of the Foley et al. notation, so, for example, translation in the x directions would go in the bottom left of a 4x4 matrix.\n# Window->General Editor->Script Editor\n# Note: type the following commands in the bottom panel, and use Edit->Execute or Ctrl-Enter to execute them. The help contains more on MEL-scripting, but all you'll need is given below.\n# Click-select the camera.\n# type:\n bullet \n\n xform -m\n 1 0 0 0\n 0 1 0 0\n 0 0 1 0\n 0 0 0 1;\n bullet \n\n setAttr "camera1.rotateX" 3.1415926;\n# <execute the above calls> (-m stands for matrix)\n# What just happened? The camera was sent back to the origin, and back to pointing in the default direction: -Z. Our calibration was done with the model origin in the upper left and assumed the camera was looking toward +Z, so the second call just rotated the camera about the x axis to make that true for the virtual camera too: we're still sitting at (0,0,0), but facing +Z. Notice that the panel showing the view through the camera has color-axes in the lower left, and x and y are pointing to the right and down respectively. Now dust off the inverted version of the camera's extrinsic transformation matrix. Transpose it, and perform the following relative (hence the "-r") xform:\n# type (substituting your own matrix in place of my 4x4):\n bullet \n\n xform -r -m\n 0.772569 0.634323 -0.0277706 0\n -0.158799 0.235386 0.958841 0\n 0.614752 -0.73636 0.282582 0\n -138.148 180.645 -100.554 1;\n# Save your work. You should be seeing a CG model (possibly with a checker-texture) sitting almost precisely on top of the part of the image where the real calibration model projected onto. If it's not perfect, don't get upset: the calibration optimized the camera extrinsics after modeling lens-distortion (kc in the intrinsic results). That's the one part of the calibration we can't get Maya to reproduce. The absence of lens-distortion means that your CG object may be SLIGHTLY off, but with the DV cameras we're using, won't explain gross mismatches, so at this point, you really should be seeing a rather good match.\n# Render this out (using Render->Render to New Window, and File-Save Image).[img[images/PS2b_004.jpg]] Figure 2: Alignment is off because the extrinsics were estimated to include lens distortion, which is absent in this rendering.\n# Now select your camera, and make a 2nd camera by doing Edit->Duplicate. This camera has all the same parameters (intrinsic and extrinsic) as the first, but you’ll reposition it to the other “home” camera position:\n bullet \n\n First clobber the extrinsics of camera2 (make sure #2 is the only one selected):\n xform -m\n 1 0 0 0 \n 0 1 0 0\n 0 0 1 0\n 0 0 0 1;\n bullet \n\n setAttr "camera2.rotateX" 3.1415926;\n# Then apply the other set of extrinsics:\n bullet \n\n xform -r -m\n bullet \n\n (the 4x4 matrix which comes from doing an extrinsic calibration of your camera when it was placed at a second pose, looking at the same calib pattern)\n bullet \n\n Render this out also.\n# To get it perfect, render out a second pair of images after translating (ONLY!) very slightly in the x and y directions (that's the dimension affected by distortion). The hand-adjusted offset should be less than a cm for either axis. Render these images out also: both are part of your submission for this part of the assignment. [img[images/PS2b_006.jpg]] Figure 3: Minor (< 1cm) hand adjustment of the camera position (not rotation!) has compensated for the lack of lens distortion. Lighting has also been adjusted slightly, and now the scene is ready for new CG elements/action.\n \n# Now model and render whatever you like, and render out a movie. Insert a simple CG object (like torus or cone) into the scene so it “belongs”: on floor or wall etc. Light and render to output a still/movie seen from both cameras, and submit it to the PS2 directory. For Maya help in general, hit F1 or look through the help-menu at the top right. The section on rendering (especially Ch.10) will help you through rendering out a sequence of images. Doing a search in the help on "background" will reveal a nice section which lays out how to composite and texture 3D objects on top of live-action images (like the home image) and image sequences (including movie files). \n\n
# 2 x image of calibration pattern as seen through camera placed purely mathematically.\n# 2 x image of calibration pattern after tweaking for lens-distortion.\n# 2 x image/movie of new CG element added to the scene to look as real as possible.\n# Submit to /net/dvfx/DVFX/2006/PS2/your_group_number/as mentioned earlier, we w will use time-stamps of files to determine when something was submitted, so if you choose to update the file, give it a different filename.\n\n
This part is NOT necessary to complete this assignment, and is purely for experimentation purposes. Do this if you’re eager, if you have time, or if you are thinking of having a moving camera in your final project. MayaLive is a newly available plugin for Maya (Window->Plugins->Mayalive), and has its own documentation (available from the help-menu). Its purpose is to allow the “automatic” tracking of features in an image sequence where the camera was moving. This then produces the equivalent of an extrinsic calibration of the real camera, but does so for each frame of the sequence, and without an explicit calibration pattern. The task: insert CG elements into your video (just like Part II), while using footage shot with a moving camera. Give us feedback on what you thought of MayaLive as a tool, and use this to help you decide to use/not use moving cameras in your final project effect.
----\nQUICKLINKS: <<tag Information>> <<tag Announcements>> <<tag Sessions>> <<tag Deliverables>> <<BLOG>> <<SWIKI>>\n----
!At <<GT>>\n<html> <ul>\n <li><a href="http://www.cc.gatech.edu/classes/AY2006/cs4475_summer/">Computational Photography</a> \n <font size="2">\n [<a href="http://gt-compphoto.blogspot.com/">BLOG</a>] </font>\n Summer 2006. (CS 4475) Special Offering for\n <a href="http://www.cc.gatech.edu/barcelona/">Ga Tech Barcelona Study Abroad \n Program</a> <img src="images/check.gif" border="0" height="18" width="18"></li>\n <li><a href="http://www.cc.gatech.edu/classes/AY2006/cs4480_spring/">DVFX \n Spring 2006.</a> <font size="2">\n\n [<a href="http://gt-dvfx.blogspot.com/">BLOG</a>]</font>(CS 4480 / CS 8803 DFX)</li>\n <li><a href="http://www.cc.gatech.edu/classes/AY2005/cs4803cp_summer/">Computational Photography</a>. (CS 4803 CP) Special Offering for\n <a href="http://www.cc.gatech.edu/barcelona/">Ga Tech Barcelona Study Abroad \n Program</a></li>\n <li><a href="http://www.cc.gatech.edu/classes/AY2005/cs4480_spring/">DVFX \n Spring 2005.</a> (CS 4480 / CS 8803 DFX)</li>\n <li><a href="http://www.cc.gatech.edu/classes/AY2005/cs4496_fall/">Computer \n Animation, Fall 2004</a> (CS 4496 / CS 7496)</li>\n\n <li><a href="http://www.cc.gatech.edu/classes/AY2004/cs4480_spring/">DVFX \n Spring 2004.</a> (CS 4480 / CS 8803 DFX)</li>\n <li><a href="http://www.cc.gatech.edu/classes/AY2003/cs4480_spring/">DVFX \n Spring 2003</a>. (CS 4480)</li>\n <li><a href="http://www.cc.gatech.edu/classes/AY2003/cs7496_spring/">Computer \n Animation Spring 2003</a>. (CS 7496)</li>\n <li>DVFX <a href="http://www.cc.gatech.edu/classes/AY2002/cs4480_spring/">Spring 2002</a>. (CS 4480)</li>\n\n <li><a href="http://www.cc.gatech.edu/classes/AY2002/cs4496_spring/">Computer Animation\n Spring 2002</a>. \n (CS 4496 / CS 7496)&nbsp;\n <img src="images/check.gif" border="0" height="18" width="18"></li>\n <li>DVFX <a href="http://www.cc.gatech.edu/classes/AY2001/cs4480_spring/">Spring\n 2001</a>. (CS 4480)</li>\n <li>DVFX <a href="http://www.cc.gatech.edu/classes/AY2000/cs4480_spring/">Spring\n 2000</a>. (CS 4480)</li>\n <li>DVFX <a href="http://www.cc.gatech.edu/classes/cs4803d_99_spring/">Spring 1999</a>. \n (CS 4803D / CS 8113I)</li>\n\n</ul></html>
!Industry/Corporate\n*[[Dartfish|http://www.dartfish.com]]\n*[[Sportvision|http://www.sportvision.com]]\n*[[TaylorMade's MATT|http://www.taylormadegolf.com/matt.asp]]\n
<<tiddler DayTimeLocation>>\n\n!Weekly Schedule (<<check>> = done!)\n\n#Week of Jan 8\n**Tue 01/09/2007 [[01_Introduction]]<<check>>\n**Thu 01/11/2007 [[02_Digital Representations]]<<check>>\n#Week of Jan 15\n**Tue 01/16/2007 [[03_Projects Discussion]]<<check>>\n**Thu 01/18/2007 [[04_Pipeline]] OUT [[Assignment 1: Chromakeying|PS1 Overview]] <<check>>\n#Week of Jan 22\n**Tue 01/23/2007 [[05_MayaSession]]<<check>>\n**Thu 01/25/2007 [[06_OpenCV Session]] <<check>>\n#Week of Jan 29\n**Tue 01/27/2007 [[07_Filtering]] [[Guest Speakers]] Frank Dellaert <<check>>\n**Thu 02/01/2007 [[08_Compositing]] <<check>>\n#Week of Feb 5\n**Tue 02/06/2007 [[09_Pyramids]] <<DUE>> Groups FORMED, [[Critique 1]] topic chosen. Update Groups page on <<SWIKI>> <<check>>\n**Thu 02/08/2007 [[10_Camera Calibration]], <<DUE>> (before class) [[Assignment 1: Chromakeying|PS1 Overview]] OUT [[Assignment 2: Adding CG to Real World|PS2 Overview]] <<check>>\n#Week of Feb 12\n**Tue 02/13/2007 [[11_Image Based Rendering 1]] <<check>>\n**Thu 02/15/2007 [[12_Image Based Rendering 2]] <<check>>\n#Week of Feb 19\n**Tue 02/20/2007 13 <<DUE>> (before class) [[Critique 1]], In class critique presentation <<check>>\n**Thu 02/22/2007 14 <<DUE>> (before class) [[Assignment 2: Adding CG to Real World|PS2 Overview]] Part 1. @@color(grey): Irfan and Charles away @@ <<check>>\n#Week of Feb 26\n**Tue 02/27/2007 15 <<DUE>> before class [[FP_Proposal]] In class discussion of proposals. <<check>>\n**Thu 03/01/2007 16 <<DUE>> before class [[Assignment 2: Adding CG to Real World|PS2 Overview]] Part 2. <<check>>\n#Week of Mar 5\n**Tue 03/06/2007 17 Story boards and Animatronics I <<check>>\n**Thu 03/08/2007 18 Story boards and Animatronics II <<check>>\n#Week of Mar 12\n**Tue 03/13/2007 19 In class Project Discussions <<check>>\n**Thu 03/15/2007 20 <<DUE>> (before class) [[FP_MidTerm Report]], In class discussion of [[FP_MidTerm Report]]. <<check>>\n#Week of Mar 19 \n**Tue 03/20/2007 @@color(grey): SPRING BREAK @@<<check>> \n**Thu 03/22/2007 @@color(grey): SPRING BREAK @@<<check>>\n#Week of Mar 26\n**Tue 03/27/2007 21 <<DUE>> [[FP_Update 1]] and [[Critique 2]] topic. [[Guest Speakers]] [[Kiran Bhat Abstract]] <<check>>\n**Thu 03/29/2007 22 In class Project Discussions (Consider attending http://gameworlds.gatech.edu/). <<check>>\n#Week of Apr 2\n**Tue 04/03/2007 23 <<DUE>> (before class) [[Critique 2]] and Class [[FP_Update 2]]. In class presentations of [[Critique 2]], [[FP_Update 1]] and [[FP_Update 2]] <<check>>\n**Thu 04/05/2007 24 <<check>>\n#Week of Apr 9\n**Tue 04/10/2007 25 <<DUE>> before class [[FP_Update 3]] <<check>>\n**Thu 04/12/2007 [[FP_Preview Showing]]. All video/demos <<DUE>> by class time 04/12/2007 <<check>>\n#Week of Apr 16\n**Tue 04/17/2007 26 <<DUE>> before class [[FP_Update 4]]\n**Thu 04/19/2007 [[Guest Speakers]]: Wayne Wooten, PIXAR Animation\n#Week of Apr 23\n**Tue 04/24/2007 28 [[In Class Working Session]]\n**Thu 04/26/2007 [[FP_Final Showing]]. All video/demos <<DUE>> by 8am 04/26/2007\n#Week of Apr 30 (Final Exams Week)\n**Final Exams Period: DUE: [[FP_Report]], [[FP_Contributions Report]] by the end time of the FINAL EXAM Period\n<<tiddler Sessions>>\n
!Sessions\n# [[01_Introduction]]\n# [[02_DigitalRepresentations]]\n# [[05_MayaSession]]
Spring 2007,\n[[Georgia Tech|http://www.gatech.edu/]] ([[CoC|http://www.cc.gatech.edu/]] -> [[IIC|http://www.cc.gatech.edu/]]), ([[GVU|http://www.gvu.gatech.edu/]] -> [[DVFX|http://www.cc.gatech.edu/dvfx]]), ([[RIM@GT|http://www.crim.gatech.edu/]] -> [[CPL|http://www.cc.gatech.edu/cpl]] )
CS 4480/8803dfx: Digital Video Special Effects (Sports Edition),
/*{{{*/\n.floatingPanel\n { padding:1em; margin:0em; border:1px solid; -moz-border-radius:1em; font-size:8pt; text-align:left; }\n.floatingPanel hr\n { margin:2px 0 1px 0; padding:0; }\n#sidebarOptions .sliderPanel\n { margin:0; padding:0; font-size:1em; background:transparent; }\n#sidebarOptions .sliderPanel a\n { font-weight:normal; }\n#sidebarOptions .sliderPanel blockquote\n { margin:0;padding:0;margin-left:1em; border-left:1px dotted; padding-left:1em }\n\n/* text alignments */\n.left\n { display:block;text-align:left; }\n.floatleft\n { float:left; }\n.right \n { display:block;text-align:right; }\n.floatright\n { float:right; }\n.center\n { display:block;text-align:center; }\n.wrap\n { white-space:normal }\n.nowrap\n { white-space:nowrap }\n\n/* font sizes */\n.big\n { font-size:14pt;line-height:120% }\n.medium\n { font-size:12pt;line-height:120% }\n.normal\n { font-size:9pt;line-height:120% }\n.small\n { font-size:8pt;line-height:120% }\n.fine\n { font-size:7pt;line-height:120% }\n.tiny\n { font-size:6pt;line-height:120% }\n\n/* borderless tables */\n.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody\n { border:0 !important; margin:0 !important; padding:0 !important; }\n\n/* grouped content */\n.outline\n { display:block; padding:1em; -moz-border-radius:1em; border:1px solid; }\n\n.menubox\n { display:block; padding:1em; -moz-border-radius:1em; border:0px solid; background: transparent; color:#000; }\n.menubox\n { background-color: transparent; }\n.menubox a, .menubox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting\n { color:#009 !important; }\n.menubox .button:hover {\n color: #fff;\n background: #04b;\n}\n.menubox {color: #01b; border: 1px solid #999; }\n\n.groupbox\n { display:block; padding:1em; -moz-border-radius:1em; border:1px solid; background:#ffe; color:#000; }\n.groupbox a, .groupbox .button, .groupbox .tiddlyLinkExisting, .groupbox .tiddlyLinkNonExisting\n { color:#009 !important; }\n.borderleft\n { margin:0;padding:0;border:0;margin-left:1em; border-left:1px dotted; padding-left:.5em; }\n.borderright\n { margin:0;padding:0;border:0;margin-right:1em; border-right:1px dotted; padding-right:.5em; }\n.borderbottom\n { margin:0;padding:0;border:0;border-bottom:1px dotted; padding-bottom:1px; }\n.bordertop\n { margin:0;padding:0;border:0;border-top:1px dotted; padding-top:1px; }\n\n/* compact form */\n.smallform\n { white-space:nowrap; }\n.smallform input, .smallform textarea, .smallform button, .smallform checkbox, .smallform radio, .smallform select\n { font-size:8pt; }\n\n/*}}}*/\n
/*{{{*/\n* html .tiddler {\n height: 1%;\n}\n\nbody {\n font-size: .75em;\n font-family: arial,helvetica;\n margin: 0;\n padding: 0;\n}\n\nh1,h2,h3,h4,h5 {\n font-weight: bold;\n text-decoration: none;\n padding-left: 0.4em;\n}\n\nh1 {font-size: 1.35em;}\nh2 {font-size: 1.25em;}\nh3 {font-size: 1.1em;}\nh4 {font-size: 1em;}\nh5 {font-size: .9em;}\n\nhr {\n height: 1px;\n}\n\na{\n text-decoration: none;\n}\n\ndt {font-weight: bold;}\n\nol { list-style-type: decimal }\nol ol { list-style-type: lower-alpha }\nol ol ol { list-style-type: lower-roman }\nol ol ol ol { list-style-type: decimal }\nol ol ol ol ol { list-style-type: lower-alpha }\nol ol ol ol ol ol { list-style-type: lower-roman }\nol ol ol ol ol ol ol { list-style-type: decimal }\n\n.txtOptionInput {\n width: 11em;\n}\n\n#contentWrapper .chkOptionInput {\n border: 0;\n}\n\n.externalLink {\n text-decoration: underline;\n}\n\n.indent {margin-left:3em;}\n.outdent {margin-left:3em; text-indent:-3em;}\ncode.escaped {white-space:nowrap;}\n\n.tiddlyLinkExisting {\n font-weight: bold;\n}\n\n.tiddlyLinkNonExisting {\n font-style: italic;\n}\n\n/* the 'a' is required for IE, otherwise it renders the whole tiddler a bold */\na.tiddlyLinkNonExisting.shadow {\n font-weight: bold;\n}\n\n#mainMenu .tiddlyLinkExisting, \n#mainMenu .tiddlyLinkNonExisting,\n#sidebarTabs .tiddlyLinkNonExisting{\n font-weight: normal;\n font-style: normal;\n}\n\n#sidebarTabs .tiddlyLinkExisting {\n font-weight: bold;\n font-style: normal;\n}\n\n.header {\n position: relative;\n}\n\n.header a:hover {\n background: transparent;\n}\n\n.headerShadow {\n position: relative;\n padding: 2.5em 0em 1em 1em;\n left: -1px;\n top: -1px;\n}\n\n.headerForeground {\n position: absolute;\n padding: 2.5em 0em 1em 1em;\n left: 0px;\n top: 0px;\n}\n\n.siteTitle {\n font-size: 2em;\n}\n\n.siteSubtitle {\n font-size: 1.2em;\n}\n\n#mainMenu {\n position: absolute;\n left: 0;\n width: 10em;\n text-align: right;\n line-height: 1.6em;\n padding: 1.5em 0.5em 0.5em 0.5em;\n font-size: 1.1em;\n}\n\n#sidebar {\n position: absolute;\n right: 3px;\n width: 16em;\n font-size: .9em;\n}\n\n#sidebarOptions {\n padding-top: 0.3em;\n}\n\n#sidebarOptions a {\n margin: 0em 0.2em;\n padding: 0.2em 0.3em;\n display: block;\n}\n\n#sidebarOptions input {\n margin: 0.4em 0.5em;\n}\n\n#sidebarOptions .sliderPanel {\n margin-left: 1em;\n padding: 0.5em;\n font-size: .85em;\n}\n\n#sidebarOptions .sliderPanel a {\n font-weight: bold;\n display: inline;\n padding: 0;\n}\n\n#sidebarOptions .sliderPanel input {\n margin: 0 0 .3em 0;\n}\n\n#sidebarTabs .tabContents {\n width: 15em;\n overflow: hidden;\n}\n\n.wizard {\n padding: 0.1em 0em 0em 2em;\n}\n\n.wizard h1 {\n font-size: 2em;\n font-weight: bold;\n background: none;\n padding: 0em 0em 0em 0em;\n margin: 0.4em 0em 0.2em 0em;\n}\n\n.wizard h2 {\n font-size: 1.2em;\n font-weight: bold;\n background: none;\n padding: 0em 0em 0em 0em;\n margin: 0.2em 0em 0.2em 0em;\n}\n\n.wizardStep {\n padding: 1em 1em 1em 1em;\n}\n\n.wizard .button {\n margin: 0.5em 0em 0em 0em;\n font-size: 1.2em;\n}\n\n#messageArea {\nposition:absolute; top:0; right:0; margin: 0.5em; padding: 0.5em;\n}\n\n*[id='messageArea'] {\nposition:fixed !important; z-index:99;}\n\n.messageToolbar {\ndisplay: block;\ntext-align: right;\n}\n\n#messageArea a{\n text-decoration: underline;\n}\n\n.popup {\n font-size: .9em;\n padding: 0.2em;\n list-style: none;\n margin: 0;\n}\n\n.popup hr {\n display: block;\n height: 1px;\n width: auto;\n padding: 0;\n margin: 0.2em 0em;\n}\n\n.listBreak {\n font-size: 1px;\n line-height: 1px;\n}\n\n.listBreak div {\n margin: 2px 0;\n}\n\n.popup li.disabled {\n padding: 0.2em;\n}\n\n.popup li a{\n display: block;\n padding: 0.2em;\n}\n\n.tabset {\n padding: 1em 0em 0em 0.5em;\n}\n\n.tab {\n margin: 0em 0em 0em 0.25em;\n padding: 2px;\n}\n\n.tabContents {\n padding: 0.5em;\n}\n\n.tabContents ul, .tabContents ol {\n margin: 0;\n padding: 0;\n}\n\n.txtMainTab .tabContents li {\n list-style: none;\n}\n\n.tabContents li.listLink {\n margin-left: .75em;\n}\n\n#displayArea {\n margin: 1em 17em 0em 14em;\n}\n\n\n.toolbar {\n text-align: right;\n font-size: .9em;\n visibility: hidden;\n}\n\n.selected .toolbar {\n visibility: visible;\n}\n\n.tiddler {\n padding: 1em 1em 0em 1em;\n}\n\n.missing .viewer,.missing .title {\n font-style: italic;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n}\n\n.missing .subtitle {\n display: none;\n}\n\n.subtitle {\n font-size: 1.1em;\n}\n\n.tiddler .button {\n padding: 0.2em 0.4em;\n}\n\n.tagging {\nmargin: 0.5em 0.5em 0.5em 0;\nfloat: left;\ndisplay: none;\n}\n\n.isTag .tagging {\ndisplay: block;\n}\n\n.tagged {\nmargin: 0.5em;\nfloat: right;\n}\n\n.tagging, .tagged {\nfont-size: 0.9em;\npadding: 0.25em;\n}\n\n.tagging ul, .tagged ul {\nlist-style: none;margin: 0.25em;\npadding: 0;\n}\n\n.tagClear {\nclear: both;\n}\n\n.footer {\n font-size: .9em;\n}\n\n.footer li {\ndisplay: inline;\n}\n\n* html .viewer pre {\n width: 99%;\n padding: 0 0 1em 0;\n}\n\n.viewer {\n line-height: 1.4em;\n padding-top: 0.5em;\n}\n\n.viewer .button {\n margin: 0em 0.25em;\n padding: 0em 0.25em;\n}\n\n.viewer blockquote {\n line-height: 1.5em;\n padding-left: 0.8em;\n margin-left: 2.5em;\n}\n\n.viewer ul, .viewer ol{\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n.viewer table {\n border-collapse: collapse;\n margin: 0.8em 1.0em;\n}\n\n.viewer th, .viewer td, .viewer tr,.viewer caption{\n padding: 3px;\n}\n\n.viewer table.listView {\n font-size: 0.85em;\n margin: 0.8em 1.0em;\n}\n\n.viewer table.listView th, .viewer table.listView td, .viewer table.listView tr {\n padding: 0px 3px 0px 3px;\n}\n\n.viewer pre {\n padding: 0.5em;\n margin-left: 0.5em;\n font-size: 1.2em;\n line-height: 1.4em;\n overflow: auto;\n}\n\n.viewer code {\n font-size: 1.2em;\n line-height: 1.4em;\n}\n\n.editor {\nfont-size: 1.1em;\n}\n\n.editor input, .editor textarea {\n display: block;\n width: 100%;\n font: inherit;\n}\n\n.editorFooter {\n padding: 0.25em 0em;\n font-size: .9em;\n}\n\n.editorFooter .button {\npadding-top: 0px; padding-bottom: 0px;}\n\n.fieldsetFix {border: 0;\npadding: 0;\nmargin: 1px 0px 1px 0px;\n}\n\n.sparkline {\n line-height: 1em;\n}\n\n.sparktick {\n outline: 0;\n}\n\n.zoomer {\n font-size: 1.1em;\n position: absolute;\n padding: 1em;\n}\n\n.cascade {\n font-size: 1.1em;\n position: absolute;\n overflow: hidden;\n}\n/*}}}*/
<script label="show/hide right sidebar">\n var show=document.getElementById('sidebar').style.display=='none';\n if (!show) {\n document.getElementById('sidebar').style.display='none';\n var margin='1em';\n }\n else {\n document.getElementById('sidebar').style.display='block';\n var margin=config.options.txtDisplayAreaRightMargin?config.options.txtDisplayAreaRightMargin:"";\n }\n place.innerHTML=(show?"Hide_SideBar":"Show_SideBar"); // SET LINK TEXT\n place.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP\n document.getElementById('displayArea').style.marginRight=margin;\n config.options.chkShowRightSidebar=show;\n saveOptionCookie('chkShowRightSidebar');\n var sm=document.getElementById("storyMenu"); if (sm) config.refreshers.content(sm);\n return false;\n</script><script>\n if (config.options.chkShowRightSidebar==undefined)\n config.options.chkShowRightSidebar=true;\n if (!config.options.txtDisplayAreaRightMargin||!config.options.txtDisplayAreaRightMargin.length)\n config.options.txtDisplayAreaRightMargin="17em";\n var show=config.options.chkShowRightSidebar;\n document.getElementById('sidebar').style.display=show?"block":"none";\n document.getElementById('displayArea').style.marginRight=show?config.options.txtDisplayAreaRightMargin:"1em";\n place.lastChild.innerHTML=(show?"Hide_SideBar":"Show_SideBar"); // SET LINK TEXT\n place.lastChild.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP\n place.lastChild.style.fontWeight="normal";\n</script>\n
A course on ''the study of digital multimedia and the analysis and synthesis of digital video technology.'' \n*[[Final Projects|http://www.cc.gatech.edu/computing/dvfx/videos/dvfx2007.html]] for this year's final projects. \n*[[Final Grades]] are here.\n*For other years see <<DVFX>>\n\n<<tiddler QuickLinks>>\n<<tiddler Announcements>>\n<<tiddler Deadlines>>\n<<tiddler Guest Speakers>>\n<<tiddler QuickLinks>>\n\n
version.extensions.alias= {major: 1, minor: 0, revision: 3, date: new Date(2005,10,9)};\nconfig.macros.alias= { };\nconfig.macros.alias.handler = function(place,macroName,params) {\n var alias=params.shift(); if (!alias) return; alias=alias.replace(/ /g,"_"); // don't allow spaces in alias\n if (config.macros[alias]==undefined) // create new macro (as needed)\n { \n config.macros[alias] = { };\n config.macros[alias].handler =\n function (place,macroName,params)\n { wikify(config.macros[macroName].text,place,null,null); }\n }\n config.macros[alias].text = params[0]?params.join(' '):alias; // set alias text\n}