diff --git a/presentation/building_a_photobooth.svg b/presentation/building_a_photobooth.svg index abb4de9..73db966 100644 --- a/presentation/building_a_photobooth.svg +++ b/presentation/building_a_photobooth.svg @@ -27,11 +27,11 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="0.12500001" - inkscape:cx="4461.028" - inkscape:cy="2866.3681" + inkscape:zoom="2.0000002" + inkscape:cx="1714.2525" + inkscape:cy="3140.3925" inkscape:document-units="mm" - inkscape:current-layer="layer_title" + inkscape:current-layer="group_software_screen" showgrid="false" showguides="true" inkscape:window-width="1920" @@ -343,23 +343,23 @@ id="text_subtitle" y="289.518" x="1016" - style="line-height:125%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:35.27777778px;text-anchor:middle;writing-mode:lr;"> + style="line-height:125%;-inkscape-font-specification:'Sans, Normal';;text-align:center;font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:35.27777778px;text-anchor:middle;writing-mode:lr;"> Andreas Frisch <fraxinas@schaffenburg.org> Easterhegg 2017-04-15 @@ -653,7 +653,7 @@ @@ -662,21 +662,21 @@ id="tspan18437" x="967.03076" y="178.94637" - style="line-height:100%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center">Photo Booth + style="line-height:100%;-inkscape-font-specification:'Sans, Normal';;text-align:center">Photo Booth Why would you need one why would you wanna build one by yourself What is a photo booth? + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:0.70555556px;font-family:Sans;-inkscape-font-specification:'Sans, Bold';;text-align:start;writing-mode:lr-tb;text-anchor:start">What is a photo booth? Motivation + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:0.70555556px;font-family:Sans;-inkscape-font-specification:'Sans, Bold';;fill:#808080">Motivation Our approach + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:0.70555556px;font-family:Sans;-inkscape-font-specification:'Sans, Bold';;text-align:start;writing-mode:lr-tb;text-anchor:start">Our approach + style="font-size:10.58300018px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';;text-align:center;text-anchor:middle"> Hardware @@ -1275,9 +1273,9 @@ id="text376678-8" y="280.259" x="446.68546" - style="font-size:10.58300018px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle"> + style="font-size:10.58300018px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';;text-align:center;text-anchor:middle"> Linux @@ -1287,10 +1285,10 @@ id="text376678-8-1" y="215.09801" x="446.82745" - style="font-size:10.58300018px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle"> + style="font-size:10.58300018px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';;text-align:center;text-anchor:middle"> photobooth application @@ -1321,98 +1319,83 @@ id="text9092-7-5" y="239.381" x="492.32629" - style="font-size:1.05799997px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal'"> + style="font-style:normal;font-variant:normal;font-stretch:normal;font-size:1.05801582px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';;text-align:start;writing-mode:lr-tb;text-anchor:start"> ◦ multi-platform toolkit for creating graphical user interfaces + x="492.32629" + >creating graphical user interfaces ◦ created 1996 for GIMP + x="492.32629" + >◦ created 1996 for GIMP GLib ◦ low-level core library + x="492.32629" + >◦ low-level core library ◦ data structures and handling for C + x="492.32629" + >◦ data structures and handling for C ◦ GObject system + x="492.32629" + >◦ GObject system ◦ event-driven programming + x="492.32629" + >◦ event-driven programming ◦ threads + x="492.32629" + >◦ threads + id="tspan6377" + /> GTK Widget Toolkit ◦ Glade GUI builder + x="492.32629" + >◦ Glade GUI builder + style="font-style:normal;font-variant:normal;font-stretch:normal;font-size:1.05801582px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';;text-align:start;writing-mode:lr;text-anchor:start;font-weight:normal;"> ◦ multimedia framework + x="431.2084" + style="-inkscape-font-specification:'Sans, Normal';font-family:Sans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:1.05801582px;text-anchor:start;text-align:start;writing-mode:lr;">◦ multimedia framework ◦ pipeline-based + x="431.2084" + >◦ pipeline-based ◦ media-agnostic + x="431.2084" + >◦ media-agnostic ◦ countless plugins + x="431.2084" + >◦ countless plugins ◦ it's super cool, you should use it! + x="431.2084" + >◦ it's super cool, you should use it! + id="tspan6373" + /> $ gphoto2 --capture-movie --stdout | \ + x="431.2084" + >$ gphoto2 --capture-movie --stdout | \ gst-launch-1.0 fdsrc ! decodebin ! autovideosink + x="431.2084" + >gst-launch-1.0 fdsrc ! decodebin ! autovideosink + style="font-style:normal;font-variant:normal;font-stretch:normal;font-size:1.05801582px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';;text-align:start;writing-mode:lr-tb;text-anchor:start"> ◦ abstracts (USB) port communication and camera protocol ◦ high level API for accessing files on the camera ◦ and remote controlling the camera ◦ live view is super crappy! ◦ API documentation is non-existant ◦ not GLib $ gphoto2 --capture-image-and-download @@ -1547,12 +1514,12 @@ id="text6150" y="176.60815" x="362.57062" - style="font-size:14.11100006px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;letter-spacing:0;word-spacing:0;fill:#808080;filter:url(#filter_blur_large)" + style="font-size:14.11100006px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';;letter-spacing:0;word-spacing:0;fill:#808080;filter:url(#filter_blur_large)" font-size="14.111" letter-spacing="0" word-spacing="0"> Software Architecture @@ -1561,7 +1528,7 @@ word-spacing="0" letter-spacing="0" font-size="14.111" - style="font-size:14.11100006px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;letter-spacing:0;word-spacing:0;fill:#ffffff" + style="font-size:14.11100006px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';;letter-spacing:0;word-spacing:0;fill:#ffffff" x="362.04144" y="176.07899" id="text34837"> @@ -1569,7 +1536,7 @@ id="tspan34835" x="362.04144" y="176.07899" - style="-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal">Software Architecture + style="-inkscape-font-specification:'Sans, Normal';">Software Architecture ANY gstreamer pipelines + style="-inkscape-font-specification:'Sans, Normal';;fill:#4d4d4d;">gstreamer pipelines + style="font-size:104.72100067px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';;enable-background:new"> gstreamer pipelines @@ -4640,10 +4607,9 @@ id="path8680" /> + x="347.57501" + y="405.30701" /> - + + height="34.540001" + preserveAspectRatio="none" + id="image53765" + x="347.57501" + y="475.18201" /> photobooth user interface software (simplified) @@ -4994,14 +4959,14 @@ photobooth user interface software (simplified) + style="font-size:4.47755098px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';">photobooth user interface software (simplified) CAPTURE_VIDEO + id="tspan8728">CAPTURE_VIDEO CAPTURE_PHOTO + id="tspan8746">CAPTURE_PHOTO photo_booth_preview + id="tspan8754">photo_booth_preview photo_booth_ + id="tspan8762">photo_booth_ snapshot_start + id="tspan8764">snapshot_start photo_booth_snapshot_taken + id="tspan8772">photo_booth_snapshot_taken photo_booth_button_print_clicked + id="tspan8780">photo_booth_button_print_clicked photo_booth_print + id="tspan8788">photo_booth_print CAPTURE_INIT + id="tspan8796">CAPTURE_INIT gp_camera_ + id="tspan8816">gp_camera_ capture_preview + id="tspan8818">capture_preview writespreviewJPEG + id="tspan8834">writes preview JPEG to MOVIEPIE + id="tspan8836">to MOVIEPIPE fdsrc + id="tspan8844">fdsrc video_bin + id="tspan8846">video_bin capture_thread + id="tspan8854">capture_thread libgphoto + id="tspan8862">libgphoto GStreamer + id="tspan8870-5">GStreamer PhotoBooth + id="tspan8878-1">PhotoBooth photo_booth_ + id="tspan8886-7">photo_booth_ snapshot_prepare + id="tspan8888-4">snapshot_prepare photo_booth_ + id="tspan8896">photo_booth_ snapshot_trigger + id="tspan8898">snapshot_trigger photo_booth_led_flash + id="tspan8906">photo_booth_led_flash photo_booth_led_black + id="tspan8914">photo_booth_led_black photo_booth_led_countdown + id="tspan8922">photo_booth_led_countdown photo_booth_led_printer + id="tspan8930">photo_booth_led_printer photobooth_led + id="tspan8938">photobooth_led (photo_booth_take_photo) + id="tspan8946">(photo_booth_take_photo) gp_camera_capture + id="tspan8948">gp_camera_capture gp_camera_file_get + id="tspan8950">gp_camera_file_get gp_file_get_data_and_size + id="tspan8952">gp_file_get_data_and_size gp_camera_file_delete + id="tspan8954">gp_camera_file_delete photo_booth_catch_photo_buffer + id="tspan8970">photo_booth_catch_photo_buffer showprint&cancelbuttons + id="tspan8972">showprint&cancelbuttons show copies slider + id="tspan8974">show copies slider photo_booth_catch_print_buffer + id="tspan8982">photo_booth_catch_print_buffer photo_booth_ + id="tspan8990">photo_booth_ process_photo_remove_elements + id="tspan8992">process_photo_remove_elements main() + id="tspan9000">main() photo_booth_new + id="tspan9002">photo_booth_new photo_booth_load_settings + id="tspan9004">photo_booth_load_settings photo_booth_class_init + id="tspan9006">photo_booth_class_init photo_booth_activate / + id="tspan9014">photo_booth_activate / photo_booth_open + id="tspan9016">photo_booth_open photo_booth_setup_gstreamer + id="tspan9024">photo_booth_setup_gstreamer build_video_bin + id="tspan9032">build_video_bin build_photo_bin + id="tspan9040">build_photo_bin photo_booth_video_widget_ready + id="tspan9048">photo_booth_video_widget_ready photo_booth_setup_window + id="tspan9056">photo_booth_setup_window photo_booth_bus_callback + id="tspan9064">photo_booth_bus_callback set capsfilter dimensions + id="tspan9072">set capsfilter dimensions set video-overlay dimensions + id="tspan9074">set video-overlay dimensions photo_booth_preview_ready + id="tspan9082">photo_booth_preview_ready gp_file_new_from_fd + id="tspan9090">gp_file_new_from_fd start new capture_thread + id="tspan9104">start new capture_thread photo_booth_begin_print + id="tspan9124">photo_booth_begin_print photo_booth_draw_page + id="tspan9132">photo_booth_draw_page photo_booth_print_done + id="tspan9146">photo_booth_print_done photo_bin src pad + id="tspan9196">photo_bin src pad appsink in photo_bin + id="tspan9210">appsink in photo_bin gst_pad_add_probe + id="tspan9220">gst_pad_add_probe g_signal_connect (appsink, "new-sample"...) + id="tspan9222">g_signal_connect (appsink, "new-sample"...) g_signal + id="tspan9226">g_signal poll timeout + id="tspan9230">poll timeout with preview fps + id="tspan9232">with preview fps CAPTURE_PAUSED + id="tspan9246">CAPTURE_PAUSED photo_booth_ + id="tspan9266">photo_booth_ background_clicked + id="tspan9268">background_clicked photo_booth_ + id="tspan9292">photo_booth_ button_cancel_clicked + id="tspan9294">button_cancel_clicked photo_booth_cancel + id="tspan9302">photo_booth_cancel appsrc + id="tspan9382">appsrc photo_bin + id="tspan9384">photo_bin photo_booth_ + id="tspan9458">photo_booth_ process_photo_plug_elements + id="tspan9460">process_photo_plug_elements photo_booth_cam_close + y="438.26486">photo_booth_cam_close photo_booth_cam_init + id="tspan28985">photo_booth_cam_init @@ -6679,67 +6512,66 @@ sodipodi:role="line" x="544.41522" y="453.23395" - style="line-height:1.25501454px;stroke-width:1.05990994" + style="line-height:1.25501454px" id="tspan10092">photo_booth_catch_photo_buffer runs 3 times, driven by image frames passing photo_bin 1. frame is displayed and will trigger plugging tee ! color correction ! appsink and tee ! jpegenc ! filesink elements 2. frame will be processed by gst (saved on disk, color matched and buffered for printing) 3. frame will remove elements 1. 3. @@ -6752,23 +6584,20 @@ d="m 496.97815,439.7678 h -5.77651 v -2.4876 h 11.53924 v 2.4876 z" /> CAPTURE_ + id="tspan8736">CAPTURE_ PRETRIGGER + id="tspan8738">PRETRIGGER @@ -7072,14 +6899,14 @@ id="layer_hardware_components" transform="matrix(1.53047,0,0,1.53047,1290.444,-119.618)"> + id="image4869" + preserveAspectRatio="none" + height="59.144001" + width="75.901001" /> @@ -7924,17 +7751,17 @@ id="text10917" y="551.62811" x="1822.4902" - style="line-height:125%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle;filter:url(#filter_blur_large);fill:#4d4d4d;" + style="line-height:125%;-inkscape-font-specification:'Sans, Normal';;text-align:center;text-anchor:middle;filter:url(#filter_blur_large);fill:#4d4d4d;" transform="skewY(-2.7)"> Printer @@ -7942,28 +7769,28 @@ id="tspan9225" x="1821.9611" y="551.07397" - style="-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center">Printer + style="-inkscape-font-specification:'Sans, Normal';;text-align:center">Printer + style="line-height:100%;-inkscape-font-specification:'Sans, Normal';;text-align:end;text-anchor:end;fill:#ffaaaa;filter:url(#filter_blur_large);"> PC Mainboard @@ -7972,60 +7799,58 @@ id="tspan9225-0" x="1757.7679" y="265.37399" - style="line-height:100%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end;fill:#ffffff">PC + style="line-height:100%;-inkscape-font-specification:'Sans, Normal';;text-align:end;fill:#ffffff">PC Mainboard HDD HDD ATX PSU @@ -8033,28 +7858,28 @@ sodipodi:role="line" x="1874.63" y="313.47501" - style="line-height:100%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;fill:#ffffff" + style="line-height:100%;-inkscape-font-specification:'Sans, Normal';;text-align:center;fill:#ffffff" id="tspan9247-0">ATX PSU + style="line-height:125%;-inkscape-font-specification:'Sans, Normal';;text-align:end;text-anchor:end;fill:#666666;filter:url(#filter_blur_large)"> Camera @@ -8062,21 +7887,21 @@ id="tspan9225-8" x="1794.536" y="76.732002" - style="-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end">Camera + style="-inkscape-font-specification:'Sans, Normal';;text-align:end">Camera + style="line-height:125%;-inkscape-font-specification:'Sans, Normal';;text-align:center;text-anchor:middle;opacity:0.8;fill:#c0c0ff;fill-opacity:1;filter:url(#filter_blur_mid)"> Arduino @@ -8084,30 +7909,30 @@ id="tspan9225-8-9" x="1910.9889" y="96.737999" - style="-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;fill:#0000bd;fill-opacity:1">Arduino + style="-inkscape-font-specification:'Sans, Normal';;text-align:center;fill:#0000bd;fill-opacity:1">Arduino Touch screen @@ -8115,13 +7940,13 @@ sodipodi:role="line" x="1872.9709" y="259.056" - style="line-height:80.48999906%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center" + style="line-height:80.48999906%;-inkscape-font-specification:'Sans, Normal';;text-align:center" id="tspan20086">Touch screen @@ -8298,6 +8123,7 @@ id="tspan291635">Arduino Uno + controls @@ -8361,12 +8186,11 @@ + style="font-size:8.14299965px;line-height:125%;font-family:Sans"> + style="font-size:8.14299965px;line-height:125%;font-family:Sans"> designed with Sketchup printed on RepRap using Repetier-Host diffusor for RGB-LED ring (transparent PLA) output tray (white PLA) + style="font-size:8.31700039px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';display:inline;stroke-width:0.99999994;enable-background:new"> 3d-printed parts Questions? + style="font-size:2.82200003px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';;enable-background:new"> <photobooth@schaffenburg.org> @@ -9009,8 +8826,7 @@ d="m 2792.484,1191.312 c 29.313,-7.414 45.471,75.174 11.98,85.071 -48.239,14.255 -42.852,-77.263 -11.98,-85.071 z m 3.406,-1.815 c -28.637,0.3 -42.445,85.713 -0.664,88.888 45.416,3.45 29.301,-89.188 0.664,-88.888 z" /> @@ -9051,7 +8867,7 @@ @@ -9060,90 +8876,76 @@ id="tspan233163-86-8-3" x="925.35101" y="442.01584" - style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23297167px;font-family:Sans;-inkscape-font-specification:'Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;writing-mode:lr-tb;text-anchor:start">hardware improvements + style="font-style:normal;font-variant:normal;font-weight:bold">hardware improvements ◦ better ventilation: include a fan with a filter + y="447.3071">◦ better ventilation: include a fan with a filter ◦ use power supply instead of batteries for the camera (search for a defective Nikon EN-EL15 to build one instead of buying the original one) ◦ attach speakers inside the cabinet ◦ maybe buy a regulated external flash ◦ modify the existing flash for LED permanent light ◦ camera is too high for shorties: vertically adjustable camera bearing or height-adjustable tripod. easy solution: step ladder / beer crate ◦ use a quartz to improve arduino communication stability ◦ paint / finish cabinet ◦ use an embedded computer ◦ use a capacitive touchscreen ◦ electromagnetic compatibility (metal case) ◦ coin validator software improvements + style="font-size:2.82200003px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';"> + style="font-size:2.82200003px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';"> + style="font-size:118.08399963px;line-height:125%;font-family:Sans;opacity:0.2;fill:#3771c8"> @@ -9296,7 +9098,7 @@ id="tspan233751-9-0-5" x="1227.4159" y="468.04453" - style="-inkscape-font-specification:'Sans, Bold';font-family:Sans;font-weight:bold;font-style:normal;font-stretch:normal;font-variant:normal;font-size:5.64409152px;text-anchor:start;text-align:start;writing-mode:lr;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal">Part + style="-inkscape-font-specification:'Sans, Bold';font-family:Sans;font-weight:bold;font-style:normal;font-stretch:normal;font-variant:normal;font-size:5.64409152px;text-anchor:start;text-align:start;writing-mode:lr;">Part Total @@ -9363,7 +9165,7 @@ @@ -9372,7 +9174,7 @@ id="tspan376210" x="1349.9525" y="468.04453" - style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64409161px;font-family:Sans;-inkscape-font-specification:'Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end;writing-mode:lr-tb;text-anchor:end">Price (€) + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64409161px;font-family:Sans;-inkscape-font-specification:'Sans, Bold';;text-align:end;writing-mode:lr-tb;text-anchor:end">Price (€) ~1000 @@ -9452,7 +9254,7 @@ id="title_costs" y="453.27353" x="1205.5861" - style="font-size:14.11100006px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;enable-background:new"> + style="font-size:14.11100006px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';;enable-background:new"> + style="font-size:5.64400005px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';;letter-spacing:0;word-spacing:0;"> Issues? Issues? + style="font-size:14.11111069px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';;stroke-width:0.9627279px">Issues? there are absolutely none! except maybe: ◦ glaring sunlight ◦ dust ◦ heat (Arduino communication problems, PC crashes, Nikon battery charger overheating) ◦ takes a while to find a good setup for flash and exposure settings ◦ autofocus is unpredictably slow, tends to make errors -> use manual focus @@ -12338,7 +12128,7 @@ namespace(this, "sozi.player", function (exports, window) { {id: "layer_hardware_overview", show_in_frames: "i >= 16 && i < 22 || i == 29"}, {id: "layer_hardware_details", show_in_frames: "i >= 16 && i < 22 || i == 29"}, {id: "layer_woodwork_details", show_in_frames: "i >= 22 && i < 24"}, - {id: "layer_frames", show_in_frames: "i > 22 && i != 27"}, + {id: "layer_frames", show_in_frames: "i > 23 && i != 27"}, {id: "image_fry", show_in_frames: "i == 27"}, {id: "group_software_screen", transform_in_frames: "i >= 15", transform: "translate(-4 40) rotate(-2) skewY(-4.6)", else_transform: "skewY(0)"}, {id: "group_software_ux", transform_in_frames: "i >= 15", transform: "translate(-4 62) rotate(-2) skewY(-7)", else_transform: "skewY(0)"},