劉漢代, 李亞斌, 沈于畫, 張思益, 古 甜, 張克義, 金勝澤
(東華理工大學(xué) 江西省新能源工藝及裝備工程技術(shù)研究中心,江西 南昌 330013)
虛擬實(shí)驗(yàn)室的概念是由美國(guó)William Wolf教授于1989年提出[1]。隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的快速發(fā)展與普及,教育信息化在國(guó)外得到了長(zhǎng)足的發(fā)展,虛擬實(shí)驗(yàn)室的建設(shè)與教學(xué)效果得到了明顯的提升,已成為一種新的教學(xué)形式?;趪?guó)家《教育信息化十年發(fā)展規(guī)劃2011—2020年》[2],2013 以來,我國(guó)重點(diǎn)推動(dòng)了虛擬仿真實(shí)驗(yàn)教學(xué)中心的建設(shè)[3,4],2017年起教育部推動(dòng)了實(shí)驗(yàn)教學(xué)的網(wǎng)絡(luò)化建設(shè)。機(jī)械原理虛擬實(shí)驗(yàn)室的建設(shè)研究符合我國(guó)教育信息化的發(fā)展需求。
傳統(tǒng)的工程實(shí)驗(yàn)室存在設(shè)備更新慢、損壞率高、維護(hù)成本高、設(shè)備數(shù)量不足、使用受時(shí)間和地點(diǎn)限制、共享性較差,且伴有危險(xiǎn)性等常見缺點(diǎn)[5]。為了推進(jìn)東華理工大學(xué)機(jī)械工程實(shí)踐教學(xué)信息化建設(shè),化解教學(xué)內(nèi)容豐富和課程學(xué)時(shí)相對(duì)壓縮之間的矛盾,堅(jiān)持“虛實(shí)結(jié)合,能實(shí)不虛”的建設(shè)原則,研究建設(shè)基于“互聯(lián)網(wǎng)+教育”背景下的機(jī)械原理虛擬實(shí)驗(yàn)室。
機(jī)械原理虛擬實(shí)驗(yàn)室主要利用計(jì)算機(jī)技術(shù)與網(wǎng)頁技術(shù)構(gòu)建一個(gè)具備虛擬仿真功能、在線模擬機(jī)械原理實(shí)驗(yàn)操作的網(wǎng)頁平臺(tái)。該平臺(tái)對(duì)真實(shí)實(shí)驗(yàn)項(xiàng)目是有益的擴(kuò)展與補(bǔ)充。東華理工大學(xué)機(jī)械工程專業(yè)開設(shè)了4項(xiàng)機(jī)械原理實(shí)驗(yàn)項(xiàng)目,分別是: 平面機(jī)構(gòu)運(yùn)動(dòng)簡(jiǎn)圖測(cè)繪實(shí)驗(yàn)、漸開線齒廓范成加工原理實(shí)驗(yàn)、漸開線直齒圓柱齒輪幾何參數(shù)測(cè)定實(shí)驗(yàn)和機(jī)構(gòu)創(chuàng)新組合設(shè)計(jì)實(shí)驗(yàn)。本虛擬實(shí)驗(yàn)室以上述實(shí)驗(yàn)項(xiàng)目為主要對(duì)象,進(jìn)行了機(jī)械原理虛擬實(shí)驗(yàn)室的功能框架設(shè)計(jì),如圖1所示。
實(shí)驗(yàn)介紹分為文字介紹和演示視頻,學(xué)生可通過文字介紹了解每個(gè)實(shí)驗(yàn)的實(shí)驗(yàn)?zāi)康?、?shí)驗(yàn)設(shè)備、實(shí)驗(yàn)內(nèi)容、實(shí)驗(yàn)要求等內(nèi)容,借助于演示視頻熟悉本實(shí)驗(yàn)的操作方法。觀看演示視頻有利于學(xué)生熟悉實(shí)驗(yàn)基本過程,提高真實(shí)實(shí)驗(yàn)教學(xué)質(zhì)量。
該模塊是本虛擬實(shí)驗(yàn)室的核心部分。選擇不同的子實(shí)驗(yàn)項(xiàng)目,網(wǎng)頁跳轉(zhuǎn)到對(duì)應(yīng)的子實(shí)驗(yàn)界面。學(xué)生可以在該網(wǎng)頁瀏覽相關(guān)的實(shí)驗(yàn)內(nèi)容和實(shí)驗(yàn)要求,在瀏覽器中通過鼠標(biāo)等輸入端與網(wǎng)頁進(jìn)行交互,并按照實(shí)驗(yàn)操作指導(dǎo)完成虛擬實(shí)驗(yàn)內(nèi)容。
輔助功能模塊主要包含四項(xiàng)基本功能:虛擬實(shí)驗(yàn)指導(dǎo)、實(shí)驗(yàn)交流反饋、實(shí)驗(yàn)報(bào)告的遞交、技術(shù)支持等。通過這四項(xiàng)功能可以指導(dǎo)學(xué)生正確進(jìn)行實(shí)驗(yàn),同時(shí)方便學(xué)生交流實(shí)驗(yàn)過程中遇到的問題,分享心得感悟。
圖1 機(jī)械原理虛擬實(shí)驗(yàn)室的架構(gòu)設(shè)計(jì)
圖2 機(jī)械原理虛擬實(shí)驗(yàn)室建設(shè)流程圖
機(jī)械原理虛擬實(shí)驗(yàn)室的具體開發(fā)流程如圖2所示。本虛擬實(shí)驗(yàn)室建設(shè)的主要內(nèi)容有:(1)整體架構(gòu)與頁面設(shè)計(jì);(2)各類機(jī)構(gòu)零件、裝配體的三維交互展示;(3)漸開線齒廓范成加工原理的虛擬仿真;(4)虛擬交互操作的實(shí)現(xiàn);(5)虛擬實(shí)驗(yàn)的整合與優(yōu)化。其中,(2)、(3)、(4)項(xiàng)內(nèi)容為本虛擬實(shí)驗(yàn)建設(shè)的主要難點(diǎn),下文將闡述這三項(xiàng)子實(shí)驗(yàn)的實(shí)現(xiàn)方案技術(shù)。
隨著計(jì)算機(jī)技術(shù)的迅速發(fā)展,三維模型在諸多領(lǐng)域得到了廣泛的應(yīng)用。平面機(jī)構(gòu)運(yùn)動(dòng)簡(jiǎn)圖測(cè)繪實(shí)驗(yàn)中需要展示大量的機(jī)構(gòu)模型,學(xué)生對(duì)機(jī)構(gòu)模型進(jìn)行組成和運(yùn)動(dòng)分析,完成機(jī)構(gòu)運(yùn)動(dòng)簡(jiǎn)圖的繪制。本虛擬實(shí)驗(yàn)采用當(dāng)前先進(jìn)的Web GL 3D網(wǎng)頁技術(shù),并利用Three.js等工具實(shí)現(xiàn)三維模型的交互操作,學(xué)生通過鼠標(biāo)等輸入端對(duì)構(gòu)件或機(jī)構(gòu)模型進(jìn)行視角、位置以及大小等方面的控制,以便學(xué)生能全方位地觀察并分析該機(jī)構(gòu)的特征。
漸開線齒輪范成加工原理可以簡(jiǎn)化為齒條與被加工齒輪嚙合的過程,該過程中齒條分度線沿齒坯分度圓作純滾動(dòng),齒條齒廓在齒坯中留下軌跡的包絡(luò)線就是被加工齒輪的齒廓。實(shí)現(xiàn)齒輪范成加工仿真方法如下。
(1)利用Canvas在網(wǎng)頁中編程繪制齒輪基圓、齒根圓、分度圓、齒頂圓。
(2)建立坐標(biāo)系后,建立齒條的坐標(biāo)函數(shù)表達(dá)式,并代碼繪制初始位置齒條。
(3)計(jì)算出齒條沿齒坯做純滾動(dòng)時(shí),不同位置的齒條圖形,并繪制新位置齒條圖形。
(4)不斷重復(fù)步驟(3),直到齒條沿齒胚旋轉(zhuǎn)了360°,完成齒條插齒過程的虛擬仿真。
目前常用的虛擬現(xiàn)實(shí)開發(fā)工具有Unity3D、Virtools、Web GL、Open GL、EON Studio、Cult3D、VR-Platform等[6,7]。由于本虛擬實(shí)驗(yàn)需要實(shí)現(xiàn)網(wǎng)頁上的交互操作,對(duì)數(shù)據(jù)大小有要求。結(jié)合各個(gè)虛擬現(xiàn)實(shí)軟件的特點(diǎn),本虛擬實(shí)驗(yàn)室的建設(shè)主要采用Web GL技術(shù)進(jìn)行開發(fā)。Web GL有利于Java Script和Open GL ES 2.0結(jié)合,Web GL可以為HTML5 中Canvas提供3D加速渲染作用,免去了開發(fā)網(wǎng)頁專用渲染插件的工作,便于在瀏覽器中展示3D場(chǎng)景和裝置模型,也能開發(fā)復(fù)雜的導(dǎo)航和實(shí)現(xiàn)數(shù)據(jù)的可視化。虛擬交互操作的實(shí)現(xiàn)方法如下。
(1)利用專業(yè)建模軟件Pro/E和Solidworks等完成常見機(jī)構(gòu)、齒輪、游標(biāo)卡尺、構(gòu)件庫等實(shí)驗(yàn)裝置的建模,并另存為*.stl格式文件;
(2)通過Three.js API中的STLLoader.js加載*.stl文件[8];
(3)根據(jù)實(shí)驗(yàn)操作步驟,利用Three.js中的Control.js API以及GUI.js API進(jìn)行交互動(dòng)作事件的設(shè)計(jì),并發(fā)布在已構(gòu)建的實(shí)驗(yàn)項(xiàng)目中。
平面機(jī)構(gòu)運(yùn)動(dòng)簡(jiǎn)圖測(cè)繪虛擬子實(shí)驗(yàn)中需要展示大量的三維機(jī)構(gòu)模型,學(xué)生在本實(shí)驗(yàn)中學(xué)習(xí)相關(guān)專業(yè)基礎(chǔ)知識(shí),通過瀏覽三維機(jī)構(gòu)模型和視頻,來繪制機(jī)構(gòu)運(yùn)動(dòng)簡(jiǎn)圖并進(jìn)行結(jié)構(gòu)與運(yùn)動(dòng)分析。
3.1.1 視頻的演示
首先,用Pro/E或Solidworks建立三維機(jī)構(gòu)模型,再進(jìn)行運(yùn)動(dòng)仿真,輸出*.asm動(dòng)畫文件;其次,將*.asm文件轉(zhuǎn)換成*.webm或*.MP4文件格式,利用H5的標(biāo)簽在網(wǎng)頁上展示機(jī)構(gòu)運(yùn)動(dòng)動(dòng)畫。某個(gè)機(jī)構(gòu)運(yùn)動(dòng)動(dòng)畫展示如圖3所示。
圖3 鉸鏈四桿機(jī)構(gòu)運(yùn)動(dòng)動(dòng)畫展示
3.1.2 三維模型的交互展示
先利用Solidworks建立機(jī)構(gòu)模型,保存為*.stl格式文件,再利用Three.js中的STLLoader.js加載模型文件,最后通過JavaScript中OrbitControls.js對(duì)模型進(jìn)行編程控制,可實(shí)現(xiàn)模型的旋轉(zhuǎn)、縮放、移動(dòng)等交互操作。某個(gè)典型機(jī)構(gòu)模型展示如圖4。其中實(shí)現(xiàn)交互展示的關(guān)鍵代碼為:
camera=new THREE.PerspectiveCamera(60,window.innerWidth/window.innerHeight,1,10000);
scene=new THREE.Scene();
helper=new THREE.GridHelper(160,10);
loader=new THREE.STLLoader();
mesh.position.set(-50,-50,-20);
mesh.rotation.set(0,0,0);
mesh.scale.set(0.5,0.5,0.5);
controls=newTHREE.OrbitControls(camera,renderer.domElement);
圖4 槽輪機(jī)構(gòu)三維模型交互展示
首先,建立被加工齒輪齒坯的齒頂圓、分度圓、齒根圓和基圓,以模數(shù)m、齒數(shù)Z、壓力角、變位系數(shù)x、顯示倍數(shù)等為輸入?yún)?shù),編制網(wǎng)頁計(jì)算程序。其中,齒數(shù)輸入的關(guān)鍵代碼如下:
var cxt=canvas.getContext(′2d′); cxt.strokeStyle=′red′;
cxt.arc(ox,oy,_d/2*_a,0,2*Math.PI);
cxt.arc(ox,oy,_df/2*_a,0,2*Math.PI);
其次,通過幾何關(guān)系,計(jì)算出齒條在沿齒坯分度圓作純滾動(dòng)時(shí)切點(diǎn)的坐標(biāo),然后繪制出此時(shí)刻齒條的結(jié)合圖形,再利用循環(huán)語句表達(dá)齒條范成加工齒輪的過程。其關(guān)鍵代碼如下:
cxt.translate(ox+_d/2*_a*Math.sin(j*1*Math.PI/180),oy+_d/2*_a*Math.cos(j*1*Math.PI/180));
cxt.rotate(-(1*j)*Math.PI/180);
cxt.lineTo(-1.5*k-h*Math.tan(_alpha*Math.PI/180)+i*_mm*Math.PI-j*_dd*Math.PI/360,h/2+_x);
cxt.lineTo(-0.5*k-h*Math.tan(_alpha*Math.PI/180)+i*_mm*Math.PI-j*_dd*Math.PI/360,h/2+_x);
cxt.lineTo(-0.5*k+i*_mm*Math.PI-j*_dd*Math.PI/360,-h/2+_x);
cxt.lineTo(0.5*k+i*_mm*Math.PI-j*_dd*Math.PI/360,-h/2+_x);
最后,對(duì)實(shí)驗(yàn)界面輸入?yún)?shù)和輸出參數(shù)及操作按鈕進(jìn)行網(wǎng)頁編程開發(fā)。某參數(shù)(m=10、Z=12和x=0)齒輪的范成加工虛擬模擬效果如圖5所示。
圖5 齒輪范成加工原理過程的虛擬仿真
本實(shí)驗(yàn)主要對(duì)齒輪的公法線長(zhǎng)度、齒頂圓和齒根圓直徑以及弦齒厚等幾何參數(shù)進(jìn)行測(cè)量。這3項(xiàng)測(cè)量的交互操作相似,現(xiàn)僅對(duì)齒頂圓測(cè)定交互操作實(shí)現(xiàn)開發(fā)進(jìn)行說明如下。
首先,利用專業(yè)建模軟件Pro/E和Solidworks等完成被測(cè)實(shí)驗(yàn)齒輪、游標(biāo)卡尺、齒厚游標(biāo)卡尺等實(shí)驗(yàn)裝置的建模,并另存為*.stl格式文件。
其次,通過Three.js API中的STLLoader.js模塊加載上一步生產(chǎn)的*.stl文件。
第三,根據(jù)實(shí)驗(yàn)操作步驟,利用Three.js中的Control.js API以及GUI.js API進(jìn)行交互動(dòng)作事件的設(shè)計(jì),并發(fā)布在已構(gòu)建的項(xiàng)目中。其中關(guān)鍵代碼如下:
loader.load(′model/gear.stl′, function (geometry) {
varmaterial=new THREE.MeshPhongMaterial({ color: 0xff5533, specular: 0x111111, shininess: 200 });
mesh2.geometry = geometry;
mesh2.material = material;
mesh2.position.set(0, -20,-1);
mesh2.rotation.set(0, Math.PI/2, 0);
mesh2.scale.set(0.5, 0.5, 0.5);
scene.add(mesh2);
});
stats = new Stats();
var controls = new THREE.OrbitControls(camera, renderer.domElement);
window.addEventListener(′keydown′, function (event) { switch (event.keyCode) {
case 1:
transformControl.setSpace(transformControl.space
= "local" "world":"local");
break;
case 2:
transformControl.setTranslationSnap(100);
transformControl.setRotationSnap(THREE.Math.
degToRad(15));
break;}});
本子虛擬項(xiàng)目開發(fā)后可實(shí)現(xiàn)交互操作如下:(1)轉(zhuǎn)動(dòng)鼠標(biāo)滾輪可以控制測(cè)量?jī)x器和齒輪的縮放;(2)按住鼠標(biāo)左鍵任意角度旋轉(zhuǎn)測(cè)量?jī)x器和齒輪;(3)按住鼠標(biāo)右鍵實(shí)現(xiàn)測(cè)量?jī)x器和齒輪的平移;(4)Positoin控制條實(shí)現(xiàn)制游標(biāo)卡尺的測(cè)量,并輸入精確達(dá)到0.01 mm。齒頂圓直徑的虛擬交互測(cè)量如圖6所示。
機(jī)構(gòu)創(chuàng)新組合設(shè)計(jì)實(shí)驗(yàn)的是綜合性創(chuàng)新設(shè)計(jì)實(shí)驗(yàn),以提高學(xué)生的綜合設(shè)計(jì)實(shí)踐能力。本實(shí)驗(yàn)主要是演示實(shí)驗(yàn)中包含的零件庫,學(xué)生通過旋轉(zhuǎn)、縮放、移動(dòng)三維零件模型,全方位地觀察并分析該零部件的特點(diǎn),在根據(jù)已有的零件進(jìn)行機(jī)構(gòu)的創(chuàng)新組合,然后利用常用的建模軟件Pro/E和Solidworks等進(jìn)行機(jī)構(gòu)的裝配和運(yùn)動(dòng)分析。其開發(fā)主要步驟如下:先利用Solidworks建立所有零件模型,保存為*.stl格式文件,再利用Three.js中的STLLoader.js加載模型文件,最后通過JavaScript中OrbitControls.js對(duì)模型進(jìn)行編程控制,可實(shí)現(xiàn)模型的旋轉(zhuǎn)、縮放、移動(dòng)等操作。零件庫虛擬模型庫展示如圖7所示。其中關(guān)鍵代碼如下:
loader.load(′xie_gear1.stl′,function(geometry){
var material=new THREE.MeshPhongMaterial({ color: 0xeeeeee, specular: 0x111111, shininess: 200 });
圖6 齒頂圓直徑的虛擬交互測(cè)量
圖7 機(jī)構(gòu)創(chuàng)新組合設(shè)計(jì)虛擬實(shí)驗(yàn)零件庫的展示
在我國(guó)高等教育信息化建設(shè)和“互聯(lián)網(wǎng)+”的大環(huán)境下,將新興的虛擬現(xiàn)實(shí)技術(shù)有效地融入實(shí)踐教學(xué)是具有可期的前景和重大的改革意義。本機(jī)械原理虛擬實(shí)驗(yàn)室的建設(shè)利用Pro/E、Solidworks三維建模技術(shù)、Web GL和JavaScrip等虛擬技術(shù)進(jìn)行了相關(guān)虛擬實(shí)驗(yàn)項(xiàng)目的建設(shè)研究。該虛擬實(shí)驗(yàn)項(xiàng)目豐富了實(shí)踐教學(xué)內(nèi)容,擴(kuò)展了實(shí)踐教學(xué)方式,便于學(xué)生隨時(shí)隨地預(yù)習(xí)和復(fù)習(xí)實(shí)驗(yàn),提高了實(shí)驗(yàn)效率和教學(xué)質(zhì)量,彌補(bǔ)了傳統(tǒng)真實(shí)實(shí)驗(yàn)的諸多缺點(diǎn),在應(yīng)用中實(shí)現(xiàn)了“虛實(shí)結(jié)合,能實(shí)不虛”的重要建設(shè)原則。本虛擬實(shí)驗(yàn)項(xiàng)目開發(fā)方法可供其他同類工程的虛擬仿真實(shí)驗(yàn)項(xiàng)目建設(shè)參考。