SlideShare uma empresa Scribd logo
1 de 26
Rotoscoping
in the
Browser
Simple
Rotoscoping           QuickTime™ and a
                        decompressor




in the
              are needed to see this picture.




Browser
What is rotoscoping?
Developed by the Fleischer
Bros
Invented the technique in 1915 for Koko the
Clown
Other examples..




             QuickTime™ and a
             GIF decompressor
     are needed to see this picture.
What a complex Roto looks
like
A simple use of Rotoscope
The Lightsaber effect in Star Wars
Challenge:
Can we create a consumer app with which the
user can rotoscope 2 rectangles in the
browser?
Currently in order to turn the first image into the
second image we need a $1,500 piece of
software.
Goals:

 Acquire users video using API’s or youtube_dl
 (command line tool for multi-site support)
 Create closed quadratic shapes.
 Straight, and curved lines with controls
 Step through frame by frame of users footage
 and store the results
 Present the work for the users approval
 Output results to local machine or preferred
 video site. (Using API of video site)
User Experience:


1.   Chose your Video
2.   Convert to Frames (Needed for next version)
3.   Rotoscope
4.   Review
5.   Upload to video sharing site or Save local
UI Mock Up:
Foundation 4 Interface
How do we make this?
Notice working circles for handles to move the shape of glow
Solution: The Canvas!
The Canvas can be placed on top of video
With the canvas we will:
 Create Handles to control our shape
     arc (2 arc’s make a circle)
 Create points and controls, draw different
 lines types
     lineTo()
     quadraticCurveTo()
     bezierCurveTo()
     Fill the shape with a style similar to a saber
Interactive Curve




http://blogs.sitepointstatic.com/examples/tech/canvas-curves/bezier-curve.h
Creating Points/Handles and
Style
function Init(quadratic) {
              point = {p1: { x:100, y:250 },
                 p2: { x:400, y:250 }};

             if (quadratic) {point.cp1 = { x: 250, y: 100 };}
             else {point.cp1 = { x: 150, y: 100 };
                    point.cp2 = { x: 350, y: 100 };}

             // default styles
             style = {
                        curve:        { width: 6, color: "#333" },
                        cpline:       { width: 1, color: "#C00" },
                        point: { radius: 10,
                 width: 2, color: "#900",
                 fill: "rgba(200,200,200,0.5)",
                 arc1: 0, arc2: 2 * Math.PI }}
             // line style defaults
             ctx.lineCap = "round";
             ctx.lineJoin = "round";
             // event handlers
             canvas.onmousedown = DragStart;
             canvas.onmousemove = Dragging;
             canvas.onmouseup = canvas.onmouseout = DragEnd;

             DrawCanvas();
      }
