国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于OpenGL ES的齒輪參數(shù)化建模及其移動端可視化研究

2017-05-17 09:02:29張海林鄒欣孫津原

張海林++鄒欣++孫津原

摘要:構(gòu)建基于OpenGL ES的漸開線圓柱齒輪模型,解決在移動設(shè)備上參數(shù)化生成漸開線圓柱齒輪模型困難和漸開線圓柱齒輪模型在移動端可視化流程等問題。分析漸開線圓柱齒輪形成原理,根據(jù)移動設(shè)備圖形渲染庫OpenGL ES渲染方式確定漸開線圓柱齒輪建模數(shù)據(jù)的方法進行研究。總結(jié)出漸開線圓柱齒輪的參數(shù)化建模關(guān)鍵技術(shù)和移動端可視化流程,以Unity3D為開發(fā)環(huán)境,制作出在移動設(shè)備上展示漸開線圓柱齒輪的應(yīng)用程序(APP)。驗證了基于OpenGL ES的漸開線圓柱齒輪參數(shù)化建模在移動設(shè)備上的優(yōu)越性,為構(gòu)建其它機械構(gòu)件模型提供了方法,同時探索了機械類知識在移動設(shè)備上的傳播。

關(guān)鍵詞:OpenGL ES;漸開線圓柱齒輪;參數(shù)化建模;移動端可視化

中圖分類號:TH132.41 文獻標(biāo)識碼:A 文章編號:1007-9416(2017)03-0077-05

機械類基礎(chǔ)課中有很多抽象的原理知識不易被學(xué)生接收,又不能隨意刪減,然而在真實的情景中講述就能輕松釋義[1]。虛擬模型庫因其三維模型造型逼真、控制靈活而在教學(xué)中起到了一定的作用[2]。但是,已開發(fā)的虛擬模型庫都是基于PC 平臺開發(fā)的,而由于PC 平臺的在便攜性方面的限制,使得虛擬模型庫的應(yīng)用也受到了極大的限制。手持移動設(shè)備的出現(xiàn),為解除這種束縛提供了條件,該類設(shè)備最重要的屬性即是其便攜性,而且隨著硬件水平的不斷提高,運行平臺的實用性也日益增強,現(xiàn)在越來越多的應(yīng)用程序(APP)在移動設(shè)備平臺上得以實施。若采用在工程軟件中建漸開線圓柱齒輪模型,再把這些模型加載到APP中,會導(dǎo)致APP的安裝包過大,并且由于齒輪的參數(shù)不同,要把所有的漸開線圓柱齒輪顯示在手持移動設(shè)備上,需要建幾百個齒輪。本論文以漸開線圓柱齒輪形成原理為基礎(chǔ),以移動設(shè)備的圖形渲染庫OpenGL ES為工具進行研究,得出漸開線圓柱齒輪建模關(guān)鍵技術(shù),該技術(shù)可應(yīng)用到各種開發(fā)環(huán)境中??偨Y(jié)出移動端可視化流程,采用參數(shù)化設(shè)計的方法制作出可以在手持移動設(shè)備上使用的APP。參數(shù)化設(shè)計方法就是將模型中的定量信息變量化,使之成為任意調(diào)整的參數(shù)。對于變量化參數(shù)賦予不同的數(shù)值,即可得到不同大小和形狀的零件模型[3]。參數(shù)化設(shè)計大大減少了重復(fù)設(shè)計量、縮短了設(shè)計周期和提高了設(shè)計效率,使機械類構(gòu)件完美的呈現(xiàn)在移動設(shè)備上[4]。

1 齒輪參數(shù)化建模關(guān)鍵技術(shù)及過程

1.1 OpenGL ES繪圖原理

OpenGL ES 是一個跨平臺的圖形庫,是專門為嵌入式系統(tǒng)(如Android系統(tǒng)、IOS系統(tǒng)等)而設(shè)計的,提供了功能完善的 2D 和3D圖形應(yīng)用程序接口API,創(chuàng)造了軟件與圖形間加速靈活強大的底層交互接口[5]。OpenGL ES 2.0及更高版本的渲染管線可編程,其繪圖原理如圖1所示。

