模型动画系统设计的一些心得:
模型系统是一个渲染引擎里的重要组成部分。它的质量直接关系到引擎的渲染效率,和开发效率。
我觉得评价一个模型系统主要包含两个方面:
一: 算法。
算法这东西其实是挺透明的。网上到处可以找到这些东西的资料。其中比较有用的技术有:骨骼动画,表情动画,材质动画,布料(柔体)系统等。这些东西没什么好讲的。讲也讲不过各位大大。
二:系统设计。
系统设计一般是做工程人的才会考虑。网上这方面的资料相对就少的多。这段时间我一直在做角色系统,花的时间最多也就是这块。我总结出一些初步想法。列在下面。请大家提意见。
我的设计目标是一个灵活,两个简单。
1: 美术策划使用我这个模型系统简单(导出模型简单,策划程序在组织整个游戏的数据的时候简单)。
2: 程序员在使用这个模型系统的时候简单。
3: 自己在以后扩展系统的时候灵活。比如能够方便的集成一些新的算法如IK动画之类的。
根据以上三个部分,我将我的模型系统分成以下几个部分。
一:数据组织模块:
二:数据呈现模块:
三:数据控制模块:
四:数据加工模块:(尤其感谢宋L疆的modifier的尝试,给了我做这个模块的信心)
1):数据组织模块.
目前我仅仅完成了数据组织模块。我认为所有的模型系统的资源(Mesh,skeleton , action data等)都应该有资源管理器来统一调度。比如一个模型里有多个Mesh,多个action。那么这些Mesh,action都应该有对应的管理器来管理。
同时,我认为,所有的资源能灵活的组合起来。比如你可以往一个Model里加入不同的Mesh。加入不同的Action。并能把这些Mesh绑定到特定的骨架上面。
所以我加入了以下的Resource manager:
CoreMesh Manager: 所有的Mesh都从这里加载 (CoreMesh和Mesh的分别为一个是数据,
一个是可以直接面向用户的对象)
Action Manager : 所有的动作都从这里加载。
CoreModel Mananager : CoreModel里保存了骨架等信息
Model Manager : 管理对应的Model,Model由Mesh,CoreModel,Action等组成。
以上四个管理器能做到从打包/非打包的文件系统里加载任何需要的资料。
接口上,用法为:
XModelManager modelMgr;
HXModel hModel = modelMgr.loadModel("actor",false);
hModel->addMesh(modelMgr.loadMesh("dress/red_cloth" , "actor");
或者如下(加载一个完整的模型)
XModelManager modelMgr;
HXModel hModel = modelMgr.loadModel("npcWolf",true);
2) 数据加工模块.
也就是老宋现在的vModifier系统。
CoreMesh/CoreModel里保存了模型的数据。vModifier对这些数据进行修改(CPU或者GPU的)。
然后产生一个新的容纳数据的对象xMeshObject.
3) 数据呈现模块.(似乎这块不完全属于模型系统)
该模块负责和渲染器的材质系统进行接口,从Modifier的堆栈里把加工过的最终xMeshObject取出来,然后根据附加载模型上的材质,来生成一个或者多个xDrawElement丢到渲染器里进行渲染。
4) 模型的控制模块.
到以上模块为止,模型还没有动作的概念。数据控制模块负责对骨架之类的进行控制。主要分以下几类。
(a)骨架控制:能用动作数据来混合骨架,配合SkinModifier来完成骨骼动画。
并能完成走帧,动作过渡,动作融合等。
(b)顶点动画的控制,如果Mesh是一个顶点动画,那么这个控制器可以控制顶点动画的走帧等功能。
(c)表情动画控制。
(d)柔体的计算控制,似乎也可以用一个对应的柔体计算的修改器。
暂时能想到的就这些。今天把一个静态模型的加载到管理的代码基本写通能运行了。看来第一块数据组织基本已经通过了。有什么意见欢迎大家提给我,争取在下面几个模块能做的好用一点。
分享到:
相关推荐
目 录 2 一 系统需求分析 1 1.1系统需求目标 1 1.2 Abstract-系统需求目标英文摘要(根据1.1系统需求目标) 1 1.3 系统功能需求(图形、图像类功能需求可简写) 1 ...七 设计心得 3 八 参考资料链接 3
很多人物模型 都带动画,资源很全,有真实的 有卡通的,有守卫,战士等。fbx格式
3d模型,带有动画,可以用来做AR或者其他的
导出给cocosCreator用
这是模型库管理系统的设计文档,里面讲述了模型库管理系统的需求分析,设计方法,实现结果。
两种嵌入式系统设计研究与分析
士兵的模型和动画,可以用来做动画,有待机动画,攻击动画等
在模块化的系统设计中,适合各个模块的最佳计算模型往往不尽相同,这些计算模型包括有穷状态自动机、Petri网、离散事件和事件关系图等。为了方便设计者和提高工作效率,有必要允许对模块采用不同的计算模型,再运用...
本文介绍基于模型的机电系统设计,大家没事儿了来学习一下。
船舶模型制作实训心得.pdf
Unity工地工人模型(带说话,手势动画),导入可直接使用
带有动画的3d人物模型,其中包括是tag和fbx两种格式的3d模型
电梯模型plc控制系统设计毕业论文完整版有需要的看看!
两套人物模型,有动画;酒娘和练功师傅。含有动画的unity人物模型;含有动画的unity人物模型;含有动画的unity人物模型
计算机组成原理 带移位运算模型机的设计与实现
技术干货。详解数据仓库、元数据管理中的专业领域——元模型管理。解读CWM的理念、元模型怎么设计、元模型管理落地系统要怎么设计。
这个资源是我当时的学期末大作业,花费了很长的时间才做出来的3dmax运动模型动画,希望需要的同学能够分享!
基于霍尔三维模型的智能停车系统设计.pdf
对fbx中的关键帧动画进行播放控制, Osg中使用的思路:1、用osg的fbx插件读取fbx到osg模型 2、解构得到的osg模型,将模型分解成一个个的关键帧(osgAnimation::KeyFrame), 3、重组关键帧得到需要的动画 3.1 重组...
哈工程计算机组成实验——基本模型机的设计