本人的設(shè)計(jì)圖可以方便在文本編輯器里查看(>為派生 +為包含)
MAX插件導(dǎo)出的模型資源分:Mesh/Skin, Skeleton, Animation
不同動(dòng)作按照不同的動(dòng)畫文件保存
ResourceHandle 包含基本id
>NamedResourceHandle 帶有名稱資源,包含hashA, hashB, 使用暴雪hash函數(shù)生成
>ModelHandle
>MeshHandle
>SkeletonHandle
>AnimationHandle
獲取資源,如果資源不存在時(shí),自動(dòng)加載
ModelMaster.ManualCache( &ModelHandle )
直接資源訪問:
RawSkeleton = ModelMaster.ManualCache( &SkeletonHandle("a.skl") )
RawSkeleton->GetMarker(...)
異步資源加載,異步id保存于ModelHandle中,在callback中根據(jù)id確認(rèn)
ModelMaster.AsyncCache( &ModelHandle )
獲取資源指針,未加載時(shí),返回空
ModelResource = ModelMaster.Fetch( &ModelHandle )
模型資源加載器
在模型句柄中綁定對(duì)應(yīng)加載器
可以自行編寫帶換裝的ModelLoader,通過讀取自己的配置文件,自行加載資源后生成RawModel
ModelLoader
ModelHandle ---mapping---> ModelLoader ---generate--> RawModel
MeshHandle ---mapping---> MeshLoader ---generate--> RawMesh
SkeletonHandle ---mapping---> SkeletonLoader ---generate--> RawSkeleton
AnimationHandle ---mapping---> AnimationLoader ---generate--> RawAnimation
引用計(jì)數(shù)類
ModelResource
>RawModel
>RawMesh
>RawSkeleton
>RawAnimation
RawModel中不保留Handle,只保留指針
RawModel
+MeshVB 從模型文件中直接讀取頂點(diǎn)格式,包含 靜態(tài),GPU,CPU類型頂點(diǎn)
+RawMesh
+MeshIB 一次性填充IB
>GPUMeshVB 一次性填充VB
>CPUMeshVB 每幀計(jì)算
+Animation 運(yùn)行期數(shù)據(jù)(時(shí)間/幀)
+RawAnimation 原始動(dòng)畫內(nèi)容
+Skeleton
+RawSkeleton