公开/公告号CN102117490A
专利类型发明专利
公开/公告日2011-07-06
原文格式PDF
申请/专利权人 上海幻维数码创意科技有限公司;
申请/专利号CN200910261831.3
发明设计人 陈涛;
申请日2009-12-30
分类号G06T13/40;G06T1/00;
代理机构上海科盛知识产权代理有限公司;
代理人赵继明
地址 200072 上海市闸北区广中西路777弄11号
入库时间 2023-12-18 02:47:37
法律状态公告日
法律状态信息
法律状态
2013-11-13
授权
授权
2011-08-24
实质审查的生效 IPC(主分类):G06T13/40 申请日:20091230
实质审查的生效
2011-07-06
公开
公开
技术领域
本发明涉及三维角色动画骨骼系统的构造方法,尤其是涉及一种基于描述数据的角色模块化骨架系统构造方法及装置。
背景技术
骨骼系统是三维角色动画中不可或缺的一部分,它将角色模型以及动画师用来设置关键桢的控制器通过一定的约束与驱动关系联接起来。良好的骨骼系统可以使动画师有效地控制角色的姿态,提高工作效率。同时,能够实现更加真实可信的肢体行为。对于有机体角色,一套完整强大的骨骼系统是非常复杂的,其中可以牵扯到各方面的知识细节。为了给一个角色制作完整的骨骼系统,甚至可以耗去一个技术人员两周以上的时间。对于角色数可上至几十人的大型动画来说,每一个角色还可能会有多套不同版本的骨骼系统,这样的成本消耗是巨大的。
为了简化这个过程,很多软件开发公司以及动画工作室都自行编写了自己的骨骼系统工具,从而达到快速创建以及降低创建骨骼系统时对相关知识的要求。通过这些工具制作时间往往可以大大缩减到一天以内。而其易用型也会使得整个过程只需要移动一下骨骼然后点选几个按钮一般简单。然而,自动化的同时,使用这些工具就必须在功能性和复杂性上做出很大牺牲了。
就目前自动化骨骼创建技术来说,大体使用的都是预先置入代码的骨骼模版,或者提供多套模版,如二足与四足动物等,由用户选择需要的模版,然后按照固定的方式来配置骨骼系统。这样的方法在一些情况下是足够的,但是,随着现在三维动画技术的不断发展,角色的骨骼设置方法已经变得极其丰富了。由于技术或者计算量的原因,很多方法不可能在同一套骨骼系统中共存,所以对于预置模版的工具来说,使用者通常只有非常有限的选择。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种复杂性高、扩展性好的基于描述数据的角色模块化骨架系统构造方法及装置。
本发明的目的可以通过以下技术方案来实现:
一种基于描述数据的角色模块化骨架系统构造方法,其特征在于,包括以下步骤:
1)启动时从硬盘或网络中加载模块化的骨骼数据;
2)解释部件中的基础描述数据,判断是否为无效部件,若为是,删除该无效部件,并返回步骤2),若为否,在内存中构造各个有效部件的依赖关系,并得出有效部件的列表;
3)解释部件中的图形化相关数据,生成用于显示的几何体数据,并提交给绘图api绘制交互界面,用户通过界面装备各个部件,设置部件中的可变量的值或使用默认值;
4)把可变量的值代入,构造出完整骨骼信息,并检查是否有不被支持的关联,若为是,则提示错误信息,并返回步骤3),若为否,进入步骤5);
5)生成骨骼模板;
6)提示用户按照具体角色微调每个骨骼的定位点;
7)读取当前骨骼位置信息;
8)按照需要进行设置的部件依赖关系,构造设置的优先顺序;
9)解释部件中的设置组合数据,按照优先顺序依次调用各部件的设置过程,并判断设置过程是否发生错误,若为是,执行步骤10),若为否,则执行步骤11);
10)生成错误报告并撤销设置,并判断错误是否来自骨骼微调,若为是,则返回步骤6),若为否,返回步骤3);
11)依据各个部件的组合指示组合各个部件,并判断是否发生错误,若为是,返回步骤10),若为否,执行步骤12);
12)将各个部件中提供的辅助数据注册骨骼系统中,并清理无用记录与数据;
13)骨骼系统完成设置。
所述的基础描述数据包括部件组成信息、部件连接接口信息、部件接口需求信息。
所述的图形化相关数据包括部件几何体信息、部件骨骼节点定位信息。
所述的设置组合数据包括部件依赖信息、部件组合指示信息。
一种基于描述数据的角色模块化骨架系统构造装置,其特征在于,包括服务器、工作站,所述的工作站包括硬盘、内存、CPU、GPU、输入控制模块、显示模块,所述的工作站为多个,各个工作站通过网络与服务器连接,所述的硬盘与内存连接,所述的CPU分别与内存、GPU、输入控制模块连接,所述的GPU分别与内存、显示模块连接。
与现有技术相比,本发明为现有的骨骼系统提供了一种新的组合构造方法,不同于传统的骨骼系统中骨骼的定义必须要预先置入程序代码,本发明允许将整个骨骼系统拆分成肢体片断,使得原来必须预先置入代码的完整骨骼模版可以由用户在使用时从片断拼装而成,从而大大提高骨骼系统的复杂性和扩展性。
附图说明
图1为本发明的流程图;
图2为本发明的硬件结构示意图;
图3为本发明的工作站的结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例1
本发明将完整的角色拆分为多个部件,如手臂、手、头、脊椎、腿、尾、翅膀等等。这些部件能够由用户自由拼装。只要提供的部件类型足够丰富,本方法就可以满足几乎所有的角色类型。同时也可以让同一种肢体部件有多种设置方案供用户按照制作需要来选择。
如图1所示,一种基于描述数据的角色模块化骨架系统构造方法,包括以下步骤:
步骤1、启动时从硬盘或网络中加载模块化的骨骼数据;
步骤2、解释部件中的基础描述数据,判断是否为无效部件,若为是,删除该无效部件,并返回步骤2,若为否,在内存中构造各个有效部件的依赖关系,并得出有效部件的列表;
步骤3、解释部件中的图形化相关数据,生成用于显示的几何体数据,并提交给绘图api绘制交互界面,用户通过界面装备各个部件,设置部件中的可变量的值或使用默认值;
步骤4、把可变量的值代入,构造出完整骨骼信息,并检查是否有不被支持的关联,若为是,则提示错误信息,并返回步骤3,若为否,进入步骤5;
步骤5、生成骨骼模板;
步骤6、提示用户按照具体角色微调每个骨骼的定位点;
步骤7、读取当前骨骼位置信息;
步骤8、按照需要进行设置的部件依赖关系,构造设置的优先顺序;
步骤9、解释部件中的设置组合数据,按照优先顺序依次调用各部件的设置过程,并判断设置过程是否发生错误,若为是,执行步骤10,若为否,则执行步骤11;
步骤10、生成错误报告并撤销设置,并判断错误是否来自骨骼微调,若为是,则返回步骤6,若为否,返回步骤3;
步骤11、依据各个部件的组合指示组合各个部件,并判断是否发生错误,若为是,返回步骤10,若为否,执行步骤12;
步骤12、将各个部件中提供的辅助数据注册骨骼系统中,并清理无用记录与数据;
步骤13、骨骼系统完成设置。
所述的基础描述数据包括部件组成信息、部件连接接口信息、部件接口需求信息。
1)部件组成信息:描述具体骨骼名称,骨骼之间的相互层级关系;
2)部件连接接口信息:描述可以被连接的位置,以及可接受的连接方式;
3)部件接口需求信息:描述该部件可用的前提接口需求。
所述的图形化相关数据包括部件几何体信息、部件骨骼节点定位信息。
1)部件几何体信息:描述该部件在三维空间中存在时的大致几何形状;
2)部件骨骼节点定位信息:描述每个骨骼的默认位置信息以及范围限制。
所述的设置组合数据包括部件依赖信息、部件组合指示信息。
1)部件依赖信息:与实际设置相关的信息,描述该部件设置前必须先完成设置的部件类型;
2)部件组合指示信息:描述部件被连接时所要连接的接口以及连接方式。
如图2、图3所示,一种基于描述数据的角色模块化骨架系统构造装置,包括服务器a、工作站b,所述的工作站包括硬盘b1、内存b2、CPU b3、GPU b4、输入控制模块b5、显示模块b6,所述的工作站b为多个,各个工作站b通过网络与服务器a连接,所述的硬盘b1与内存b2连接,所述的CPU b3分别与内存b2、GPU b4、输入控制模块b5连接,所述的GPU b4分别与内存b2、显示模块b6连接。
实施例2
部件名定义为:
[Namespace:]Type:PartName[(mark1,mark2,mark3,......)];
Type定义基本类型;
PartName为调用时使用的部件名;
Namespace为可选的命名空间;
部件实例化后可在名字后添加额外标记信息以识别诸如左右对称肢体、阵列复制对称、实例化标号;
具体信息定义如下:
部件组成信息:
1)JointName1>JointName2>JointName3>...>JointNameX|,
JointName4>JointName5>JointName6>...>JointNameX|,
......,
JointNameX记录骨骼名,改命名在同一模块中不可重复,
用$JointName(Interpolate Method)可表示可变数量的骨骼链,()中的类型名决定骨骼链的插值方法,
|符号开始新骨骼链;
2)部件连接接口信息:
LinkName(LinkMethod):{JointName1(weight1),JointName2(weight2),.......},
LinkName定义一个新接口,接口可以包括复数的骨骼以及其他有坐标对象,最终的定位由所有列举对象以及其后方的()中定义的权重值来加权平均,
LinkMethod定义连接方式,包括Position、Orientation、Scale、Parent、Hierarchy、Follow、Invert等等连接方法;
3)部件接口需求信息:
[Namespace:][Type:]LinkName,
定义Type后Type成为搜索的必要条件,
定义Namespace后Namespace成为搜索必要条件;
4)部件几何体信息:
Matrix:obj,
Matrix为一个4x4变换矩阵,定义obj的坐标变换,
Obj内容参考obj格式定义,该定义可以单独另行保存,从而允许实例化关联复制;
5)部件骨骼节点定位信息:
a.JointName(x,y,z),
b.JointName(x,y,z,w),
c.JointName(rx,ry,rz,d),
d.JointName(m11,m12,m13,m21,m22,m23,m31,m32,m33),
骨骼位置可以用以上四种方式中任何一种来定义,a定义在世界坐标空间中,b、c、d定义在父骨骼的坐标空间中,b定义为相对位置,c定义为父骨骼的x轴偏转后位移获得,d用3x3矩阵定义父骨骼坐标空间中相对变换,
其中x,y,z,w,d参数都可以用诸如min:max:default方式来定义最大、最小以及默认值;
6)部件依赖信息:
[Namespace:]Type,
定义Namespace后Namespace成为搜索必要条件;
7)部件组合指示信息:
AbstractInterface>[Namespace:]Type:PartName[(mark1,mark2,......)]LinkName,
AbstractInterface为每个模块自行定义的对象,该对象在各部件设置完成后与具体对象成对提交给骨骼设置系统的连接机制。
其他参数含义同前述同名信息定义。
机译: 打印设置装置,计算机可读记录介质和图像形成系统,用于生成以包括在多种数据格式中的一种数据格式描述的打印设置信息,并将打印作业提交至能够基于打印设置执行打印作业的图像形成装置以多种数据格式描述的信息
机译: 用于为角色的骨架图案和/或角色的绘制图案生成数据的方法和装置
机译: 一代在线电子商务和联网系统,用于将传统的基于非组和基于角色的逻辑访问转换为基于组和基于角色的访问安全机制,以保护用户数据隐私并生成更多在线流量