本人的设计图可以方便在文本编辑器里查看(>为派生 +为包含)
MAX插件导出的模型资源分:Mesh/Skin, Skeleton, Animation
不同动作按照不同的动画文件保存
ResourceHandle 包含基本id
>NamedResourceHandle 带有名称资源,包含hashA, hashB, 使用暴雪hash函数生成
>ModelHandle
>MeshHandle
>SkeletonHandle
>AnimationHandle
获取资源,如果资源不存在时,自动加载
ModelMaster.ManualCache( &ModelHandle )
直接资源访问:
RawSkeleton = ModelMaster.ManualCache( &SkeletonHandle("a.skl") )
RawSkeleton->GetMarker(...)
异步资源加载,异步id保存于ModelHandle中,在callback中根据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
引用计数类
ModelResource
>RawModel
>RawMesh
>RawSkeleton
>RawAnimation
RawModel中不保留Handle,只保留指针
RawModel
+MeshVB 从模型文件中直接读取顶点格式,包含 静态,GPU,CPU类型顶点
+RawMesh
+MeshIB 一次性填充IB
>GPUMeshVB 一次性填充VB
>CPUMeshVB 每帧计算
+Animation 运行期数据(时间/帧)
+RawAnimation 原始动画内容
+Skeleton
+RawSkeleton