資源簡介
【C++】3D骨骼動畫“劍舞”程序源碼by淺墨
代碼片段和文件信息
//=============================================================================
//?Desc:?AllocateHierarchyClass.cpp
//?來自微軟官方DirectX?SDK?Samples中的骨骼動畫類
//=============================================================================
#include?“AllocateHierarchyClass.h“
//--------------------------------------------------------------------------------------
//?Name:?AllocateName()
//?Desc:?為骨骼或網格名稱的字符串分配內存
//--------------------------------------------------------------------------------------
HRESULT?AllocateName(?LPCSTR?Name?LPSTR*?pNewName?)
{
UINT?cbLength;
if(?Name?!=?NULL?)
{
cbLength?=?(?UINT?)strlen(?Name?)?+?1;
*pNewName?=?new?CHAR[cbLength];
memcpy(?*pNewName?Name?cbLength?*?sizeof(?CHAR?)?);
}
else
{
*pNewName?=?NULL;
}
return?S_OK;
}
//--------------------------------------------------------------------------------------
//?Name:?GenerateSkinnedMesh
//?Desc:?生成蒙皮網格模型。該函數判斷當前網格容器是否包含有蒙皮信息,如果當前網格模型
//???????中不包含蒙皮信息,則直接退出該函數。接下來確定所需要的矩陣調色板容量。最后調
//???????用ID3DXSkinInfo::ConvertToIndexedBlendedMesh()函數生成索引蒙皮網格模型
//--------------------------------------------------------------------------------------
HRESULT?GenerateSkinnedMesh(?IDirect3DDevice9*?pd3dDevice?D3DXMESHCONTAINER_DERIVED*?pMeshContainer?)
{
D3DCAPS9?d3dCaps;
pd3dDevice->GetDeviceCaps(?&d3dCaps?);
if(?pMeshContainer->pSkinInfo?==?NULL?)
return?S_OK;
SAFE_RELEASE(?pMeshContainer->MeshData.pMesh?);
SAFE_RELEASE(?pMeshContainer->pBoneCombinationBuf?);
if?(FAILED(pMeshContainer->pSkinInfo->ConvertToBlendedMesh(
pMeshContainer->pOrigMesh?
D3DXMESH_MANAGED?|?D3DXMESHOPT_VERTEXCACHE
pMeshContainer->pAdjacency
NULL?NULL?NULL
&pMeshContainer->NumInfl
&pMeshContainer->NumAttributeGroups
&pMeshContainer->pBoneCombinationBuf
&pMeshContainer->MeshData.pMesh)))
return?E_FAIL;
return?S_OK;
}
//--------------------------------------------------------------------------------------
//?Name:?CAllocateHierarchy::Createframe()
//?Desc:?創建框架?僅僅是分配內存和初始化還沒有對其成員賦予合適的值
//--------------------------------------------------------------------------------------
HRESULT?CAllocateHierarchy::Createframe(?LPCSTR?Name?LPD3DXframe*?ppNewframe?)
{
HRESULT?hr?=?S_OK;
D3DXframe_DERIVED?*pframe;
*ppNewframe?=?NULL;
//?為框架指定名稱
pframe?=?new?D3DXframe_DERIVED;??//?創建框架結構對象
if?(FAILED(AllocateName(Name?(LPSTR*)&pframe->Name)))
{
delete?pframe;
return?hr;
}
//?初始化D3DXframe_DERIVED結構其它成員變量
D3DXMatrixIdentity(&pframe->TransformationMatrix);
D3DXMatrixIdentity(&pframe->CombinedTransformationMatrix);
pframe->pMeshContainer???=?NULL;
pframe->pframeSibling????=?NULL;
pframe->pframeFirstChild?=?NULL;
*ppNewframe?=?pframe;
pframe?=?NULL;
return?hr;
}
//--------------------------------------------------------------------------------------
//?Name:?CAllocateHierarchy::CreateMeshContainer()
//?Desc:?創建蒙皮網格容器,以加載蒙皮信息
//---------------------
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????393270??2013-04-20?00:56??D3Ddemo20?by淺墨\D3Ddemo20\353bd50.bmp
?????文件?????393270??2013-04-20?00:56??D3Ddemo20?by淺墨\D3Ddemo20\9496a70.bmp
?????文件?????786486??2013-04-20?00:56??D3Ddemo20?by淺墨\D3Ddemo20\9622210.bmp
?????文件??????16353??2013-04-21?18:15??D3Ddemo20?by淺墨\D3Ddemo20\AllocateHierarchyClass.cpp
?????文件???????3234??2013-04-21?21:12??D3Ddemo20?by淺墨\D3Ddemo20\AllocateHierarchyClass.h
?????文件?????196662??2013-04-20?00:56??D3Ddemo20?by淺墨\D3Ddemo20\bd378f0.bmp
?????文件???????9820??2013-04-20?01:10??D3Ddemo20?by淺墨\D3Ddemo20\CameraClass.cpp
?????文件???????2273??2013-03-30?22:40??D3Ddemo20?by淺墨\D3Ddemo20\CameraClass.h
?????文件???????4473??2013-04-21?19:52??D3Ddemo20?by淺墨\D3Ddemo20\D3Ddemo20.vcxproj
?????文件???????2046??2013-04-21?19:52??D3Ddemo20?by淺墨\D3Ddemo20\D3Ddemo20.vcxproj.filters
?????文件????????143??2013-04-21?19:33??D3Ddemo20?by淺墨\D3Ddemo20\D3Ddemo20.vcxproj.user
?????文件????????848??2013-04-06?08:51??D3Ddemo20?by淺墨\D3Ddemo20\D3DUtil.h
?????文件???????4595??2013-02-03?20:37??D3Ddemo20?by淺墨\D3Ddemo20\DirectInputClass.cpp
?????文件???????1287??2013-02-03?20:37??D3Ddemo20?by淺墨\D3Ddemo20\DirectInputClass.h
?????文件??????27371??2002-06-20?06:33??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\backaw2.jpg
?????文件????9123374??2013-04-22?09:09??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\Eternal?Love?(Short?Version).wav
?????文件??????35512??2002-06-20?06:34??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\frontaw2.jpg
?????文件?????120000??2013-03-17?20:28??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\heighmap.raw
?????文件?????171014??2004-03-02?22:23??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\icon.ico
?????文件??????26871??2002-06-20?06:34??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\leftaw2.jpg
?????文件??????33407??2002-06-20?06:34??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\rightaw2.jpg
?????文件??????36898??2013-03-30?23:04??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\snow1.jpg
?????文件??????45727??2013-03-30?23:07??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\snow2.jpg
?????文件??????51965??2013-03-30?22:55??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\snow3.jpg
?????文件??????38096??2013-03-30?23:00??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\snow4.jpg
?????文件??????46402??2013-03-30?23:02??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\snow5.jpg
?????文件??????36587??2013-03-30?23:13??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\snow6.jpg
?????文件??????14283??2002-06-20?06:34??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\topaw2.jpg
?????文件?????654220??2004-12-22?11:08??D3Ddemo20?by淺墨\D3Ddemo20\GameMedia\wood.jpg
?????文件????5503680??2013-04-20?20:50??D3Ddemo20?by淺墨\D3Ddemo20\lxq.X
............此處省略37個文件信息
- 上一篇:3D游戲場景漫游4.0版程序源碼by淺墨
- 下一篇:基于TCP協議的網絡聊天室
評論
共有 條評論