Motivation - 采用Unity作為孿生技術(shù)棧的經(jīng)歷?
最開始想要利用Ansys的Twin Builder模塊來進(jìn)行數(shù)字孿生的開發(fā),但是Ansys 的Twin Builder在部署的時(shí)候,需要license,要獲得license所要花費(fèi)的價(jià)格是難以接受的。 后來想要利用QT+VTK的方式來進(jìn)行開發(fā),因?yàn)镼T是用來開發(fā)GUI程序比較常用的框架,加上自己所要研究的對(duì)象需要實(shí)時(shí)反映三維的應(yīng)力應(yīng)變的情況,VTK是一個(gè)專門做可視化的包,也在網(wǎng)上查到Paraview這個(gè)非常強(qiáng)大的科學(xué)可視化的軟件就是基于VTK所編寫的,我還專門去研究了一下paraview的源碼編譯過程,發(fā)現(xiàn)最后雖然實(shí)現(xiàn)了paraview的編譯,但是想要從paraview當(dāng)中實(shí)時(shí)拆解一些我所需要的模塊進(jìn)行使用的時(shí)候,幾乎不可能,可能是自己的水平還不到家。在使用QT開發(fā)的過程中,發(fā)現(xiàn)要達(dá)到自己所想要的孿生的效果所需要的時(shí)間成本是非常大的。后面再B站上以及跟進(jìn)大工宋學(xué)官老師的研究,發(fā)現(xiàn)有不少人在使用Unity來進(jìn)行數(shù)字孿生模型的構(gòu)建,自己就嘗試使用Unity來進(jìn)行了,從11號(hào)下載Unity完畢到今天15天的時(shí)間里,也稍微做一個(gè)總結(jié)。
Unity有什么優(yōu)勢?
Unity 作為一個(gè)游戲引擎,他最直接的優(yōu)勢就是為我提供了一個(gè)平臺(tái)或框架,讓我很多東西是不用從0開始的。比如說他的UGUI系統(tǒng),游戲物體掛載代碼來實(shí)現(xiàn)對(duì)應(yīng)的行為,動(dòng)畫效果等等。入門是具有一定的成本,但是相較于可以實(shí)現(xiàn)的效果來說,是值得去探索和嘗試一下的。
現(xiàn)在實(shí)現(xiàn)地怎么樣了?
首先放幾個(gè)動(dòng)圖:
(1) 首先是可視化的界面
主要是甲方還是想要一些比較炫酷的效果,想要我給對(duì)方做一個(gè)demo,這張圖只是一個(gè)前端,主要是購買了unity官方商店的一個(gè)數(shù)據(jù)可視化的包,就很容易實(shí)現(xiàn),大概花了一天的時(shí)間就行,后面接入真實(shí)的數(shù)據(jù)就可以了。 但官方商店太貴了,┭┮﹏┭┮,幾百大洋就沒了。
想著可以回點(diǎn)血,我也將資源放在淘寶上了, 有需要的小伙伴可以自取(勿噴,一個(gè)學(xué)生拿將近一個(gè)月工資買了也真的很心疼嗚嗚,之前的插件其實(shí)也是花幾百大洋買的,但都是免費(fèi)分享的):
【淘寶】https://m.tb.cn/h.5nncs1Yn6yWUUal?tk=fqssWTelLsU CZ3457 「Unity3D 可視化素材」
點(diǎn)擊鏈接直接打開 或者 淘寶搜索直接打開
另外給大家避個(gè)坑,這家店賣的不是Unity里面要用的包,而是一些psd資源,后面還是需要自己碼代碼,基本上沒什么用。
好了,廣告就到這里了。
(2)應(yīng)力應(yīng)變實(shí)時(shí)可視化
由于我的電腦跑整個(gè)機(jī)架的模型還是有點(diǎn)太慢了,就將其中的一個(gè)零件單獨(dú)拿出來。上面一張圖是Abaqus這根零件的變形云圖,我將相關(guān)的數(shù)據(jù)抽取出來在unity當(dāng)中重建了模型,并根據(jù)節(jié)點(diǎn)的數(shù)值大小重新進(jìn)行了一下渲染,如下面第二張圖所示,可以看到在Unity當(dāng)中重建還是可以接受的。
上面的圖則說明順利地完成了從Abaqus模型轉(zhuǎn)換到Unity的過程。
下面兩張動(dòng)圖則是為了驗(yàn)證在Unity當(dāng)中能夠順利完成實(shí)時(shí)地渲染。第一個(gè)動(dòng)圖則是在mesh節(jié)點(diǎn)所有數(shù)據(jù)上加了一個(gè)正弦函數(shù),所以有了一個(gè)明暗的變化。
下面的動(dòng)圖則是將四個(gè)不同分量進(jìn)行一個(gè)實(shí)時(shí)地轉(zhuǎn)換,這個(gè)倒是比較簡單。
經(jīng)過上面的試驗(yàn),至少說明在Unity當(dāng)中已經(jīng)具備實(shí)時(shí)顯示的基礎(chǔ)了;如果不再考慮訓(xùn)練代理模型來進(jìn)行實(shí)時(shí)數(shù)據(jù)更新,最粗暴的方式就是在數(shù)據(jù)庫當(dāng)中儲(chǔ)存一定數(shù)量的云圖數(shù)據(jù)案例,按照加載情況進(jìn)行實(shí)時(shí)地調(diào)用就是(雖然這應(yīng)該不算是真正的數(shù)字孿生)。
以上就是目前的進(jìn)展了,而后續(xù)也打算研究一下代理模型的一些研究。文章來源:http://www.zghlxwxcb.cn/news/detail-791136.html
當(dāng)前的進(jìn)展當(dāng)中遇到了哪些難點(diǎn)?
首先是需要熟悉和了解unity的運(yùn)行機(jī)制,如怎么理解在一個(gè)Gameobject上掛代碼?如何控制Unity的相機(jī)、動(dòng)畫、Shader等等,這些跟著B站的一些教程走還是比較容易地。
其次是Abaqus模型怎么導(dǎo)入到Unity當(dāng)中.如果只是外觀模型的話,可以首先導(dǎo)入solidwork里面,然后再導(dǎo)入到3dmax轉(zhuǎn)化為fbx模型;但是,總有個(gè)但是,如果需要渲染應(yīng)力應(yīng)變的云圖的話,那就需要根據(jù)有限元仿真數(shù)據(jù)和Unity的模型構(gòu)建機(jī)制來重構(gòu)模型的頂點(diǎn)和三角面,并且編寫Unity的Shader代碼來根據(jù)模型節(jié)點(diǎn)上的分析數(shù)據(jù)(如應(yīng)變數(shù)據(jù))來對(duì)模型進(jìn)行一個(gè)實(shí)時(shí)渲染。文章來源地址http://www.zghlxwxcb.cn/news/detail-791136.html
總結(jié)一下工作流程
- 首先提取Abaqus當(dāng)中的節(jié)點(diǎn)信息;
- 編寫腳本解析提取出來的文本信息;
- 根據(jù)解析的數(shù)據(jù)來構(gòu)建unity的mesh,里面包含頂點(diǎn)位置、頂點(diǎn)數(shù)值和面片信息;
- 編寫Shader來根據(jù)頂點(diǎn)數(shù)值進(jìn)行模型的渲染,完成在Unity當(dāng)中模型的重構(gòu)。
如果有需要相關(guān)的源碼借鑒和參考的小伙伴可以私信,不過稍微有償噢~
到了這里,關(guān)于數(shù)字孿生-使用Unity構(gòu)建能實(shí)時(shí)顯示應(yīng)力應(yīng)變的孿生模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!