輯:David
在工業實踐中,零件和電子設備的裝配,是復雜機械設備正常運轉的關鍵環節。過去,這些部件裝配的基板以平面為主,少數曲面裝配的零件,也多半僅限于簡單結構,而且不好改裝。
對于復雜的三維結構零件,能不能在曲面基板上安裝,同時實現安裝方便,改裝也方便呢?
最近,清華大學張一慧教授團隊提出一種新的組裝策略,解決了這個問題,并將成果發表在最近一期的Science Advance上 。
論文鏈接:https://www.science.org/doi/10.1126/sciadv.abm6922
論文提到,具有工程化三維結構的電子設備,對于摩擦力傳感、寬視場光學成像和流速測量是必不可少的。
最近在機械引導裝配方面的進展,通過控制滾動/折疊/彎曲變形,在高性能材料中建立了確定的三維結構路線。然而,所產生的三維結構大多是在平面基底上形成的,不能直接轉移到另一個彎曲的基底上。
本研究介紹了一種有序的組裝策略,可以在不同的彎曲表面上將二維薄膜轉化為復雜的三維結構。該策略利用預定機械負載,使彎曲的彈性體基底變形為平面/圓柱形結構,然后通過額外的單軸/雙軸預拉伸來驅動扣弦引導的組裝。
通過力學建模,可以準確釋放預定的載荷,實現在曲面上有序組裝復雜三維結構的零件,本文中實例在彎曲基底上組裝了幾十個這類結構的零件。包括可調諧偶極子天線、水管內的流量傳感器、能夠與心臟共形整合的集成電子系統等。
上圖為復雜三維結構在曲面上的有序裝配策略的概念圖。
(A) 用人臉的三維裝飾面具的形成來說明有序裝配策略。右邊的兩張圖片對應的是銀(5米)和PET(75米)雙層中三維結構的有限元分析預測和光學圖像。
(B) 上圖是一個螺旋形基底和螺旋形基底的有限元分析結果,它可以被扭轉和拉伸載荷壓平。底部面板展示了三維葉狀結構在螺旋形基底上的有序組裝過程,以及有限元分析預測和光學成像圖。
(C) 在圓柱形管子的內表面組裝三維結構的概念圖,在與二維前驅體整合之前,基材被斜著裁剪,通過彎曲變形壓平,然后預拉伸。底部面板展示了圓柱形管內分層三維螺旋結構[鋁(2.5米)/PET(30米)]的有序組裝過程,并附有有限元分析預測和光學圖像。
(D) 三維結構在具有莫比烏斯帶形狀的基底上的組裝過程的說明,以及在基底上組裝的蟻狀結構[Al (2.5 m)/PET (30 m)]的有限元分析預測和光學圖像。
上圖為在可被壓平的彎曲表面上組裝的復雜的三維結構。
其中(A) 為馬蹄形彎曲基底的示意圖,它可以通過單軸拉伸壓平。(B) 說明馬蹄形基板上三維帶狀結構組裝過程的光學圖像。(C) 在不同程度的雙軸拉伸下,半球形彈性體基底的生成矩陣輪廓的有限元分析和體驗結果。R0表示初始半球的半徑。(D) 在不同程度的雙軸拉伸下,半球形基體的最大主應變輪廓的有限元分析預測。
(E) 為通過有限元分析預測,不同長度的直帶(Lribbon)裝配在半球形基底上的比較。(F) 組裝在半球形基底的凸面和凹面上的各種三維結構的2D幾何圖形、FEA預測以及實驗圖像。
G到J:裝配在半球形基底上的半橢圓形表面的逆向設計。(K到N)在半球形基底上不同空間位置組裝的具有相同高度(hi)的小半球形的逆向設計。(O和P) 組裝在類腦表面的螺旋形微尺度結構網絡和微小的三維斜方體帶狀微尺度結構的光學圖像。
上圖為復雜三維結構在圓柱/類圓柱形表面的組裝。
(A) 用作彎曲基底的主動脈模型的示意圖,以及通過壓縮屈曲在該基底上的螺旋和雙螺旋結構的組裝過程。
(B) 通過拉伸屈曲在圓柱形基底上裝配不同長度的直條帶的過程。
(C) 各種三維結構組裝在圓柱形基底上的二維幾何圖形、有限元分析預測和實驗圖像。
(D)二維前體、有限元分析預測和通過拉伸屈曲形成的kirigami-inspired鱗片狀三維結構的實驗圖像。
(E) 有限元分析預測和實驗圖像表明,在阿基米德螺旋纖維上的kirigami啟發的尺度結構陣列的有序組裝過程。
(F至H)在螺旋纖維上的不同空間區域組裝具有相同高度和間距的螺旋結構的逆向設計。
本文通訊作者為張一慧博士,清華大學航天航空學院工程力學系長聘教授。
2011年在清華大學航天航天學院工程力學系獲博士學位。2011年至2015年在美國西北大學土木與環境工程系先后擔任Postdoctoral Fellow和Research Assistant Professor。2015年加入清華大學工程力學系,歷任副教授、長聘副教授、長聘教授。
主要研究領域為力學引導的三維微結構組裝,非常規軟材料,柔性可延展電子器件,智能材料與結構力學
至今已獲得授權的中國發明專利5項、美國發明專利3項,出版學術專著1部,發表SCI論文150余篇,其中以通訊作者在《Science》、《Nature》、《Nature Materials》、《Nature Electronics》、《Nature Reviews Materials》、《Nature Communications》、《Science Advances》、《PNAS》、《JMPS》、《Advanced Materials》、《ACS Nano》等期刊發表高水平學術論文80余篇。
兩位共同一作Xue Zhaoguo和Jin Tianqi均來自清華大學工程力學系應用力學實驗室。
Xue Zhaoguo主要負責概念化,數據整理,形式分析,資金獲取,調查,方法學,項目管理,資源,軟件,驗證,可視化,論文寫作、審查和編輯。
Jin Tianqi主要負責概念化、數據管理、形式分析、調查、方法論、軟件、可視化和論文寫作。
參考資料:
https://www.science.org/doi/10.1126/sciadv.abm6922、
http://yihuizhang.org/research.html
融界8月16日消息,有投資者在互動平臺向瀚川智能提問:公司對4680大圓柱電池設備發展有何預判?
公司回答表示:4680大圓柱電池行業已出現新進展。公司將根據行業趨勢與目標客戶的投資擴產情況進行業務籌劃。
本文源自金融界AI電報
一次看到在網上看到一個HTML5的VR街道的應用,印象比較深刻,覺得還挺有意思的。正好最近項目間隙,找點事情搞搞,所以找到一個WebVR的網頁開發框架A-Frame。以下內容整理來自于踏得網的A-Frame中文教程。
虛擬現實(VR)是一種技術,使用頭顯設備產生逼真的圖像,聲音和其他感覺,使得用戶進入身臨其境的虛擬環境。VR允許我們創建無界的世界,人們可以使用手來控制虛擬世界中的行走和互動,仿佛他們被時空傳送到另一個地方。如果說互聯網打破了時空界限,那么虛擬實現將打破虛擬和現實的界限。
A-Frame是一款用來構建虛擬現實(VR)的網頁開發框架,屬于當下流行的開發WebVR解決方案。A-Frame是完全開源的框架,核心思想來自three.js,提供聲明式、可拓展、組件化的編程結構,并且支持主流VR頭顯。
個人理解:通過A-Frame框架,將3D、VR、AR設計中的元素進行標簽化,類似html里面的標簽或者元素。常見到到標簽有:
有些常用的實體標簽進行封裝,比如正方體、圓柱體、球之類。
有標簽,就有標簽的屬性了。常見的屬性值有:
然后就是各種類型的屬性值了。開發的時候就是寫各種元素根據需要向屏幕中進行堆疊就可以了。是不是跟你平時做的html開發沒啥區別。
后面根據你項目需要可以自己寫組件,根據特殊的需求,可以引入各種各樣寫好的插件,滿足你的天馬行空的想象。
就拿上面提到的元素標簽來幾段代碼,做個效果。
<html> <head> <script src="https://aframe.io/releases/0.5.0/aframe.min.js"></script> </head> <body> <a-scene> <a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9"></a-box> <a-sphere position="0 1.25 -5" radius="1.25" color="#EF2D5E"></a-sphere> <a-cylinder position="1 0.75 -3" radius="0.5" height="1.5" color="#FFC65D"></a-cylinder> <a-plane position="0 0 -4" rotation="-90 0 0" width="4" height="4" color="#7BC8A4"></a-plane> <a-sky color="#ECECEC"></a-sky> </a-scene> </body> </html>
效果預覽1
<html> <head> <script src="https://aframe.io/releases/0.5.0/aframe.min.js"></script> <script src="https://unpkg.com/aframe-physics-system@1.4.0/dist/aframe-physics-system.min.js"></script> </head> <body> <a-scene physics> <a-box position="-1 4 -3" rotation="0 45 0" color="#4CC3D9" dynamic-body></a-box> <a-plane position="0 0 -4" rotation="-90 0 0" width="4" height="4" color="#7BC8A4" static-body></a-plane> <a-sky color="#ECECEC"></a-sky> </a-scene> </body> </html>
效果預覽2
<html> <head> <script src="https://aframe.io/releases/0.5.0/aframe.min.js"></script> <script src="https://unpkg.com/aframe-animation-component@3.2.1/dist/aframe-animation-component.min.js"></script> <script src="https://unpkg.com/aframe-particle-system-component@1.0.x/dist/aframe-particle-system-component.min.js"></script> <script src="https://unpkg.com/aframe-extras.ocean@%5E3.5.x/dist/aframe-extras.ocean.min.js"></script> <script src="https://unpkg.com/aframe-gradient-sky@1.0.4/dist/gradientsky.min.js"></script> </head> <body> <a-scene> <a-entity id="rain" particle-system="preset: rain; color: #24CAFF; particleCount: 5000"></a-entity> <a-entity id="sphere" geometry="primitive: sphere" material="color: #EFEFEF; shader: flat" position="0 0.15 -5" light="type: point; intensity: 5" animation="property: position; easing: easeInOutQuad; dir: alternate; dur: 1000; to: 0 -0.10 -5; loop: true"></a-entity> <a-entity id="ocean" ocean="density: 20; width: 50; depth: 50; speed: 4" material="color: #9CE3F9; opacity: 0.75; metalness: 0; roughness: 1" rotation="-90 0 0"></a-entity> <a-entity id="sky" geometry="primitive: sphere; radius: 5000" material="shader: gradient; topColor: 235 235 245; bottomColor: 185 185 210" scale="-1 1 1"></a-entity> <a-entity id="light" light="type: ambient; color: #888"></a-entity> </a-scene> </body> </html>
效果預覽3
自行運行上述代碼試試。真正項目運行當然就需要web服務器了,前面引入JS,中間不斷堆疊需要的實體、特效、交互、動畫就可以了。不需要編譯,直接預覽就可以。
<!-- Production Version, Minified --> <script src="https://aframe.io/releases/0.5.0/aframe.min.js"></script> <!-- Development Version, Uncompressed with Source Maps --> <script src="https://aframe.io/releases/0.5.0/aframe.js"></script>
遇到一個小問題,本地html文件引入同文件資源,居然還產生跨域問題。
A-Frame支持的通用平臺包括:
一些其他的平臺包括:
當然前端開發要關心支持那些瀏覽器了,https://webvr.rocks維護最新列表。目前
A-Frame嘗試通過WebVR polyfill來支持那些未實現WebVR接口的現代瀏覽器,但是由于不是官方支持,所以體驗可能會不佳:
對于平面的3D渲染,A-Frame支持所有實現了WebGL接口的現代瀏覽器:
總之,萬惡的IE
踏得網翻譯是原語,百度翻譯是基元。實際就是個語法糖,把一些常用的實體進行封裝。方便理解學習,降低開發難度,本身也是實體。
比如 <a-box></a-box>實際是<a-entity geometry=”primitive: box;”></a-entity> 并且a-box增加屬性,映射到a-entity的具體屬性值中。
<a-box color="red" width="3"></a-box> //效果跟下方相同 <a-entity geometry="primitive: box; width: 3" material="color: red"></a-entity>
這種語法糖可以通過AFRAME.registerPrimitive(name, definition)進行注冊,方法也很簡單。舉例:
AFRAME.registerPrimitive('a-ocean', { defaultComponents: { ocean: {}, rotation: {x: -90, y: 0, z: 0} }, mappings: { width: 'ocean.width', depth: 'ocean.depth', density: 'ocean.density', color: 'ocean.color', opacity: 'ocean.opacity' } });
其中,name是對應生成的新實體的名字,definition是新實體需要的參數對象。definition參數對象中包含defaultComponents和mappings,defaultComponents是新實體的默認參數,比如先指定下幾何圖形等等,mappings是對外暴露的屬性值及在默認對象中的對應關系。
有沒有一種面向對象開發中,a-entity是基礎類,注冊一個子類,繼承父類,對外暴露特定接口的概念。
實體-組件-系統(entity-component-system),ECS架構是三維游戲中常見且理想的設計模式,Unity就是ECS架構的游戲引擎。A-Frame是基于three.js,并且使用了ECS架構。
ECS的基本定義包括:
對應aframe框架,類比HTML結構理解,就是 systems是html/body標簽,Entities是div標簽,Component是div標簽上的style屬性。
組件上的語法屬性值和style的樣式一樣,可以添加很多。
<a-entity geometry="primitive: sphere; radius: 1.5" light="type: point; color: white; intensity: 2" material="color: white; shader: flat; src: glow.jpg" position="0 0 -5"></a-entity>
把元素堆疊起來是顯示效果,當然我們還需要控制場景中的元素為我們所用。這里還是進行的DOM操作,
查詢遍歷方法
querySelector()和querySelectorAll(),借鑒Jquery。
<html> <a-scene> <a-box id="redBox" class="clickable" color="red"></a-box> <a-sphere class="clickable" color="blue"></a-sphere> <a-box color="green"></a-box> <a-entity light="type: ambient"></a-entity> <a-entity light="type: directional"></a-entity> </a-scene> </html>
聲明對象可以使用下面一些方式進行聲明。
var sceneEl=document.querySelector('a-scene'); //指定一個對象 var redBox=sceneEl.querySelector('#redBox'); //使用ID值 var boxs=sceneEl.querySelectorAll('a-box'); //選擇一類實體 var btns=sceneEl.querySelectorAll('.clickable'); //使用class值 var lights=sceneEl.querySelectorAll('[light]'); //使用屬性值 var els=sceneEl.querySelectorAll('*'); //使用通配符
對象屬性操作
后續整個理解其實和正常的操作dom,使用的一樣的方法和接口。
事件和偵聽器
和瀏覽器事件相同,增加的事件可以通過.emit向外發射,.addEventListener進行偵聽,.removeEventListener刪除偵聽。舉例,空間里面兩個對象碰到了就叫一聲(emit),空間里面管理員聽到了就會去處理。addEventListener就是增加管理員,里面代碼是聽到叫聲要操作的事情。
entityEl.emit('physicscollided', {collidingEntity: anotherEntityEl}, false); //碰了就叫一聲 function collisionHandler (event) { console.log('Entity collided with', event.detail.collidingEntity); }); //要做的時事情 entityEl.addEventListener('physicscollided', collisionHandler); //放偵聽器處理 entityEl.removeEventListener('physicscollided', collisionHandler); //刪除偵聽器
A-Frame中元素也存在父子關系的嵌套,并且父子元素之間的空間關系也是相互影響的。
<a-scene> <a-box> <a-sphere></a-sphere> <a-light></a-light> </a-box> <a-entity id="foo" position="1 2 3"> <a-entity id="bar" position="2 3 4"></a-entity> </a-entity> </a-scene>
其中id為bar的實體的實際空間坐標就變成了(3, 5, 7)。最外層坐標叫世界坐標,元素里面的坐標是相對于父坐標的坐標。
A-Frame查看器是一個用來檢測和修改場景元素的可視化工具。使用<ctrl> + <alt> + i組合快捷鍵來打開/關閉查看器,使用該工具,我們可以:
查看器類似于瀏覽器的DOM查看器,但面向的是3D上下文和A-Frame。
本文算是一個初期的入門理解,更加深入的理解肯定要實戰中去增強理解,好多問題只有在多次實戰運用之后才會又更深入的了解。而且像這種3D內容的開發,更多的其實是空間設計能力,這個才是重點。
人們,技術,未來和進步——未來的3d眼鏡和微芯片植入物或藍色背景的傳感器與網絡聯系圖標
*請認真填寫需求信息,我們會在24小時內與您取得聯系。