OpenGL ES中支持的繪制方式大致分3類,包括點、線段、三角形,每類中包括一種或多種具體的繪制方式[6],本論文采用GL_TRIANGLES,此方式是三角形類之一,其將傳入渲染管線的一系列頂點按照順序每3個組織成一個三角形進行繪制。如圖2所示,所繪矩形由三角形V0V1V2、V3V4V5而得,其中頂點V2、V5以及頂點V1、V3位置相同。

根據(jù)OpenGL ES繪圖原理和本論文采用的GL_TRIANGLES方式,在齒輪參數(shù)化建模中,需要確定頂點數(shù)組、法向量數(shù)組和顏色數(shù)組。其中頂點數(shù)組控制齒輪形狀,法向量數(shù)組控制齒輪對燈光的反射,顏色數(shù)組控制齒輪顏色。設(shè)三個數(shù)組類型均為單精度浮點型,頂點數(shù)組命名為Vertex_List,法向量數(shù)組命名為Normal_List,顏色數(shù)組命名為Color_List。

1.2 齒輪參數(shù)化建模數(shù)據(jù)的確定

根據(jù)設(shè)定目標(biāo),確定齒輪參數(shù)化建模所需要的參數(shù)。本論文設(shè)定的目標(biāo)是構(gòu)建標(biāo)準(zhǔn)漸開線圓柱齒輪;能動態(tài)生成直齒輪和斜齒輪兩種類型,斜齒輪的螺旋角可以調(diào)節(jié);通過調(diào)節(jié)模數(shù)、齒數(shù)、齒輪厚度改變齒輪的輪廓特征,通過調(diào)節(jié)顏色的RGB值改變齒輪顯示顏色,通過調(diào)節(jié)齒孔半徑,給齒輪開不同大小的孔或槽,具體的參數(shù)名稱、參數(shù)代號,參數(shù)取值如表1所示。

本論文構(gòu)建標(biāo)準(zhǔn)漸開線圓柱齒輪,因此對部分參數(shù)取標(biāo)準(zhǔn)值,該參數(shù)在計算中始終是常數(shù)。另有一些基本參數(shù)根據(jù)表1中輸入的參數(shù)而確定,具體參數(shù)名稱、參數(shù)代號、計算公式如表2所示。

1.3 齒輪繪制過程

如圖3所示,為展角,為壓力角,為基圓半徑,為漸開線在任意點K(1、2、3等)的向徑。漸開線極坐標(biāo)方程如公式(1)[7],將基圓圓心作為原點,圓心與漸開線的起始點A的連線作為x軸,與x軸垂直的方向作為Y軸建立笛卡爾坐標(biāo)系,按照漸開線形成原理得出漸開線的方程如公式(2)[8],其中。

(1)

(2)

當(dāng)時,齒根圓包含于基圓,齒廓曲線必然由徑向直線和漸開線兩部分組成,且齒廓曲線處于基圓與齒根圓之間的為徑向直線,處于基圓與齒頂圓之間的為漸開線;當(dāng)時,齒根圓包含基圓,齒廓曲線全為漸開線[9]。由此可以確定公式(2)中的取值范圍,當(dāng)時,最小取值為,取最大值的條件為,即,其中和取值根據(jù)公式(3);當(dāng)時,最小取值的條件為,即,其中和取值根據(jù)公式(4),的最大值與時的最大值一樣。

(3)

(4)

本論文以時為例,的取值范圍為[],設(shè)其長度為,將t平均分成n份,將、、到帶入公式(2),求出點1、2、3到n的坐標(biāo)。將坐標(biāo)點按三角形排列方式,102、203、304等所有坐標(biāo)點放入Vertex_List,當(dāng)n取合適值時,就可以得到平滑的漸開線面,如圖4中的①。

