Názor: 3D tiskárny dávno nejsou jen na cetky

11. 12. 2013

Sdílet

Autor: © Prusa Research
O 3D tisku se už dlouho mluví jako o nové průmyslové revoluci a není se čemu divit. Možná ještě dnes nezasahuje do každodenních životů běžných lidí a je stále spíše doménou nadšenců, i díky snižování cen 3D tiskáren se ale tento fakt začíná pomalu měnit.

Dnes už lze na 3D tiskárnách vytisknout téměř cokoliv, na co si dovedete vzpomenout, jídlo nevyjímaje. Doba, kdy byl 3D tisk předraženým způsobem, jak přijít k umělohmotné cetce, je už dávno minulostí. Díky sedmi klíčovým pokrokům 3D tisku se zdá být téměř jisté, že opravdová revoluce ve výrobě na sebe nedá čekat příliš dlouho.

1. Tisk z kovu

Prvním z těchto významných pokroků v 3D tisku je domácí tisk z kovu. Tato možnost 3D tiskáren moc známá není, a to i přesto, že je tisk kovů už pár let možný, ovšem vinou vysoké ceny je dostupný pouze velkým firmám spíše než domácím kutilům. Nyní je však k dostání open-sourcová 3D tiskárna, která je schopná výroby kovu za „pouhých“ 1500 dolarů, což tuto výrobu pomalu přibližuje i do domácností. Zatím je však pouhým prototypem na Michiganské technické univerzitě, pod vedením Joshui Pearce, ale vzhledem k veřejnému vydání tiskárny jako open-source se očekává její velmi rychlý vývoj. „Do měsíce někdo vyrobí lepší tiskárnu než ta naše, garantuji to,“ řekl Pearce.

2. Tisk zbraní

Dalším znakem toho, že je 3D tisk na vzestupu jsou zbraně a diskuze kolem nich. V USA již na toto nebezpečí zareagovali rozšířením zákona o zbraních o paragraf, který říká, že si lidé zbraně tisknout nesmějí, pokud nemají licenci. Otázkou však je, jak chce takový zákaz někdo prosadit.

3. Replikace tiskáren

Dalším z nedávno dosažených pokroků 3D tiskáren je projekt The RepRap, tedy 3D tiskárna, která dovede vytisknout cokoliv – klidně i svou kopii. Tiskárna může být vyrobena z běžně dostupných a relativně levných materiálů. Pod tento projekt patří i česká 3D tiskárna Prusa i3, která je k dostání za zhruba 24tisíc korun.

4. Tisk potravin

Pro mě je však nejzajímavějším projektem kolem 3D tiskáren výzkum NASA, který se snaží zjistit, zda by šlo tyto tiskárny používat i k výrobě jídla, na což získalo výzkumné středisko grant ve výši 125 tisíc dolarů. Peníze využívá na vytvoření tiskárny, která by byla schopná produkovat chutné a výživné jídlo pro astronauty. Tiskárna by měla k jeho „uvaření“ používat kombinaci prášků a digitálních receptů. Prvním cílem tohoto projektu je vytisknutí pizzy.

5. Maloobchodní prodej 3D tiskáren

Ve Velké Británii už 3D tiskárny nejsou pouhou záležitostí internetu, ale dají se pořídit i v nákupních střediscích, kde se prodávají jejich součástky (přibližně za 700 liber) a materiál potřebný k tisku. Sestavit takto koupenou tiskárnu trvá přibližně dvě hodiny a vytisknout na ní kryt ke smartphonu zabere kolem 30 minut.

6. 3D skenery

Dalším krokem po 3D tisku je výroba zatím stále ještě nedostupných 3D skenerů. Nejdostupnějším z nich je zatím Rubicon 3D, který je k dostání za cenu kolem 200 liber. Rubicon 3D používá webkameru společně se dvěma lasery, díky čemuž může naskenovat téměř jakýkoliv malý objekt a vytvořit 3D model ve vysokém rozlišení, který je připraven k tisku nebo k manipulaci na počítači.

7. 3D tisk jako služba

Posledním znamením toho, že máme 3D tisk brát vážně jsou společnosti, které 3D tisk nabízí jako službu, mezi které patří například Asda, nebo u nás Svět 3D tisku. Stačí vejít do obchodu s věcí, kterou chcete replikovat (musí být větší než bota) a po jejím naskenování si zvolit barvy a počkat pár dní, než vám ji společnost doručí domů.


Markéta Gajdošová

Cyber25

Markéta Gajdošová

Autorka se zajímá o teorii IT i všech příbuzných oborů. Zaměřuje se na nejnovější technologie a snaží se je také využívat.

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }