-程序技術(shù)文檔_第1頁(yè)
-程序技術(shù)文檔_第2頁(yè)
-程序技術(shù)文檔_第3頁(yè)
-程序技術(shù)文檔_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目錄目錄TOC\o"1-5"\h\z\o"CurrentDocument"I.Skinmesh的一些重要函數(shù)分析 2\o"CurrentDocument".先分析一下問(wèn)題 2\o"CurrentDocument".先解析下每個(gè)參數(shù) 2\o"CurrentDocument"人物掛武器分析 3\o"CurrentDocument"地圖隨機(jī)位置移動(dòng) 41.Skinmesh的一些重要函數(shù)分析(1).先分析一下問(wèn)題在調(diào)試過(guò)程中發(fā)覺(jué)人物的動(dòng)作指針一直不對(duì)勁..開(kāi)始時(shí)候我沒(méi)有太大的留意人物的動(dòng)作就是覺(jué)得人物的動(dòng)作時(shí)多余出來(lái)一部分..但后來(lái)發(fā)覺(jué)其實(shí)人物的動(dòng)作不是多余而是人物調(diào)用的幀數(shù)不對(duì)..比如人物一個(gè)完整的動(dòng)作需要10幀(0~9),那么它開(kāi)始播放是從3~9,之后在回到0~2,之后又會(huì)發(fā)生變化..經(jīng)過(guò)了一輪的調(diào)試之后終于找到了那個(gè)函數(shù)出問(wèn)題.也找到了問(wèn)題的所在.就是人物的動(dòng)作的幀數(shù)一直沒(méi)有置0,這是由于人物建模時(shí)候不標(biāo)準(zhǔn)所導(dǎo)致的原因..現(xiàn)在可以通過(guò)代碼的形式強(qiáng)制置0;(2).先解析下每個(gè)參數(shù)STDMETHOD(CreateMeshContainer)(THIS_LPCSTRName,CONSTD3DXMESHDATA*pMeshData,CONSTD3DXMATERIAL*pMaterials,CONSTD3DXEFFECTINSTANCE*pEffectInstances,DWORDNumMaterials,CONSTDWORD*pAdjacency,LPD3DXSKININFOpSkinInfo,LPD3DXMESHCONTAINER*ppNewMeshContainer);下面是我一直調(diào)試的筆錄..LPCSTRName:很奇怪,這個(gè)參數(shù)一直是空,即使把函數(shù)中給它賦值的語(yǔ)句注釋掉也運(yùn)作正常,貌似不用管...CONSTD3DXMESHDATA*pMeshData:一個(gè)D3DXMESHDATA結(jié)構(gòu)體指針,結(jié)構(gòu)內(nèi)有一個(gè)D3DXMESHDATATYPE成員,此成員是一個(gè)枚舉,枚舉出三種MESH類(lèi)型,在D3DXMESHDATATYPE結(jié)構(gòu)內(nèi)還有一個(gè)聯(lián)合結(jié)構(gòu),在聯(lián)合中有三種不同的MESH,相信是根據(jù)D3DXMESHDATATYPE的值來(lái)確定應(yīng)該使用哪一種MESH吧.CONSTD3DXMATERIAL*pMaterials:同樣是一個(gè)結(jié)構(gòu)體指針,內(nèi)含一個(gè)D3DMATERIAL9材質(zhì)結(jié)構(gòu)和一個(gè)紋理路徑.CONSTD3DXEFFECTINSTANCE*pEffectInstances:貌似是一個(gè)處理音效的結(jié)構(gòu)體,不太理解這東東,在兩個(gè)例子中都沒(méi)有使用到這個(gè)參數(shù).DWORDNumMaterials:一個(gè)材質(zhì)計(jì)數(shù)器,在函數(shù)中根據(jù)此值去new一個(gè)NumMaterials大小的D3DXMATERIAL數(shù)組.CONSTDWORD*pAdjacency:鄰接三角形數(shù)組,根據(jù)網(wǎng)上資料,這個(gè)參數(shù)可以消除動(dòng)畫(huà)(關(guān)節(jié)動(dòng)畫(huà))時(shí)所帶來(lái)的裂縫.在MultiAnimation(DX)例子中,先創(chuàng)建了一個(gè)D3DXMESHCONTAINER對(duì)象(當(dāng)然,這個(gè)對(duì)象是繼承自D3DXMESHCONTAINER的子類(lèi)),然后用該對(duì)象的MeshData.pMesh->GetNumFaces(取出MESH有多少個(gè)面,再用pMC->pAdjacency去new一個(gè)3*面數(shù)大小的數(shù)組,最后用參數(shù)中的pAdjacency拷貝給pMC->pAdjacency.參數(shù)中pAdjacency的值應(yīng)該是由DX框架運(yùn)算得來(lái),暫不考究??LPD3DXSKININFOpSkinInfo:蒙皮信息接口,根據(jù)此接口內(nèi)的數(shù)據(jù)去設(shè)置第八個(gè)參數(shù).此參數(shù)的運(yùn)用將在最后結(jié)合整個(gè)函數(shù)語(yǔ)句分析中解析,而該接口也將另立文檔分釋LPD3DXMESHCONTAINER*ppNewMeshContainer:MESH動(dòng)作播放容器,以上7個(gè)參數(shù)其實(shí)都是圍繞著這個(gè)參數(shù)來(lái)寫(xiě)的(第一個(gè)不知道干啥子用),在函數(shù)中會(huì)創(chuàng)建一個(gè)D3DXMESHCONTAINER臨時(shí)對(duì)象,然后將7個(gè)參數(shù)的值存到此對(duì)象中,最后將這個(gè)對(duì)象賦值給此參數(shù),即此函數(shù)運(yùn)行完畢后,會(huì)產(chǎn)生一個(gè)骨骼動(dòng)畫(huà)容器,而DX框架也將根據(jù)這個(gè)容器的數(shù)據(jù)進(jìn)行運(yùn)算.在看看這個(gè)函數(shù)HRESULTSetTrackPosition(UINTTrack, //動(dòng)作軌跡,一般設(shè)為0,DOUBLEPosition//動(dòng)作開(kāi)始到結(jié)束的時(shí)間段);在boolCSkinMesh::SetAnimationName(constchar*strAnimName);調(diào)用下就OK人物掛武器分析由于代碼不是英雄寫(xiě)的..所以有必要先介紹一下這個(gè)類(lèi)由哪些函數(shù)組成..這類(lèi)由.CMesh(LPDIRECT3DDEVICE9pDevice,char*strMesh);//構(gòu)造函數(shù).virtual~CMesh();//析構(gòu)函數(shù).voidSetPosition(floatx,floaty,floatz);//改變網(wǎng)格對(duì)象的位置.voidRender。;//渲染.voidGetBoundingBox(D3DXVECT0R3*pVmin,D3DXVECT0R3*pVmax);//獲得模型的最大最小點(diǎn).LRESULTSetTransForm(D3DMATRIX*pMat);//關(guān)節(jié)在skinmesh需要一個(gè)重要得函數(shù)LRESULTGetFrameMatrix(LPD3DXFRAMEpFrameBase,char*strFrameName,D3DMATRIX*pMat)這函數(shù)的作用是找到人物角色的各個(gè)關(guān)節(jié)點(diǎn).武器就是通過(guò)這個(gè)接口來(lái)實(shí)現(xiàn)掛接.在實(shí)現(xiàn)上直接Render()就可以;m_pMesh-〉Render(fElapsedTime,m_matWorld,timeGetTime()/1000.0f);//角色D3DMATRIXmat;m_pMesh->GetFrameMatrix(NULL,"Bip01_R_Hand",&mat);//武器畫(huà)在角色手上位置global.m_pMMesh->SetTransForm(&mat);//武器global.m_pMMesh-〉Render();地圖隨機(jī)位置移動(dòng)1)需要注意2點(diǎn):(1).//創(chuàng)建地形global.scene-〉m_pTerrain=newCTerrain(D3DXVECTOR3(0.0f,0.0f,0.0f));global.scene->m_pTerrain->Initialize(40,200,20);//設(shè)置英雄Y軸上點(diǎn)以地形的高度為準(zhǔn)global.scene-〉m_pHero-〉SetPos(400.f,global.scene-〉m_pTerrain-〉GetHeight(500.0f,-500.0f),-100.f);(2).〃生成隨機(jī)點(diǎn)if(global.input->KeyDown(DIK_3)){floati,k;sr

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論