當(dāng)計算出一個齒的右部分頂點后,采用對稱的方法求出左部分的頂點。首先確定對稱直線,在圖3笛卡爾坐標(biāo)系中,直線就是該直線,設(shè)斜率角為,取值根據(jù)公式(5),設(shè)該直線的斜率為,則該直線方程為。從Vertex_List中遍歷每個點,根據(jù)公式六求出對應(yīng)點,增加到Vertex_List中,得到圖4中②部分的區(qū)域,b區(qū)域為三角形形狀,根據(jù)邊界點可以得出。

(5)

(6)

設(shè)齒槽對應(yīng)圓心角為,當(dāng)時,;當(dāng)時,。根據(jù)公式(7),計算相關(guān)坐標(biāo)點增加到Vertex_List中,得到圖4中③部分的c區(qū)域,其中的取值范圍為[]。

(7)

當(dāng)繪制好一個完整齒后,需要復(fù)制出z-1個齒,這些齒是以原點為中心,根據(jù)公式(8),旋轉(zhuǎn)復(fù)制而得,并將復(fù)制后的坐標(biāo)增加到Vertex_List中,繪制的結(jié)果如圖5中⑤,其中的取值范圍為[][10]。

(8)

這樣,齒輪的正面繪制完,將所得數(shù)組命名為Vertex_List_1,并將所有頂點的坐標(biāo)值設(shè)置為。齒輪側(cè)面的數(shù)組命名為Vertex_list_2,齒輪背面數(shù)組命名為Vertex_list_3。在斜齒輪中,設(shè)齒輪正面的齒與齒輪背面的齒投影夾角為,根據(jù)公式九和公式八,對Vertex_List_1中的頂點計算,并將得到的每一個三角形頂點按順時針重新排列,坐標(biāo)值設(shè)置為,存入到Vertex_List_3,其中時,為直齒輪。將Vertex_List_1和Vertex_List_3中對應(yīng)位置的頂點按照三角形方式排列,存入Vertex_List_2中,即得到齒輪側(cè)面數(shù)組。將Vertex_List清空,將Vertex_List_1、Vertex_List_2、Vertex_List_3按照順序存入Vertex_List中,至此,齒輪頂點數(shù)組制作完成,繪制后的效果如圖5中的⑥。

(9)

根據(jù)存入到Vertex_List中的點,計算齒輪面法向量,存放到Normal_List中。計算方法是從Vertex_List中提取一個三角形的三個點,設(shè)為點A、B、C,由點A點B構(gòu)造向量,由點A點C構(gòu)造向量,則點A、點B、點C的向量是,存放到Normal_List中。然后遍歷Vertex_List,計算所有對應(yīng)點的向量,存放到Normal_List中。本論文研究的齒輪,每個頂點的顏色相同,并且由光的三原色R、G、B確定,Color_List中存放所有頂點的R、G、B值,其中R、G、B的值由參數(shù)傳入而確定。

2 移動端可視化流程

移動端可視化流程,如圖6所示,第一步設(shè)定目標(biāo),即制作的APP要滿足的功能。第二步,確定齒輪參數(shù)化建模數(shù)據(jù),根據(jù)第一步設(shè)定的目標(biāo),參數(shù)分為固定參數(shù)和可變參數(shù),其中可變參數(shù)需要通過界面交互傳入,因此界面設(shè)計除滿足美學(xué)要求外,也要滿足可變參數(shù)的改變。第三步,選擇移動端APP開發(fā)工具,如針對Android系統(tǒng)開發(fā)的Eclipse軟件、針對iOS系統(tǒng)開發(fā)的XCode軟件、跨平臺開發(fā)軟件Cocos2d-x、Unity3d、Unreal Engine 4等,不同軟件所使用的開發(fā)語言不同,如Eclipse使用Java,Unreal Engine 4使用C++。第四步,根據(jù)本論文第一節(jié)齒輪參數(shù)化建模關(guān)鍵技術(shù)及過程和選擇的開發(fā)工具及其相應(yīng)的開發(fā)語言,確定頂點數(shù)組(Vertex_List)、法線數(shù)組(Normal_List)和顏色數(shù)組(Color_List)具體值。第五步,結(jié)合app界面設(shè)計進行程序設(shè)計。第六步,圖形測試,檢查是否有剖面,形狀、顏色是否正確等。第七步,針對移動端,生成相應(yīng)的APP文件。

