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