freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

osg-osgearth學(xué)習(xí)技術(shù)總結(jié)報(bào)告(編輯修改稿)

2025-06-26 18:07 本頁面
 

【文章內(nèi)容簡介】 樣將會產(chǎn)生順時(shí)針排放的頂點(diǎn)序列從而產(chǎn)生很多不正確的效果,比如光照,紋理和裁切等等。 通常為了保持原有的比例,需要a=b=c,當(dāng)然不是絕對的。D 變換疊加一般來講變換不是單一的,比如需要繞X軸旋轉(zhuǎn)120度再縮小百分之二十最后向Y軸奔跑一百米,那么該怎么計(jì)算呢,最顯然的是首先R=P*TX(120),然后再拿給定的結(jié)果R2=R*TS()依次類推,那么結(jié)果也就是P*TX(120)*TS(),從而得出可以先把各種變換相乘之后最后再與P相乘,這樣可以省去許多操作,很簡單的例子,比如需要向前走一百米,再向后走一百米,計(jì)算之后就不需要走動(dòng),只需要向后轉(zhuǎn)一百八十度就可以了,再舉個(gè)例子,旋轉(zhuǎn)六十度后再對X進(jìn)行縮百分之五十,那么現(xiàn)在縮的對應(yīng)的點(diǎn)如果先縮再旋轉(zhuǎn),是相差六十度的。第四章 MFC+OSG界面框架設(shè)計(jì) MFC+OSG控制框架在OSG的渲染過程中,外界對其控制僅僅限于鍵盤與鼠標(biāo),因而更多的功能無法進(jìn)行合理的安,比如我要模擬一些天氣,天氣有數(shù)十種,每種天氣又有輕重不同,比如有大雪,中雪,小雪,這樣的話光使用WIN32控制臺+OSG便顯得有些捉襟見肘。 在模擬有些東西時(shí)WIN32根本無能為力,比如發(fā)送特定消息,等等,這就是MFC與WINDOWS的強(qiáng)項(xiàng)??刂婆_程序僅僅適合實(shí)驗(yàn),算法模擬等等。 因此馬上必須要引入一種框架來對其進(jìn)行管理,可以選擇WINDOWS程序框架,在開始時(shí)說過WINDOWS程序不具有清晰性,不易于入門,因此我們在本章開頭定義了一個(gè)MFC程序,在MFC程序中,我們將主要通過菜單來控制OSG程序,鍵盤消息如果使用MFC進(jìn)行攔截不做處理還將傳遞到OSG中去,下面我們以圖示來看一下OSG與MFC的具體交互過程: OSG+MFC交互示意圖從圖中可以看出,由于MFC中沒有涉及OSG的變量,因而必須有一個(gè)類來統(tǒng)領(lǐng)OSG的全局,負(fù)責(zé)從組織結(jié)點(diǎn)一直到渲染結(jié)束的全過程,這個(gè)類就是如圖所示的OSGFrame,MFC中代碼過多之后,內(nèi)存就會發(fā)生莫明其妙的紊亂,對于OSG來講獨(dú)立于MFC之外是十分必要的,采用一個(gè)非常平凡的接口來與MFC進(jìn)行交互。 從圖中可以看出,當(dāng)渲染結(jié)束時(shí),程序并沒有退出,而退出程序的,只有MFC本身,當(dāng)view發(fā)出退出消息時(shí),哪怕不是在渲染也會退出。圖中從CMainFrame到view到結(jié)束,這是應(yīng)用程序的主線,而osgFrame只是程序中的支線,主線負(fù)責(zé)控制整個(gè)應(yīng)用程序,而OSG只是其控制中的一部分。 MFC的建立: MFC程序框架圖它主要包括三類:視圖類、框架類、應(yīng)用程序類,其中的菜單控制是通過消息映射來響應(yīng)。MFC程序通過人為控制可以分為二種,一為控制菜單,二來通過鍵盤或是鼠標(biāo)發(fā)送消息,或者通過菜單以定時(shí)器發(fā)送消息,消息處理過程總是先由視圖類先行處理,而后再由應(yīng)用程序框架進(jìn)行處理,而菜單則可以控制現(xiàn)有的所有的類,在多個(gè)類中同時(shí)響應(yīng)則也會按照先視圖后框架的順序,且有些消息框架根本接收不到。建立MFC的步驟:點(diǎn)擊新建新建項(xiàng)目在項(xiàng)目類型中選擇:MFC,在模版中選擇:MFC應(yīng)用程序,在名稱中填入項(xiàng)目名稱,比如osgFree,點(diǎn)擊確定。這時(shí)將會出現(xiàn)MFC應(yīng)用程序歡迎向?qū)?,在概述中大概描述了該程序的基本特征,默認(rèn)是多文檔|無數(shù)據(jù)庫支持|不支持復(fù)合文檔。如果經(jīng)常使用MFC,以及對其內(nèi)部結(jié)構(gòu)有一定的了解,隨便建一個(gè)便可以自由的通過修改默認(rèn)源碼在自己需要的類型之前來回轉(zhuǎn)換,這里我們少走一些彎路點(diǎn)擊:應(yīng)用程序類型標(biāo)簽或者下一步按鈕,頁面需要選擇如下: MFC建立1界面風(fēng)格采用VS的office風(fēng)格,應(yīng)用程序類型選擇單文檔。點(diǎn)擊下一步 MFC建立2選擇文件擴(kuò)展名為ive,電腦中所有的*.ive文檔默認(rèn)的打開方式為你所建立的這個(gè)應(yīng)用程序。主框架標(biāo)準(zhǔn)中修改的字符將會出現(xiàn)在框架窗口的上方,做如圖修改后點(diǎn)擊下一步,出現(xiàn)對數(shù)據(jù)庫是否支持的頁面,在OSG的編程中往往需要使用到數(shù)據(jù)庫,且往往采用ODBC方式而非C/S格式,在此選擇無,而后點(diǎn)擊下一步,出現(xiàn)如圖所示頁面: MFC建立3各個(gè)選項(xiàng)在選擇后將會影響到程序的框架類型,當(dāng)然無論做怎么樣的選擇,在程序中都可以再次修改,比如這里沒有選擇最大化框,在程序中也可以通過代碼進(jìn)行修改。MFC是非常自由的,應(yīng)用程序配置向?qū)е皇窍蛑蠖鄶?shù)人最常用的方式來進(jìn)行配置。再次點(diǎn)擊下一步,把打印和打印預(yù)覽選項(xiàng)剔除,當(dāng)然如果你不在程序中使用控件,ACTIVEX也可以剔除。 點(diǎn)擊下一步在生成的類中保持默認(rèn)選擇,不同的類決定不同的模版,如有滾動(dòng)條,具有文檔模版等等,在這里點(diǎn)擊完成。在菜單選擇調(diào)試開始執(zhí)行(不調(diào)試)或者ctrl+F5,編譯運(yùn)行看會出現(xiàn)如下界面,則MFC框架搭建成功。 MFC運(yùn)行結(jié)果圖加入OSG類,在項(xiàng)目的類視圖中,點(diǎn)擊右鍵添加類,選擇一個(gè)C++的普通類,如圖類名為osgFrame,點(diǎn)擊完成。現(xiàn)在需要重載一些事件,在類視圖中選擇cosgfreeView,右鍵點(diǎn)擊類向?qū)?,出現(xiàn)MFC Class Wizard,我們需要對以下幾個(gè)事件進(jìn)行重載,onCreate創(chuàng)建窗口;OnEraseBkgnd擦出背景的時(shí)候;OnDestroy在窗口銷毀的時(shí)候進(jìn)行處理;在虛函數(shù)的選擇欄中對以下虛函數(shù)進(jìn)行重寫:OnInitialUpdate程序初始化的時(shí)候響應(yīng)處理函數(shù); 添加類編寫程序以下程序均有注釋,很容易看懂:include include COSGObject::COSGObject(HWND hWnd){ m_hWnd = hWnd。}COSGObject::~COSGObject(void){}void COSGObject::InitOSG(){ InitSceneGraph()。 InitCameraConfig()。}void COSGObject::InitSceneGraph(){ mRoot = new osg::Group。 mRootaddChild(osgDB::readNodeFile())。 //mRootaddChild(osgDB::readNodeFile(H:/168。178。三168。y講2VPB用174。?法164。161。167。詳168。186。解a與174。?常161。234。見?問168。186。題172。a處228。|理164。168。170。/vpbtest/TestCommon10/))。}void COSGObject::InitCameraConfig(){ RECT rect。 mViewer = new osgViewer::Viewer。 ::GetWindowRect(m_hWnd, amp。rect)。 osg::ref_ptrosg::GraphicsContext::Traits traits = new osg::GraphicsContext::Traits。 osg::ref_ptrosg::Referenced windata = new osgViewer::GraphicsWindowWin32::WindowData(m_hWnd)。 traitsx = 0。 traitsy = 0。 traitswidth = 。 traitsheight = 。 traitswindowDecoration = false。 traitsdoubleBuffer = true。 traitssharedContext = 0。 traitssetInheritedWindowPixelFormat = true。 traitsinheritedWindowData = windata。 osg::GraphicsContext * gc = osg::GraphicsContext::createGraphicsContext(traits)。 osg::ref_ptrosg::Camera camera = new osg::Camera。 camerasetGraphicsContext(gc)。 camerasetViewport(new osg::Viewport(traitsx, traitsy, traitswidth, traitsheight))。 camerasetProjectionMatrixAsPerspective(, static_castdouble(traitswidth)/static_castdouble(traitsheight), , )。 mViewersetCamera(camera)。 mViewersetCameraManipulator(new osgGA::TrackballManipulator)。 mViewersetSceneData(mRoot)。 mViewerrealize()。 mViewergetCamera()setComputeNearFarMode(osg::CullSettings::COMPUTE_NEAR_FAR_USING_PRIMITIVES)。 mViewergetCamera()setNearFarRatio()。}void COSGObject::PreFrameUpdate(){}void COSGObject::PostFrameUpdate(){}void COSGObject::Render(void * ptr){ COSGObject *osg = (COSGObject*)ptr。 osgViewer::Viewer * viewer = osggetViewer()。 while(!viewerdone()) { osgPreFrameUpdate()。 viewerframe()。 osgPostFrameUpdate()。 } _endthread()。}osgViewer::Viewer *COSGObject::getViewer(){ return mViewer。},添加事件函數(shù):int CDigitalEarthView::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (CView::OnCreate(lpCreateStruct) == 1) return 1。 mOSG = new COSGObject(m_hWnd)。 return 0。}BOOL CDigitalEarthView::OnEraseBkgnd(CDC* pDC){ if(0 == mOSG) { return CView::OnEraseBkgnd(pDC)。 } else { return FALSE。 } return CView::OnEraseBkgnd(pDC)。}void CDigitalEarthView::OnDestroy(){ CView::OnDestroy()。 if(mOSG != 0) delete mOSG。 WaitForSingleObject(mThreadHandle, 1000)。}void CDigitalEarthView::OnInitialUpdate(){ CView::OnInitialUpdate()。 mOSGInitOSG()。 mThreadHandle = (HANDLE)_beginthread(amp。COSGObject::Render, 0, mOSG)。}設(shè)置程序的依賴:在項(xiàng)目點(diǎn)擊右鍵屬性,出現(xiàn)下面的窗口 設(shè)置依賴的路徑分別設(shè)置“可執(zhí)行文件目錄”、“包含目錄”、“庫目錄”,這些目錄的路徑就是自己編譯好的osg目錄的bin、include和lib目錄。在屬性的鏈接器命令行中輸入: ;點(diǎn)擊確定。 最后,ctrl+F5,運(yùn)行程序,; MFC+OSG運(yùn)行效果第五章 NodeMatrix類實(shí)現(xiàn)OSG中對于模型的操作就是矩陣的操作,其中包括平移、旋轉(zhuǎn)、縮放。 對模型的操作我們要很好的控制模型,方便自己對模型的管理,不用每次都要寫相關(guān)的函數(shù),而需要自己定義一種類,通過類來對其操作。在此設(shè)計(jì)一種節(jié)點(diǎn)操作類NodeMatrix。 NodeMatrix 類類說明:實(shí)現(xiàn)對模型的基本操作。類繼承圖:NodeMatrix類中方法:NodeMatrix(void)。~NodeMatrix(void)。說明:類的構(gòu)造和析構(gòu)函數(shù),參數(shù)無。void rotating(const osg::Vec3d amp。 pivot,const osg::Vec3d amp。 axis, float angular )。說明:繞著某軸按一定的角度不停地旋轉(zhuǎn)。參數(shù)名稱類型描述pivotconst osg::Vec3d amp。旋轉(zhuǎn)的半徑位置axisconst osg::Vec3d amp。繞某軸旋轉(zhuǎn)angularfloat每幀旋轉(zhuǎn)的弧度void toRotate(const osg::Matrix amp。mat)。void toRotate(float a
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1