下面展示移動端可視化流程的一種案例:

第一步,本案例設(shè)定目標(biāo)為能展示標(biāo)準(zhǔn)直齒、斜齒漸開線圓柱齒輪,其中斜齒輪螺旋角可以改變;能夠在齒輪中間開圓孔和槽孔,孔徑大小可以改變;齒輪模數(shù)、齒數(shù)、齒厚、顏色可以改變;可以遠(yuǎn)近觀察齒輪。第二步,根據(jù)第一步設(shè)定的目標(biāo),除需要表1和表2,需要增減直齒輪和斜齒輪切換參數(shù),以及遠(yuǎn)近觀察參數(shù),由此APP的界面設(shè)計如圖7所示,圖中間部分放齒輪模型。第三步,本案例選Unity3D為開發(fā)工具、C#為開發(fā)語言。第四步,圖8所示,為將公式三轉(zhuǎn)換成代碼形式,確定漸開線面的頂點,形狀如圖4中的①。按照此方法,計算出所有部分的頂點后,放入Vertex_List中,得到頂點數(shù)組。法線數(shù)組(Normal_List)和顏色數(shù)組(Color_List)方法一致。第五步,進行程序設(shè)計,如圖9所示。首先在Unity場景編輯器中建立GameObject,命名為Gear_Watch;其次,為Gear_Watch構(gòu)建腳本(Script),命名為GearMode.cs,腳本文件中的變量與第二步確定的相對應(yīng),并與界面設(shè)計的圖標(biāo)進行關(guān)聯(lián);最后,為Gear_Watch添加材質(zhì)(Material),命名為Material_Gear.mat,材質(zhì)的著色器(shader)選擇專門為本案例編寫的Shader_VF_Gear.shader,控制齒輪的顏色。開發(fā)工具選擇的不同,頂點數(shù)組(Vertex_List)、法線數(shù)組(Normal_List)、顏色數(shù)組(Color_List)輸入到渲染管線的方式可能不同。如圖10所示,腳本GearMode.cs的部分代碼,頂點數(shù)組的輸入,需要將Vertex_List轉(zhuǎn)換成只存儲坐標(biāo)點的vertices數(shù)組和只存儲頂點三角形索引位置的triangles數(shù)組,然后傳入渲染管線。由于所有的頂點顏色一樣,根據(jù)著色器(shader)的編寫,只需要傳入三個顏色值即可,不用傳入Color_List數(shù)組。第六步,圖形測試,如圖11所示,改變不同的參數(shù),生成的齒輪部分圖片,經(jīng)測試,結(jié)果正確。第七步,在Unity中的File菜單下的Build Settings面板中,選擇移動端系統(tǒng)的選項,點擊Build,即生成相對應(yīng)系統(tǒng)的APP安裝文件,如圖12所示。

3 APP運行及結(jié)果

首先點擊手機桌面上名稱為Gear的APP,進入APP的界面,如圖13所示。界面右側(cè)的參數(shù)面板分點擊和滑動兩種操作,改變相應(yīng)的參數(shù),界面中間的齒輪形態(tài)同步改變。當(dāng)連續(xù)改變某一參數(shù),可動態(tài)觀察齒輪的變化。手指選中中間的齒輪,可以任意角度的旋轉(zhuǎn),進行觀察。界面左側(cè)的滑動條用來調(diào)整APP內(nèi)的攝像機與齒輪的遠(yuǎn)近位置。圖14為斜齒輪,螺旋角調(diào)到20,選擇槽孔,孔徑52mm,模數(shù)選擇5.5,“第二系列”文字提示用紅色顯示,因為在機械行業(yè)模數(shù)要優(yōu)先選擇第一系列的數(shù)值。齒數(shù)選擇39,齒厚為模數(shù)的6倍,齒輪的顏色R、G、B值分別是0、127、131。