Drawing the lines
function DrawCanvas() {
             ctx.clearRect(0, 0, canvas.width, canvas.height);
             // control lines
             ctx.lineWidth = style.cpline.width;
             ctx.strokeStyle = style.cpline.color;
             ctx.beginPath();
             ctx.moveTo(point.p1.x, point.p1.y);
             ctx.lineTo(point.cp1.x, point.cp1.y);
             if (point.cp2) {
                     ctx.moveTo(point.p2.x, point.p2.y);
                     ctx.lineTo(point.cp2.x, point.cp2.y);}
      ctx.stroke();
             // curve
             ctx.lineWidth = style.curve.width;
             ctx.strokeStyle = style.curve.color;
             ctx.beginPath();
             ctx.moveTo(point.p1.x, point.p1.y);
             if (point.cp2) {
                     ctx.bezierCurveTo(point.cp1.x, point.cp1.y,
                       point.cp2.x, point.cp2.y, point.p2.x, point.p2.y);
             }

             ctx.stroke();
Video Controls and
Storage
Canvas on top of video
Play footage
Step through per frame
Allow user to draw on each frame
Store the frames
Present Frames for the User to Review
The following is a walk
  through of Boaz
 Senders file, app.js.

 (as in I didn’t write it, but made changes)
Create the Video Element
Create localStorage in browser
      (not using Backlift)
      (not using Backlift)
saveFrameData to
   localStorage
Render frame from
  localStorage
Demo current state of
      project
Major limit, localStorage
 5MB limit error looks like this and my program
 stops working. (must be smaller)
 to clear run localStorage.clear()
Improvements and
Features
 Re-write Boaz Senders app.js to use a proper
 Re-write Boaz Senders app.js to use a proper
 DB to avoid size limit of localStorage (5MB)
 Adjust canvas and controls based on the video
 size
 Place control handles on dif layer than saber,
 hide at capture time
 Variable to set number of sabers
 Color controls for each saber
 Improve review playback
 Export/Save comped videos using API’s
 Re-make using Ruby on Rails
Note to my designers


blending modes are in the queue to be added
to CSS3
   Screen
   Multiply
   Luminosity
   Overlay
   etc...
This NSS student would like thank...
 John Wark
 Adam Scott
 Andrew Butler
 students and mentors for a great first session!


Those who helped with SaberMe
  Cade Truitt
 Christopher Cotton
 Adam Scott (clear localStorage)
 Boaz Sender (canvas over video and localStorage
 solution)
 Craig Buckler (curve creation and controls on
 canvas)

Mais conteúdo relacionado

Mais procurados

Mais procurados (8)

HTML 5 Canvas & SVG
HTML 5 Canvas & SVGHTML 5 Canvas & SVG
HTML 5 Canvas & SVG
 
Exploring Canvas
Exploring CanvasExploring Canvas
Exploring Canvas
 
Canvas - HTML 5
Canvas - HTML 5Canvas - HTML 5
Canvas - HTML 5
 
Begin three.js.key
Begin three.js.keyBegin three.js.key
Begin three.js.key
 
WebGL and three.js - Web 3D Graphics
WebGL and three.js - Web 3D Graphics WebGL and three.js - Web 3D Graphics
WebGL and three.js - Web 3D Graphics
 
Introduction to three.js
Introduction to three.jsIntroduction to three.js
Introduction to three.js
 
Get Moving! (with HTML5 canvas)
Get Moving! (with HTML5 canvas)Get Moving! (with HTML5 canvas)
Get Moving! (with HTML5 canvas)
 
Intro to Three.js
Intro to Three.jsIntro to Three.js
Intro to Three.js
 

Semelhante a Rotoscope inthebrowserppt billy

How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1Bitla Software
 
Google's HTML5 Work: what's next?
Google's HTML5 Work: what's next?Google's HTML5 Work: what's next?
Google's HTML5 Work: what's next?Patrick Chanezon
 
Quartz 2D with Swift 3
Quartz 2D with Swift 3Quartz 2D with Swift 3
Quartz 2D with Swift 3Bob McCune
 
How to make a video game
How to make a video gameHow to make a video game
How to make a video gamedandylion13
 
Writing a Space Shooter with HTML5 Canvas
Writing a Space Shooter with HTML5 CanvasWriting a Space Shooter with HTML5 Canvas
Writing a Space Shooter with HTML5 CanvasSteve Purkis
 
I Can't Believe It's Not Flash
I Can't Believe It's Not FlashI Can't Believe It's Not Flash
I Can't Believe It's Not FlashThomas Fuchs
 
HTML5 Canvas - The Future of Graphics on the Web
HTML5 Canvas - The Future of Graphics on the WebHTML5 Canvas - The Future of Graphics on the Web
HTML5 Canvas - The Future of Graphics on the WebRobin Hawkes
 
Open Cv 2005 Q4 Tutorial
Open Cv 2005 Q4 TutorialOpen Cv 2005 Q4 Tutorial
Open Cv 2005 Q4 Tutorialantiw
 
Enhancing UI/UX using Java animations
Enhancing UI/UX using Java animationsEnhancing UI/UX using Java animations
Enhancing UI/UX using Java animationsNaman Dwivedi
 
HTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreHTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreRemy Sharp
 
Android RenderScript on LLVM
Android RenderScript on LLVMAndroid RenderScript on LLVM
Android RenderScript on LLVMJohn Lee
 
JavaOne 2009 - 2d Vector Graphics in the browser with Canvas and SVG
JavaOne 2009 -  2d Vector Graphics in the browser with Canvas and SVGJavaOne 2009 -  2d Vector Graphics in the browser with Canvas and SVG
JavaOne 2009 - 2d Vector Graphics in the browser with Canvas and SVGPatrick Chanezon
 
Copy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with QtCopy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with Qtaccount inactive
 
Canvas
CanvasCanvas
CanvasRajon
 
Advanced Game Development with the Mobile 3D Graphics API
Advanced Game Development with the Mobile 3D Graphics APIAdvanced Game Development with the Mobile 3D Graphics API
Advanced Game Development with the Mobile 3D Graphics APITomi Aarnio
 
Java Fx Overview Tech Tour
Java Fx Overview Tech TourJava Fx Overview Tech Tour
Java Fx Overview Tech TourCarol McDonald
 

Semelhante a Rotoscope inthebrowserppt billy (20)

HTML5 Canvas
HTML5 CanvasHTML5 Canvas
HTML5 Canvas
 
How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1
 
Google's HTML5 Work: what's next?
Google's HTML5 Work: what's next?Google's HTML5 Work: what's next?
Google's HTML5 Work: what's next?
 
Html5
Html5Html5
Html5
 
Intro to HTML5
Intro to HTML5Intro to HTML5
Intro to HTML5
 
Quartz 2D with Swift 3
Quartz 2D with Swift 3Quartz 2D with Swift 3
Quartz 2D with Swift 3
 
How to make a video game
How to make a video gameHow to make a video game
How to make a video game
 
Writing a Space Shooter with HTML5 Canvas
Writing a Space Shooter with HTML5 CanvasWriting a Space Shooter with HTML5 Canvas
Writing a Space Shooter with HTML5 Canvas
 
I Can't Believe It's Not Flash
I Can't Believe It's Not FlashI Can't Believe It's Not Flash
I Can't Believe It's Not Flash
 
Yavorsky
YavorskyYavorsky
Yavorsky
 
HTML5 Canvas - The Future of Graphics on the Web
HTML5 Canvas - The Future of Graphics on the WebHTML5 Canvas - The Future of Graphics on the Web
HTML5 Canvas - The Future of Graphics on the Web
 
Open Cv 2005 Q4 Tutorial
Open Cv 2005 Q4 TutorialOpen Cv 2005 Q4 Tutorial
Open Cv 2005 Q4 Tutorial
 
Enhancing UI/UX using Java animations
Enhancing UI/UX using Java animationsEnhancing UI/UX using Java animations
Enhancing UI/UX using Java animations
 
HTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreHTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymore
 
Android RenderScript on LLVM
Android RenderScript on LLVMAndroid RenderScript on LLVM
Android RenderScript on LLVM
 
JavaOne 2009 - 2d Vector Graphics in the browser with Canvas and SVG
JavaOne 2009 -  2d Vector Graphics in the browser with Canvas and SVGJavaOne 2009 -  2d Vector Graphics in the browser with Canvas and SVG
JavaOne 2009 - 2d Vector Graphics in the browser with Canvas and SVG
 
Copy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with QtCopy Your Favourite Nokia App with Qt
Copy Your Favourite Nokia App with Qt
 
Canvas
CanvasCanvas
Canvas
 
Advanced Game Development with the Mobile 3D Graphics API
Advanced Game Development with the Mobile 3D Graphics APIAdvanced Game Development with the Mobile 3D Graphics API
Advanced Game Development with the Mobile 3D Graphics API
 
Java Fx Overview Tech Tour
Java Fx Overview Tech TourJava Fx Overview Tech Tour
Java Fx Overview Tech Tour
 

Último

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 

Último (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 

Rotoscope inthebrowserppt billy

  • 1. Rotoscoping in the Browser Simple Rotoscoping QuickTime™ and a decompressor in the are needed to see this picture. Browser
  • 3. Developed by the Fleischer Bros Invented the technique in 1915 for Koko the Clown Other examples.. QuickTime™ and a GIF decompressor are needed to see this picture.
  • 4. What a complex Roto looks like
  • 5. A simple use of Rotoscope The Lightsaber effect in Star Wars
  • 6. Challenge: Can we create a consumer app with which the user can rotoscope 2 rectangles in the browser? Currently in order to turn the first image into the second image we need a $1,500 piece of software.
  • 7. Goals: Acquire users video using API’s or youtube_dl (command line tool for multi-site support) Create closed quadratic shapes. Straight, and curved lines with controls Step through frame by frame of users footage and store the results Present the work for the users approval Output results to local machine or preferred video site. (Using API of video site)
  • 8. User Experience: 1. Chose your Video 2. Convert to Frames (Needed for next version) 3. Rotoscope 4. Review 5. Upload to video sharing site or Save local
  • 11. How do we make this? Notice working circles for handles to move the shape of glow
  • 12. Solution: The Canvas! The Canvas can be placed on top of video With the canvas we will: Create Handles to control our shape arc (2 arc’s make a circle) Create points and controls, draw different lines types lineTo() quadraticCurveTo() bezierCurveTo() Fill the shape with a style similar to a saber
  • 14. Creating Points/Handles and Style function Init(quadratic) { point = {p1: { x:100, y:250 }, p2: { x:400, y:250 }}; if (quadratic) {point.cp1 = { x: 250, y: 100 };} else {point.cp1 = { x: 150, y: 100 }; point.cp2 = { x: 350, y: 100 };} // default styles style = { curve: { width: 6, color: "#333" }, cpline: { width: 1, color: "#C00" }, point: { radius: 10, width: 2, color: "#900", fill: "rgba(200,200,200,0.5)", arc1: 0, arc2: 2 * Math.PI }} // line style defaults ctx.lineCap = "round"; ctx.lineJoin = "round"; // event handlers canvas.onmousedown = DragStart; canvas.onmousemove = Dragging; canvas.onmouseup = canvas.onmouseout = DragEnd; DrawCanvas(); }
  • 15. Drawing the lines function DrawCanvas() { ctx.clearRect(0, 0, canvas.width, canvas.height); // control lines ctx.lineWidth = style.cpline.width; ctx.strokeStyle = style.cpline.color; ctx.beginPath(); ctx.moveTo(point.p1.x, point.p1.y); ctx.lineTo(point.cp1.x, point.cp1.y); if (point.cp2) { ctx.moveTo(point.p2.x, point.p2.y); ctx.lineTo(point.cp2.x, point.cp2.y);} ctx.stroke(); // curve ctx.lineWidth = style.curve.width; ctx.strokeStyle = style.curve.color; ctx.beginPath(); ctx.moveTo(point.p1.x, point.p1.y); if (point.cp2) { ctx.bezierCurveTo(point.cp1.x, point.cp1.y, point.cp2.x, point.cp2.y, point.p2.x, point.p2.y); } ctx.stroke();
  • 16. Video Controls and Storage Canvas on top of video Play footage Step through per frame Allow user to draw on each frame Store the frames Present Frames for the User to Review
  • 17. The following is a walk through of Boaz Senders file, app.js. (as in I didn’t write it, but made changes)
  • 18. Create the Video Element
  • 19. Create localStorage in browser (not using Backlift) (not using Backlift)
  • 20. saveFrameData to localStorage
  • 21. Render frame from localStorage
  • 22. Demo current state of project
  • 23. Major limit, localStorage 5MB limit error looks like this and my program stops working. (must be smaller) to clear run localStorage.clear()
  • 24. Improvements and Features Re-write Boaz Senders app.js to use a proper Re-write Boaz Senders app.js to use a proper DB to avoid size limit of localStorage (5MB) Adjust canvas and controls based on the video size Place control handles on dif layer than saber, hide at capture time Variable to set number of sabers Color controls for each saber Improve review playback Export/Save comped videos using API’s Re-make using Ruby on Rails
  • 25. Note to my designers blending modes are in the queue to be added to CSS3 Screen Multiply Luminosity Overlay etc...
  • 26. This NSS student would like thank... John Wark Adam Scott Andrew Butler students and mentors for a great first session! Those who helped with SaberMe Cade Truitt Christopher Cotton Adam Scott (clear localStorage) Boaz Sender (canvas over video and localStorage solution) Craig Buckler (curve creation and controls on canvas)