{"id":1657,"date":"2025-11-28T14:51:00","date_gmt":"2025-11-28T14:51:00","guid":{"rendered":"https:\/\/stuartcupit.com\/wordpress\/?p=1657"},"modified":"2026-09-15T17:43:32","modified_gmt":"2026-09-15T17:43:32","slug":"laser-burning","status":"publish","type":"post","link":"https:\/\/stuartcupit.com\/wordpress\/?p=1657","title":{"rendered":"Laser Cutting Trickery"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I managed to borrow a <a href=\"https:\/\/www.laseros.com\/\">LaserCube<\/a> from Ed, a small portable laser projector and after getting it working (it was an older model) I wanted a fun project to show off its coolness. Inspired by a video I saw somewhere, where they had aligned a laser and a projector that makes the most of both styles of display.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1290\" height=\"1326\" data-id=\"1698\" src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image_processing20230128-1-1y2xrh5.jpeg\" alt=\"\" class=\"wp-image-1698\" srcset=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image_processing20230128-1-1y2xrh5.jpeg 1290w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image_processing20230128-1-1y2xrh5-389x400.jpeg 389w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image_processing20230128-1-1y2xrh5-768x789.jpeg 768w\" sizes=\"auto, (max-width: 1290px) 100vw, 1290px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1300\" height=\"1000\" data-id=\"1697\" src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Wicked-Lasers-LaserCube-Projector-04.jpg\" alt=\"\" class=\"wp-image-1697\" srcset=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Wicked-Lasers-LaserCube-Projector-04.jpg 1300w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Wicked-Lasers-LaserCube-Projector-04-400x308.jpg 400w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Wicked-Lasers-LaserCube-Projector-04-767x590.jpg 767w\" sizes=\"auto, (max-width: 1300px) 100vw, 1300px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The idea was to fake a laser cutting\/burning through metal. The super bright flickery dot of the laser, aligned with a projector displaying flames, sparks and a glowing melted edge where the laser had passed. <br><br>This sounded like a job for TouchDesigner! Luckily TD has a LaserCube example .tox file which included a node to send a chop to the device over USB which the laser would interpret as X,Y coordinates, brightness and colour.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"589\" height=\"424\" src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-2.png\" alt=\"\" class=\"wp-image-1672\" style=\"aspect-ratio:1.389219081089462;width:395px;height:auto\" srcset=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-2.png 589w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-2-400x288.png 400w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first step was to get the laser projection and the video projection aligned. Using the Stoner node to drag the 4 corners of a calibration image to match the laser dots.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Next was to import and trace a shape. Using an SVG file for the point coordinates, breaking long lines down into sections. Eventually I was able to both draw the shape on screen and have the laser point traverse the same path. All sorts of fun along the way from how quickly lasers can scan to how quickly and accurately they can change direction and how to split the SVG up into evenly spaced points along a path.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1495\" height=\"1104\" data-id=\"1711\" src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Screenshot-2026-09-15-115616-1.png\" alt=\"\" class=\"wp-image-1711\" srcset=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Screenshot-2026-09-15-115616-1.png 1495w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Screenshot-2026-09-15-115616-1-400x295.png 400w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Screenshot-2026-09-15-115616-1-768x567.png 768w\" sizes=\"auto, (max-width: 1495px) 100vw, 1495px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1153\" height=\"2048\" data-id=\"1709\" src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Photo-2024-12-10-17-45-40_Samsung_S22Plus-1153x2048-1.jpg\" alt=\"\" class=\"wp-image-1709\" srcset=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Photo-2024-12-10-17-45-40_Samsung_S22Plus-1153x2048-2.jpg 1153w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Photo-2024-12-10-17-45-40_Samsung_S22Plus-225x400.jpg 225w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Photo-2024-12-10-17-45-40_Samsung_S22Plus-243x432.jpg 243w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Photo-2024-12-10-17-45-40_Samsung_S22Plus-865x1536-1.jpg 865w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Photo-2024-12-10-17-45-40_Samsung_S22Plus-scaled-1.jpg 1441w\" sizes=\"auto, (max-width: 1153px) 100vw, 1153px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2049\" height=\"1154\" data-id=\"1710\" src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Photo-2024-12-10-17-42-20_Samsung_S22Plus-2049x1154-1.jpg\" alt=\"\" class=\"wp-image-1710\" srcset=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Photo-2024-12-10-17-42-20_Samsung_S22Plus-2049x1154-1.jpg 2049w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Photo-2024-12-10-17-42-20_Samsung_S22Plus-400x225.jpg 400w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Photo-2024-12-10-17-42-20_Samsung_S22Plus-767x432.jpg 767w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Photo-2024-12-10-17-42-20_Samsung_S22Plus-1536x865.jpg 1536w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Photo-2024-12-10-17-42-20_Samsung_S22Plus-2048x1153.jpg 2048w\" sizes=\"auto, (max-width: 2049px) 100vw, 2049px\" \/><\/figure>\n<\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2049\" height=\"838\" src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-3-2049x838.png\" alt=\"\" class=\"wp-image-1673\" srcset=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-3-2049x838.png 2049w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-3-400x164.png 400w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-3-768x314.png 768w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-3-1536x628.png 1536w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-3-2048x838.png 2048w\" sizes=\"auto, (max-width: 2049px) 100vw, 2049px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Next was to find a decent fire effect. I tried a few different fluid simulation examples from the community. I got a nice Nvidia GPU version working but because I wanted this to be portable it needed to run off my laptop so I ended up using a generic GPU version which was almost as good. Tweaking the parameters to find the right balance between quality of fire effect and performance. Using the path and rendering a sphere and a trail and using that as the source for the fluid simulation worked great. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2026\/09\/fire3.webp\" alt=\"\" class=\"wp-image-1688\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Next was to add some sparks, globs of molten material raining down from where the laser was burning through. I build a particle simulation from scratch with a feedback loop to add trails. Worked really well. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2026\/09\/sparks.webp\" alt=\"\" class=\"wp-image-1689\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2049\" height=\"564\" src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-5-2049x564.png\" alt=\"\" class=\"wp-image-1683\" srcset=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-5-2049x564.png 2049w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-5-400x110.png 400w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-5-767x211.png 767w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-5-1536x423.png 1536w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-5-2048x564.png 2048w\" sizes=\"auto, (max-width: 2049px) 100vw, 2049px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I added some trails which slowly faded away and some glow and the effects were done. I composited all the layers together, used a few frames delay on the laser point position to get the video and laser dots playback positions to look as close as possible. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Really happy with how this turned out. The combination of the super bright dot from the laser and the projected cutting effect with the ability to trace a vector path. Its uncanny watching it in real life, the video doesn&#8217;t do the brightness of the laser justice, it looks just like a laser is cutting through the wall. <\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"960\" style=\"aspect-ratio: 540 \/ 960;\" width=\"540\" controls src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Photo-2024-12-16-17-20-19_Samsung_S22Plus-2.mp4\"><\/video><\/figure>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1153\" height=\"2048\" data-id=\"1704\" src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/20241216_160637-1-1153x2048.jpg\" alt=\"\" class=\"wp-image-1704\" srcset=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/20241216_160637-1-1153x2048-1.jpg 1153w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/20241216_160637-1-225x400.jpg 225w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/20241216_160637-1-243x432.jpg 243w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/20241216_160637-1-865x1536.jpg 865w\" sizes=\"auto, (max-width: 1153px) 100vw, 1153px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1153\" height=\"2048\" data-id=\"1703\" src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/20241216_160639-1153x2048-1.jpg\" alt=\"\" class=\"wp-image-1703\" srcset=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/20241216_160639-1153x2048-2.jpg 1153w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/20241216_160639-225x400-1.jpg 225w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/20241216_160639-243x432-1.jpg 243w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/20241216_160639-865x1536-1.jpg 865w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/20241216_160639-scaled-1.jpg 1441w\" sizes=\"auto, (max-width: 1153px) 100vw, 1153px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">As a little side project, I played around with tracking a laser pointer dot rather than using the LaserCube, so that you could &#8220;cut&#8221; the wall by hand. This involved using a camera to track the bright laser dot, calibrating the camera coordinates to match the fire projection. The green circle is projected around the tracked laser dot. Works really well. I used the same tracking technique for the <a href=\"https:\/\/stuartcupit.com\/wordpress\/?p=1533\" data-type=\"page\" data-id=\"45\">Nike<\/a> project. <\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/Laser_pointer-tracking2_25-11-28-15-25-40_edit.mp4\"><\/video><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">TD&#8217;s node graph for this project<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2049\" height=\"1701\" src=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-6-2049x1701.png\" alt=\"\" class=\"wp-image-1695\" srcset=\"https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-6-2049x1701.png 2049w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-6-400x332.png 400w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-6-768x637.png 768w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-6-1536x1275.png 1536w, https:\/\/stuartcupit.com\/wordpress\/wp-content\/uploads\/2025\/11\/image-6-2048x1700.png 2048w\" sizes=\"auto, (max-width: 2049px) 100vw, 2049px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>I managed to borrow a LaserCube from Ed, a small portable laser projector and after getting it working (it was an older model) I wanted a fun project to show off its coolness. Inspired by a video I saw somewhere, where they had aligned a laser and a projector that makes the most of both&#8230;<\/p>\n","protected":false},"author":1,"featured_media":1714,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,10,5],"tags":[],"class_list":["post-1657","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cgi","category-interactive-media","category-programming"],"_links":{"self":[{"href":"https:\/\/stuartcupit.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stuartcupit.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stuartcupit.com\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stuartcupit.com\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stuartcupit.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1657"}],"version-history":[{"count":21,"href":"https:\/\/stuartcupit.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1657\/revisions"}],"predecessor-version":[{"id":1720,"href":"https:\/\/stuartcupit.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1657\/revisions\/1720"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stuartcupit.com\/wordpress\/index.php?rest_route=\/wp\/v2\/media\/1714"}],"wp:attachment":[{"href":"https:\/\/stuartcupit.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stuartcupit.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stuartcupit.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}