4 結(jié)語

在研究OpenGL ES圖形庫的基礎(chǔ)上,以漸開線圓柱齒輪的形成原理為理論基礎(chǔ),結(jié)合幾何學(xué)相關(guān)知識,總結(jié)出漸開線圓柱齒輪參數(shù)化建模的關(guān)鍵技術(shù),即確定頂點數(shù)組、法線數(shù)組和顏色數(shù)組。根據(jù)所得數(shù)組,結(jié)合開發(fā)環(huán)境,同時參考交互設(shè)計、界面設(shè)計、計算機編程等知識,得出移動端可視化流程。并使用Unity3D制作出可安裝到移動端的APP,動態(tài)展示不同參數(shù)下的齒輪形狀和顏色,驗證了基于OpenGL ES的漸開線圓柱齒輪參數(shù)化建模在移動設(shè)備上展示的優(yōu)越性。此外,根據(jù)總結(jié)出的漸開線圓柱齒輪參數(shù)化建模關(guān)鍵技術(shù)、移動端可視化流程,為構(gòu)建其它機械構(gòu)件提供了指導(dǎo),如構(gòu)建錐齒輪、凸輪等。對機械構(gòu)件在移動設(shè)備上進行虛擬演示奠定了一定基礎(chǔ),使機械知識的傳播和普及更加方便、高效。

參考文獻

[1]管巧娟.基于認(rèn)知過程的機類基礎(chǔ)課組合式學(xué)習(xí)[J].圖學(xué)學(xué)報,2015(04):638-643.

[2]邱龍輝,楚電明,葉琳.基于智能手機的工程圖學(xué)虛擬模型庫的研究與實現(xiàn)[J].圖學(xué)學(xué)報,2013(01):83-86.

[3]盧杰,米彩盈.基于SolidWorks 的聯(lián)合參數(shù)化設(shè)計方法研究[J].圖學(xué)學(xué)報,2013(6):64-68.

[4]胡一欽.變結(jié)構(gòu)體參數(shù)設(shè)計的一種新方法[J].機械設(shè)計與制造,2011(5):41-42.

[5]Hu Xueyan, Xia Zhonglin. Study on Image Deformation Simulation based on ARM Linux and OpenGL ES[J]. Intelligence Science and Information Engineering,2011(8):303-306.

[6]吳亞峰.Android3D 游戲開發(fā)技術(shù)寶典--OpenGL ES2.0[M].北京:人民郵電出版社,2012.

[7]孫恒,陳作模,葛文杰.機械原理[M].北京:高等教育出版社,2006.

[8]李華敏,韓元瑩,王知行.漸開線齒輪的幾何原理與計算[M].北京:機械工業(yè)出版社,1985.

[9]張俊義,丁文捷.可實現(xiàn)參數(shù)化的漸開線圓柱齒輪建模方法研究[J].機械研究與應(yīng)用,2013(06):40-42.

[10]張憲榮,陳麥,張萱.工業(yè)設(shè)計理念與方法[M].北京:北京理工大學(xué)出版社,2007.

龙泉市| 美姑县| 随州市| 巴里| 荆门市| 剑河县| 南漳县| 临洮县| 德江县| 泽州县| 金昌市| 三门县| 隆昌县| 海南省| 拜城县| 赤峰市| 石台县| 南城县| 黄陵县| 资中县| 罗田县| 赤峰市| 舒兰市| 滨海县| 太保市| 高台县| 孝感市| 法库县| 恭城| 永福县| 象山县| 韶关市| 类乌齐县| 万载县| 新丰县| 玛沁县| 鄱阳县| 都昌县| 郑州市| 萝北县| 龙江县|