亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于OpenGL的三維模型交互控制研究

        2015-04-17 12:40:47游有鵬邢永彥
        機械設(shè)計與制造工程 2015年1期
        關(guān)鍵詞:坐標值視點鼠標

        葉 帥,游有鵬,邢永彥

        (南京航空航天大學(xué) 機電學(xué)院,江蘇 南京 210016)

        基于OpenGL的三維模型交互控制研究

        葉 帥,游有鵬,邢永彥

        (南京航空航天大學(xué) 機電學(xué)院,江蘇 南京 210016)

        OpenGL是圖形硬件的一種軟件接口,在深入了解OpenGL顯示機制的基礎(chǔ)上,討論了基于OpenGL實現(xiàn)三維模型的交互顯示變換方法。應(yīng)用OpenGL接口,通過對鼠標的二維位置的變換,得到世界坐標系中三維旋轉(zhuǎn)軸和旋轉(zhuǎn)角度,以及鼠標在世界坐標系中的三維位置,進而對三維模型進行平移、縮放、旋轉(zhuǎn)操作。算法經(jīng)實際編程應(yīng)用,證明能夠有效地實現(xiàn)三維模型的各種交互控制功能。

        三維模型;鼠標控制;OpenGL;交互式

        目前,相當多的優(yōu)秀三維圖形工具展現(xiàn)了精彩的虛擬現(xiàn)實場景[1]。隨著虛擬現(xiàn)實進入工程應(yīng)用,要求相關(guān)的圖形應(yīng)用軟件能夠使用戶與虛擬現(xiàn)實場景進行互動操作。為此,當進行圖形應(yīng)用軟件交互控制設(shè)計時,必須考慮三維模型的平移、縮放和旋轉(zhuǎn)等操作的實現(xiàn),其中最為困難的是旋轉(zhuǎn)操作。常用的方法是使用OpenGL提供的接口函數(shù)glRotate()來實現(xiàn)三維旋轉(zhuǎn)操作[2]、采用四元數(shù)法求旋轉(zhuǎn)變換矩陣[3]、構(gòu)造旋轉(zhuǎn)矩陣對模型進行變換[4],它們可以很好地實現(xiàn)三維模型的旋轉(zhuǎn),但會改變對象的坐標,并且計算量大。對于有坐標值要求的三維實體,這些方法并不適用。針對以上問題,本文提出了一種利用鼠標移動改變視點坐標系位置、保留原有三維模型的空間幾何信息、實現(xiàn)三維模型交互控制的方法。

        1 坐標系分類

        OpenGL中存在如下幾種坐標系:

        a.世界坐標系。世界坐標系是以屏幕中心為原點(0, 0, 0),在OpenGL中用來描述場景的坐標,是系統(tǒng)的絕對坐標系。在繪圖期間,原點和坐標軸保持不變。

        b.模型坐標系。繪制模型時使用的坐標系。當模型發(fā)生旋轉(zhuǎn)、平移等變化時,模型坐標系本身不會變化,變化的是模型在世界坐標系中的位置。

        c.視坐標系。以視點為原點,以視線方向為Z軸正方向的坐標系。OpenGL會將世界坐標系先變換為視坐標系,然后進行裁剪,只有在視景體內(nèi)的場景才會進行下一個階段的處理。

        2 實現(xiàn)方法和步驟

        2.1顯示變換分析

        在計算機圖形學(xué)中,三維圖形的旋轉(zhuǎn)變換需要指定一個旋轉(zhuǎn)軸和旋轉(zhuǎn)角度。通常,三維旋轉(zhuǎn)變換可圍繞空間任意直線軸進行,并規(guī)定圖形繞某軸逆時針方向的旋轉(zhuǎn)角度為正。旋轉(zhuǎn)變換前后三維圖形的大小和形狀不發(fā)生變化,只是空間位置發(fā)生了變化。繞坐標軸旋轉(zhuǎn)是最簡單的旋轉(zhuǎn)變換。當三維圖形繞某一坐標軸旋轉(zhuǎn)時,圖形上各點關(guān)于此軸的坐標值不變,而另兩個坐標軸的坐標值相當于在它們組成的坐標面上的一個二維旋轉(zhuǎn)變換,然后再投影到二維的屏幕上。當通過鼠標操作三維場景中某個物體的投影進行旋轉(zhuǎn)時,可以將鼠標位置的改變轉(zhuǎn)換成三維物體繞著空間某一垂直于投影方向軸的旋轉(zhuǎn)。

        基于以上分析,可對三維物體旋轉(zhuǎn)問題作如下轉(zhuǎn)化:鼠標在二維屏幕上的移動等價于三維物體繞空間某一條軸的旋轉(zhuǎn),該旋轉(zhuǎn)軸可定義為平行于屏幕、垂直于鼠標移動方向且通過原點,旋轉(zhuǎn)的角度由鼠標的移動距離來確定。三維物體的縮放,可通過改變視點里三維模型的距離來實現(xiàn),縮放比例由鼠標沿X軸移動的距離確定。這些變換都使用到同一函數(shù)gluLookAt()。對于三維物體平移問題,可直接調(diào)用glTranslate*()函數(shù),參數(shù)由鼠標在窗口中的移動量確定。

        2.2實現(xiàn)步驟

        在實際應(yīng)用中,用戶在完成場景建模后,往往需要選擇一個合適的視角或者不停地變換視角,以對場景作觀察,實用庫函數(shù)gluLookAt()就提供了這樣的功能,函數(shù)聲明如下:

        VoidgluLookAt(GLdoubleeyex,GLdoubleeyey,GLdoubleeyez,GLdoublecenterx,GLdoublecentery,GLdoublecenterz,GLdoubleupx,GLdoubleupy,GLdoubleupz);

        該函數(shù)定義一個視圖矩陣,并與當前矩陣相乘。其中,(eyex,eyey,eyez)為視點的位置;(centerx,centery,centerz)為參考點的位置;向量(upx,upy,upz)為視線向上的方向。

        2.2.1構(gòu)造UVN坐標系

        gluLookAt()函數(shù)提供了視圖模型變換(Model-ViewTransformation)功能,將模型坐標系轉(zhuǎn)換為世界坐標系后,進行世界坐標系到照相機坐標系的轉(zhuǎn)換。實際上,照相機的定位也是在世界坐標系下定義的,這里的轉(zhuǎn)換可以理解為從照相機的角度解釋世界坐標系中物體的坐標??梢酝ㄟ^構(gòu)造一個UVN相機坐標系來簡化這一轉(zhuǎn)換。圖1為正式定義的UVN相機坐標系。

        與UVN相關(guān)的概念包括:相機位置,或稱之為視點(Eyepoint),即觀察參考點 (ViewReferencePoint);相機鏡頭方向,即觀察平面法向量VPN(View Plane Normal),通過觀察平面的法向量指定;相機頂部正朝向VUV(View Up Vector)。

        gluLookAt()通過指定一個視點、表面場景中心的參考點以及向量Vup來構(gòu)造一個視變換矩陣。這個矩陣將視點映射成為原點,并指向Z軸負方向。當使用一個特定的投影矩陣時,場景的中心就映射到視口的中心。類似地,由向量Vup描述的方向投影到投影平面成為+Y軸,這樣它在視口中的指向向上。向量Vup不可與從視點到參考點的直線平行。

        各參數(shù)通過以下公式計算:

        VPN=target-eye

        式中:target是物體位置;eye是視點位置;u,v,n是UVN坐標系的3個基向量。

        需要注意的是,OpenGL中使用的相機坐標系是右手坐標系,UVN坐標系是左手坐標系。在構(gòu)造實際變換矩陣的過程中,OpenGL需要將-N軸翻轉(zhuǎn)為相機坐標系的+Z軸,U,V軸定為相機坐標系的+X和+Y軸。

        2.2.2構(gòu)造視變換矩陣

        視變換就是在相機坐標系中解釋世界坐標系中的點。這個變換矩陣的構(gòu)造,可以看作將相機坐標系變換到與原來的世界坐標系重合。而將世界坐標系變換到與相機坐標系重合,可以看作是這個所求變換的逆過程。

        將世界坐標系變換到與相機坐標系重合,實際上進行了兩個步驟:第一步將世界坐標系旋轉(zhuǎn)一定角度記作變換R,再將世界坐標系平移到視點位置記作T,那么這個變換矩陣記為M=TR。要將世界坐標系的點變換到照相機坐標系下,需要使用矩陣M的逆矩陣,即inverse(M)=inverse(R)·inverse(T)。

        平移矩陣的逆矩陣形式簡單,就是取平移量eyex,eyey,eyez的相反數(shù),即:

        2.2.3求出旋轉(zhuǎn)矩陣R

        上面構(gòu)造的UVN坐標系u-v-n3個基向量可以構(gòu)造成矩陣:

        這里對N軸進行了翻轉(zhuǎn),構(gòu)成右手照相機坐標系。從矩陣形式上可以看出,矩陣A實際上代表的就是一個旋轉(zhuǎn)矩陣。旋轉(zhuǎn)矩陣的一個特點就是它是正交矩陣,即有inverse(A)=transpose(A),(A-1=AT)。

        這里A矩陣可以看作是將世界坐標系轉(zhuǎn)換到與照相機坐標系重合時的旋轉(zhuǎn)矩陣。矩陣A的第4列為(0,0,0,1)T,可以看作是世界坐標系和照相機坐標系原點重合;矩陣前3列為變換后的基向量,那么這個基向量就是通過旋轉(zhuǎn)原來的世界坐標系的基向量來構(gòu)造的。因此,可以說矩陣A代表的就是將世界坐標系旋轉(zhuǎn)到與相機坐標系重合時的旋轉(zhuǎn)矩陣R,即R=A。

        則inverse(R)=inverse(A)=transpose(A) ,即:

        所以變換矩陣inverse(M)為:

        M-1=R-1T-1=

        2.2.4應(yīng)用

        通過以上幾個小節(jié)的討論,已經(jīng)求得變換矩陣,通過gluLookAt()函數(shù)即可將世界坐標系的點變換到照相機坐標系下。gluLookAt()函數(shù)所需的具體參數(shù)可通過以下步驟計算得出:

        CurrentAngleZ=(ep.x()-sp.x())*divAnale+LastAngleZ;//計算當前繞Z軸旋轉(zhuǎn)角度,ep為終止點,sp為起始點

        CurrentAngleY=(ep.y()-sp.y())*divAnale+LastAngleY; //計算當前繞Y軸旋轉(zhuǎn)角度

        eyex=sin(CurrentAngleY)*sin(CurrentAngleZ);

        eyey=cos(CurrentAngleY);

        eyez=sin(CurrentAngleY)*cos(CurrentAngleZ);

        Look=(targetx-eyex,targety-eyey,targetz-eyez)T;

        Look.normalized();//單位化Look向量

        Up.normalized();//單位化up向量;

        Right = Cross( Look, Up );//Look與up向量的叉積

        Up = Cross(Right, Look);//Right與Look向量的叉積

        最后將得到的新的觀察點位置和向量up應(yīng)用到gluLookAt()函數(shù)中,并在鼠標移動的響應(yīng)函數(shù)中實時跟蹤最新的鼠標位置值,就能夠?qū)崿F(xiàn)以世界坐標系原點為中心,按任意方向旋轉(zhuǎn)整個場景的功能。

        設(shè)定zoom=zoom+ (終止點X方向坐標值-起始點X方向坐標值)/8;

        moveX= (終止點X方向坐標值-起始點X方向坐標值)/10;

        moveY= (終止點Y方向坐標值-起始點Y方向坐標值)/10;

        在應(yīng)用gluLookAt()時,eyex,eyey,eyez分別乘以系數(shù)zoom即可實現(xiàn)以世界坐標系原點為中心的場景縮放功能,應(yīng)用glTranslatef(moveX,moveY,0)使得場景能夠平移。

        搭建的機床加工模型如圖2所示,旋轉(zhuǎn)、平移、縮放等功能均得到很好的實現(xiàn)。

        3 結(jié)束語

        本文在討論了OpenGL顯示機制的基礎(chǔ)上,分析了模型變換和視點變換,通過鼠標在二維屏幕上的移動轉(zhuǎn)化為三維場景繞空間某一軸的旋轉(zhuǎn),實現(xiàn)模型平移、縮放等功能,并能實時顯示交互過程。在此基礎(chǔ)上搭建的機床加工三維模型,具有較好的交互顯示效果,為接下來研究機床加工的虛擬仿真奠定了一個較好的基礎(chǔ)。

        [1]EdwardAngel.交互式計算機圖形學(xué):基于OpenGL的自頂向下方法[M].吳文國,譯.北京:清華大學(xué)出版社,2006.

        [2] 王映輝.3D建模與編程技術(shù)[J].計算機應(yīng)用研究,2004(1):37-43.

        [3] 王峰, 周江華, 孫國基.三維模型交互式瀏覽的簡捷算法[J].計算機工程與應(yīng)用, 2004,40(26): 101-103.

        [4] 徐元進, 胡光道, 葉菁,等.基于OpenGL的對應(yīng)分析因子載荷三維圖的繪制[J].計算機工程與應(yīng)用, 2004,40(10): 91-93.

        Study on the interactive control of three-dimensional models based on OpenGL

        YE Shuai, YOU Youpeng, XING Yongyan

        (Nanjing University of Aeronautics and Astronautics, Jiangsu Nanjing, 210016, China)

        OpenGL is a software interface to the graphics hardware. Bases on in-depth understanding of OpenGL display mechanism, it discusses the interactive OpenGL 3D model display transformation method. Applying OpenGL interface, it obtains the world coordinate of 3D rotation axis and angle of rotation through the two-dimensional position of the mouse transform, the 3D position of the mouse in world coordinates, the operation of translation, scaling and rotation of the 3D model. The actual programming application proves that the algorithm can realize the various 3Dmodel interactive control efficiently.

        three-dimensional models; mouse control; OpenGL; interactive

        10.3969/j.issn.2095-509X.2015.01.004

        2014-11-21

        葉帥(1991—),男,江蘇宿遷人,南京航空航天大學(xué)碩士研究生,主要研究方向為機電控制及自動化。

        TP391.72;TH16

        A

        2095-509X(2015)01-0015-04

        猜你喜歡
        坐標值視點鼠標
        麥弗遜懸架主銷軸線對半軸滑移的影響
        北京汽車(2023年1期)2023-03-03 00:50:38
        Progress in Neural NLP: Modeling, Learning, and Reasoning
        Engineering(2020年3期)2020-09-14 03:42:00
        基于二分法迭代的凸模數(shù)控銑削加工編程*
        視點
        河南電力(2016年5期)2016-02-06 02:11:24
        讓你每天一元錢,物超所值——《今日視點—2014精萃》序
        新聞前哨(2015年2期)2015-03-11 19:29:22
        兩會視點
        中國水利(2015年5期)2015-02-28 15:12:40
        利用CAD/CAM 軟件確定數(shù)控編程中 未知點的坐標
        物理坐標圖像的應(yīng)用賞析
        45歲的鼠標
        超能力鼠標
        IM家庭電子(2008年11期)2008-12-05 09:49:20
        日本国产一区在线观看| 在线观看免费a∨网站| 亚洲两性视频一三区| 青青草最新在线视频观看| 99久久免费看精品国产一| 中文字幕乱码一区av久久不卡 | 亚洲激情成人| 一区二区视频网站在线观看| 精品高清免费国产在线| 三年中文在线观看免费大全| 欧美成人三级一区二区在线观看 | 一区二区三区一片黄理论片| аⅴ天堂中文在线网| 中国丰满熟妇xxxx| 亚洲网站免费看| 日韩一二三四区在线观看| 精品国际久久久久999波多野| 男人边吻奶边挵进去视频| 国产在线天堂av| 视频女同久久久一区二区| 国产做国产爱免费视频| 欧美高大丰满freesex| 白白色发布永久免费观看视频 | 少妇裸淫交视频免费看| 午夜福利一区在线观看中文字幕 | 男人无码视频在线观看| 亚洲福利av一区二区| 中国人在线观看免费的视频播放| 亚洲亚洲人成综合网络| 国产九色AV刺激露脸对白| 中文字幕精品人妻丝袜| 色欲欲www成人网站| 久久久久亚洲av无码专区| 女人被躁到高潮嗷嗷叫免费软| 国产一区二区三区视频地址| 欧美成人在线视频| 亚洲av一二三四区四色婷婷 | 亚洲国产精品成人综合色| 欧美第五页| 国产av在线观看91| 久久天堂av综合合色|