CN117173293A - 一种基于Unity的动画曲线序列化方法 - Google Patents
一种基于Unity的动画曲线序列化方法 Download PDFInfo
- Publication number
- CN117173293A CN117173293A CN202311451259.3A CN202311451259A CN117173293A CN 117173293 A CN117173293 A CN 117173293A CN 202311451259 A CN202311451259 A CN 202311451259A CN 117173293 A CN117173293 A CN 117173293A
- Authority
- CN
- China
- Prior art keywords
- animation
- curve
- attribute
- curves
- unity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000003860 storage Methods 0.000 claims abstract description 22
- 230000027455 binding Effects 0.000 claims abstract description 19
- 238000009739 binding Methods 0.000 claims abstract description 19
- 238000004458 analytical method Methods 0.000 claims abstract description 9
- 238000013500 data storage Methods 0.000 claims abstract description 8
- 239000000463 material Substances 0.000 claims description 5
- 238000009877 rendering Methods 0.000 claims description 4
- 230000008859 change Effects 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 abstract description 3
- 238000004519 manufacturing process Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 8
- 238000006073 displacement reaction Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 240000007594 Oryza sativa Species 0.000 description 1
- 235000007164 Oryza sativa Nutrition 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000011230 binding agent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012857 repacking Methods 0.000 description 1
- 235000009566 rice Nutrition 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000002904 solvent Substances 0.000 description 1
- 238000012916 structural analysis Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Processing Or Creating Images (AREA)
Abstract
一种基于Unity的动画曲线序列化方法,涉及动画制作技术领域,包括:包括:S1:对Unity的动画剪辑中动画曲线的绑定信息提取;S2:解析动画曲线的类型、物体路径、关键帧和动画事件;S3:对动画曲线进行分量合并以形成完整的曲线对象节省存储空间和提升解析效率;S4:定义动画曲线的数据存储结构以支持动画剪辑的序列化方式存储;S5:将解析后的动画序列化数据以数据表的方式存储于关系型数据库;S6:当动画发生变更后,重新对动画进行解析,通过实现增量的动画曲线的序列化解析与结构化存储,从而达到程序无需重新编译打包即可实现程序热更的目的。
Description
技术领域
本发明涉及动画制作技术领域,具体涉及一种基于Unity的动画曲线序列化方法。
背景技术
Unity中的动画剪辑(AnimationClip)是一个Unity内置的动画数据类型,通常不需要手动进行序列化。Unity自动处理AnimationClip的序列化和反序列化,使其能够在场景和资源文件之间进行保存和加载。
由于Unity未提供AnimationClip对象的序列化方法,且AnimationClip是以anim文件的私有格式存储,其编辑和解析必须依赖Unity编辑器开发环境,并且使用Unity提供的API方法进行解析,在运行时环境中,anim文件随其他资源一同打包到客户端程序中。对于需要动态更新动画内容的***,只能通过再次打包更新程序的方式进行动画内容的更新,这给程序的发布和维护带来了一定的不便。
同时,在某些应用场景中,需要动态的改变动画曲线以实现复杂的动画应用需求。而现行的方法是在Unity编辑器软件中进行动画的编辑,在运行时环境中是无法动态的变更动画属性的,例如:动态拆分关键帧以达到动画分段的需求。
发明内容
本发明实施例提供了一种基于Unity的动画曲线序列化方法,在编辑器环境中对动画剪辑进行结构化的解析并存储于关系型数据库,包括曲线类型、物体路径、关键帧和动画事件的解析和存储,在运行时环境中,可对存储于数据库的动画数据反向动态构造动画剪辑对象,再利用Unity的播放机制Animation、Animator或Playable等进行动画的播放,达到程序无需重新编译打包即可实现程序热更新的目的。
名词对照:动画剪辑(AnimationClip)、动画曲线(Animation Curves)、动画曲线绑定(Curve Bindings)、动画曲线对象(MvalAnimCurve)、动画事件对象(MvalAnimEvent)、动画事件(Animation Events)、动画内容对象(MvalAnimEventData)、动画物体对象(MvalAnimObject)、动画关键帧对象(MvalKeyframe)、类型(Type)、物体路径(Path)、属性(PropertyName)、关键帧(Keyframes)、动画事件(Animation Events)、形变(Transform)、渲染(Renderer)、音频源(AudioSource)、3D刚体(Rigidbody)、3D碰撞器(Collider)、灯光(Light)、材质(Material)、时点(Time)和时点值(Value)、函数(Function)、整数参数(Int)、字符串参数(String)、对象引用参数(ObjectReference)、函数委托(FunctionReference)。
一种基于Unity的动画曲线序列化方法,包括以下步骤:
S1,对Unity的动画剪辑AnimationClip中动画曲线Animation Curves的绑定信息进行提取;
其中,动画曲线Animation Curves的绑定信息为获取动画曲线绑定CurveBindings集合,是所有曲线的属性绑定数组,每个曲线绑定包含了类型Type、物体路径Path和属性PropertyName;
S2,解析动画曲线的类型Type、物体路径Path、属性PropertyName、关键帧Keyframes和动画事件Animation Events数据;
具体的,类型Type解析包括:形变Transform、渲染Renderer、音频源AudioSource、3D刚体Rigidbody、3D碰撞器Collider、灯光Light、材质Material;
关键帧Keyframes包括:时点Time 和时点值Value;
动画事件Animation Events包括:时点Time、函数Function、整数参数Int、字符串参数String、对象引用参数ObjectReference、函数委托FunctionReference;
S3,对动画曲线进行分量合并形成完整的曲线对象;
其中,对动画曲线进行分量合并以形成完整的曲线对象可节省存储空间和提升解析效率;
S4,定义动画曲线的数据存储结构以序列化方式存储动画剪辑;
具体的,定义动画曲线对象MvalAnimCurve、动画事件对象MvalAnimEvent、动画内容对象MvalAnimEventData、动画物体对象MvalAnimObject、动画关键帧对象MvalKeyframe以进行动画剪辑的序列化存储;
S5,将解析后的动画序列化数据以数据表的方式存储于关系型数据库;
S6,当动画发生变更后,重复执行上述步骤S1~S5重新对动画进行解析,对比数据的唯一性后增量存储于关系型数据库。
进一步的,所述步骤S1包括:
获取动画剪辑:获取包含目标曲线的动画剪辑;
获取曲线:从动画剪辑中获取特定曲线,获取AnimationClip的属性值Curves,用以获取动画中的所有曲线,使用该属性来检索曲线对象;
遍历曲线:对于动画剪辑中包含的多个曲线,通过遍历这些曲线以找到需要的曲线以及曲线中包含的关键帧集合,以及曲线的属性和路径等信息;
完成:完成上述解析后,能够获取曲线的值和关键帧信息,从而可以在代码中对动画进行更精细的操作,例如修改曲线的值或分析动画数据。
进一步的,所述步骤S2包括:
遍历曲线:对于每个属性绑定,遍历曲线列表以获取曲线的具体信息,对于每个曲线,执行以下步骤:
获取曲线类型Type:使用属性绑定的type属性来获取曲线的类型,是Unity组件的类型,例如:Transform、Renderer等;
获取物体路径Path:使用属性绑定的path属性来获取曲线所应用于的游戏对象的路径,是游戏对象在场景中的层次结构路径;
获取属性PropertyName名称:使用属性绑定的propertyName属性来获取受影响的属性名称,是在该组件类型上被动画化的具体属性,例如localPosition.x、material.color.a等;
获取关键帧Keyframes:对于每个曲线,使用AnimationUtility.GetEditorCurve方法来获取曲线上的关键帧信息,包括:关键帧数组,其中包含时间和值;
获取动画事件Animation Events:使用AnimationClip的events属性来获取动画事件信息,包括每个事件的时间、函数名称和自定义参数等信息。
进一步的,所述步骤S3包括:
针对位移、旋转、缩放等形变曲线进行XYZ轴向分量的合并为完整的曲线值,以形成完整的曲线对象节省存储空间和提升解析效率;
合并不同曲线的XYZ分量通常涉及将各个分量的曲线在同一时间点的值相加,然后将结果生成新的合并曲线;
准备曲线:确定同一曲线的三个不同的分量曲线,即分别表示X、Y和Z分量的曲线。这些曲线是 AnimationCurve 对象,每个曲线代表了一个分量的动画变化;
遍历时间点:创建一个循环,以遍历这三个曲线上的所有时间点,确保每个曲线上都有相同的时间点;
在相同时间点合并值:对于每个时间点,从X、Y和Z曲线中获取相应时间点的值,然后,将这三个值相加,得到一个合并后的值;
创建新的合并曲线:使用合并后的值和时间点创建一个新的 AnimationCurve 对象,该曲线将代表XYZ分量的合并动画;
完成:获得一个合并了X、Y和Z分量的曲线,代表了它们的组合动画,这个新曲线可以用于需要合并动画分量的情况,例如:对象的位移或旋转。
进一步的,所述步骤S4包括:
定义动画曲线对象MvalAnimCurve、动画事件对象MvalAnimEvent、动画内容对象MvalAnimEventData、动画物体对象MvalAnimObject以及动画关键帧对象MvalKeyframe,这些对象均需标注为Serializable类型,以便利用第三方的序列化和反序列化工具进行数据的存储。
其中上述对象具体包括以下内容:
动画曲线对象MvalAnimCurve:曲线类型、属性名称、关键帧集合;
动画事件对象MvalAnimEvent:时点、函数、参数和对象引用;
动画内容对象MvalAnimEventData:自定义时间的内容,例如:对象、标签、高亮等属性;
动画物体对象MvalAnimObject:物体路径、关键帧集合、曲线集合;
动画关键帧对象MvalKeyframe:时点、值。
进一步的,所述步骤S5和S6均包括:根据关系数据库的类型进行的CRUD操作,例如SQLite、MySQL等,所述步骤S5和S6根据步骤S4中所定义的对象,进行唯一键值的匹配从而实现增量的数据存储。
本发明实施例提供的上述技术方案的有益效果至少包括:
1、本发明将Unity动画剪辑的存储内部机制转变为了公开的、序列化的数据对象并存储于关系型数据库***,是构建动态的动画执行相关功能的基础。
2、本发明使得动画剪辑的构造可以脱离Unity编辑器环境,在客户端程序可以在运行过程中按照应用需求进行动画剪辑的生成、剔除、叠加与混合,这对于复杂的动画场景是有明显的便捷性的,使得最终用户无需掌握专业的动画编辑知识,便可以通过指定某个物体、某个时间段就可以构造动画剪辑,实现低代码的动画二次编辑功能。
3、本发明解耦了程序与动画数据,当动画内容发生变化后,只需要同步序列化后的动画对象即可实现内容的更新,明显提升程序分发的效率和降低维护难度。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例公开的基于Unity的动画曲线序列化方法的流程示意图;
图2为本发明实施例公开的步骤S4中的主要数据结构定义图。
实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如图1~2所示,本发明实施例提供一种基于Unity的动画曲线序列化方法,包括以下步骤:
S1,获取动画曲线绑定Curve Bindings集合,是所有曲线的属性绑定数组,每个曲线绑定包含了类型Type、物体路径Path和属性PropertyName;
具体的,在编辑器中选择任意一个动画文件*.anim,通过AssetDatabase工具来加载这个动画资产获取实例化的动画剪辑对象AnimationClip。
获取动画剪辑的基本数据,包括:属性、路径和类型作为持久化对象MvalAnimCurve的属性信息。
对于多个动画文件,遍历整个Assets资产目录中的动画文件后,使用上述方式来获取所有动画剪辑的实例集合。
根据应用场景的不同,可对动画剪辑文件进行分类存储,例如:按照维修作业指导书的任务进行分类存储,从而实现适应业务应用的自动检索和实例化需求。
S2,解析动画曲线的类型Type、物体路径Path、属性PropertyName、关键帧Keyframes和动画事件Animation Events等数据;
具体的,根据步骤S1所获取的动画剪辑实例对象,使用Unity工具API获取所有的编辑器曲线绑定集合,通过曲线的集合对每个曲线进行解析和序列化操作。
要提取的曲线基本信息:曲线属性、曲线类型和物体路径,这是所有曲线的共同属性。
要提取的曲线关键帧:曲线对象如果定义了关键帧,会保存关键帧集合为曲线的一个属性值,对关键帧进行逐个解析以获取关键帧的时点、时点值、入切线值、出切线值、入切线权重、出切线权重和权重的模式。
要提取的动画事件:动画中如果定义了动画事件,在某个时点上会存在一个动画事件对象,其信息包括:时点、名称、函数、整型值参数、浮点型值参数、字符型值参数和对象引用值。
需要注意的是,对象引用值是一个派生于Unity ScriptableObject类型的自定义数据结构,根据这个自定义数据结构而定义要序列化的对象。这是进行动画扩展的关键信息,因此也需要进行序列化以便进行数据存储和应用解析。
S3:对动画曲线进行分量合并以形成完整的曲线对象节省存储空间和提升解析效率;
具体的,由于动画剪辑中的曲线是对任意物体的单一值存储而设计的数据结构,在本发明中,对动画曲线进行了扩展,使得同一物体的同类曲线合并为一个曲线,这将极大的节省存储空间和解析性能的开销。以位移动画为例,通常包括:位移、旋转和缩放三组曲线,在未合并曲线分量前,其具体计算公式如下:
曲线总量 = 物体个数 × 3(位移、旋转和缩放3个曲线)× 3(每个曲线3个分量);
经过合并曲线分量后,其具体计算公式如下:
曲线总量 = 物体个数 × 3(位移、旋转和缩放3个曲线)× 1(每个曲线1个合并分量);
有此可见,仅位移动画可以节省1/3的存储容量,节省率约为66%。
进一步的,在曲线分量合并的过程中会涉及到动态插值的计算以确保动画是平滑而非跳变的。
动画插值Animation Interpolation计算方法是在两个或多个关键帧之间计算中间值的过程,以使动画在这些关键帧之间平滑过渡,插值可以用于处理各种类型的动画,包括对象的位移、旋转、缩放、颜色渐变等。
本实施例中支持的插值方法有:
线性插值:根据时间的线性函数来计算中间值,从一个关键帧到另一个关键帧。这使得动画在两个关键帧之间具有匀速的变化,其采用的公式如下:
Lerp(A, B, t) = A + (B - A) × t
其中:
Lerp(A, B, t) 是线性插值的结果;
A 是起始值;
B 是结束值;
t 是插值因子(通常在0到1之间),它决定了在起始值和结束值之间的权重。
贝塞尔插值:贝塞尔插值使用贝塞尔曲线来定义插值路径,允许创建更复杂的插值效果,这通常用于创建曲线运动或更自然的动画轨迹,采用二次贝塞尔插值方法,其公式如下:
B(t) = (1 - t)² × A + 2(1 - t)t × B + t² × C
其中:
B(t) 是插值结果;
A 是起始点;
B 是控制点;
C 是结束点;
t 是插值因子(通常在0到1之间)。
样条插值:样条插值使用曲线样条Spline来定义动画路径,可以更精确地控制动画的轨迹和速度,采用二次样条插值方法,其公式如下:
S(t) = (1 - t) × A + t × B
其中:
S(t) 是插值结果;
A 是起始点;
B 是中间点;
C 是结束点;
t 是插值因子(通常在0到1之间)。
四元数插值:四元数插值通常用于旋转动画,以避免万向锁问题,它允许平滑地插值旋转,采用球形插值方法,其公式如下:
Lerp(q1, q2, t) = (1 - t) × q1 + t × q2
其中:
Lerp(q1, q2, t) 是插值结果;
q1 是起始四元数;
q2 是结束四元数;
t 是插值因子(通常在0到1之间)。
S4,定义动画曲线的数据存储结构以支持动画剪辑的序列化方式存储;
具体的,见图2:主要数据结构定义图。
S5,将解析后的动画序列化数据以数据表的方式存储于关系型数据库;
具体的,选择一个可用于跨平台数据存储的关系型数据库,在本实施例中使用realm作为数据库示例,其主要过程如下:
创建一个Realm数据库:首先要导入Realm的库和设置Realm的配置。在应用的入口点初始化Realm。在应用启动时,使用Realm配置来创建或打开数据库连接;
创建一个Realm对象模型:定义一个继承自RealmObject的数据模型类。这个类将用于表示数据库中的对象,根据S4所定义的数据对象进行实体的创建;
从数据库中读取对象:使用Realm查询语言来定义一个查询,以检索数据库中的对象。执行查询并获取结果,通常以Realm对象的集合形式返回;
更新对象的属性:获取或创建要更新的对象。开始一个Realm事务,修改对象的属性,然后提交事务;
删除对象:获取要删除的对象。开始一个Realm事务,将对象从数据库中删除,然后提交事务。
S6,当动画发生变更后,重新对动画进行解析。
具体的,当动画剪辑文件*.anim发生变化后,重复以步骤S1~S5的过程,重新对动画进行解析,直到关系型数据库中存储最新的动画剪辑序列化信息。
至此,Unity曲线动画的序列化过程全部完成。
本实施例通过提供了基于Unity的动画曲线序列化方法,在编辑器环境中对动画剪辑进行结构化的解析并存储于关系型数据库,包括曲线类型、物体路径、关键帧和动画事件的解析和存储,在运行时环境中,可对存储于数据库的动画数据反向动态构造动画剪辑对象,再利用Unity的播放机制Animation、Animator或Playable等进行动画的播放,达到程序无需重新编译打包即可实现程序热更新的目的。
应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个***所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。
结合本文的实施例所描述的方法或者算法的步骤可直接体现为硬件、由处理器执行的软件模块或其组合。软件模块可以位于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动磁盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质连接至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。该ASIC可以位于用户终端中。当然,处理器和存储介质也可以作为分立组件存在于用户终端中。
对于软件实现,本申请中描述的技术可用执行本申请所述功能的模块(例如,过程、函数等)来实现。这些软件代码可以存储在存储器单元并由处理器执行。存储器单元可以实现在处理器内,也可以实现在处理器外,在后一种情况下,它经由各种手段以通信方式耦合到处理器,这些都是本领域中所公知的。
上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
Claims (9)
1.一种基于Unity的动画曲线序列化方法,其特征在于,包括以下步骤:
S1,对Unity的动画剪辑中动画曲线的绑定信息进行提取;
S2,解析动画曲线的类型、物体路径、属性、关键帧和动画事件数据;
S3,对动画曲线进行分量合并形成完整的曲线对象;
S4,定义动画曲线的数据存储结构以序列化方式存储动画剪辑;
S5,将解析后的动画序列化数据以数据表的方式存储于关系型数据库;
S6,当动画发生变更后,重复执行上述步骤S1~S5重新对动画进行解析,对比数据的唯一性后增量存储于关系型数据库。
2.根据权利要求1所述的一种基于Unity的动画曲线序列化方法,其特征在于,所述步骤S1包括:
获取动画剪辑:获取包含目标曲线的动画剪辑;
获取曲线:从动画剪辑中获取特定曲线,获取动画剪辑的属性值,用以获取动画中的所有曲线,使用该属性来检索曲线对象;
遍历曲线:对于动画剪辑中包含的多个曲线,通过遍历这些曲线以找到需要的曲线以及曲线中包含的关键帧集合,以及曲线的属性和路径信息;
完成:完成上述解析后,获取曲线的值和关键帧信息。
3.根据权利要求1所述的一种基于Unity的动画曲线序列化方法,其特征在于,所述步骤S2中的类型包括形变、渲染、音频源、3D刚体、3D碰撞器、灯光和材质。
4.根据权利要求3所述的一种基于Unity的动画曲线序列化方法,其特征在于,所述步骤S2中的关键帧包括时点和时点值。
5.根据权利要求4所述的一种基于Unity的动画曲线序列化方法,其特征在于,所述步骤S2中动画事件包括时点、函数、整数参数、字符串参数、对象引用参数和函数委托。
6.根据权利要求5所述的一种基于Unity的动画曲线序列化方法,其特征在于,所述步骤S2包括:
遍历曲线:对于每个属性绑定,遍历曲线列表以获取曲线的具体信息,对于每个曲线,执行以下步骤:
获取曲线类型:使用属性绑定的曲线类型属性来获取曲线的类型;
获取物体路径:使用属性绑定的物体路径属性来获取曲线所应用于的游戏对象的路径;
获取属性名称,使用属性绑定的属性名称属性来获取受影响的属性名称;
获取关键帧,对于每个曲线,使用AnimationUtility.GetEditorCurve方法来获取曲线上的关键帧信息,包括:关键帧数组,其中包含时间和值;
获取动画事件,使用动画剪辑的events属性来获取动画事件信息,包括每个事件的时间、函数名称和自定义参数信息。
7.根据权利要求1所述的一种基于Unity的动画曲线序列化方法,其特征在于,所述步骤S3包括:
准备曲线:确定同一曲线的三个不同的分量曲线,即分别表示X、Y和Z分量的曲线,其中,这些曲线是 AnimationCurve 对象,每个曲线代表了一个分量的动画变化;
遍历时间点:创建一个循环,以遍历这三个曲线上的所有时间点,确保每个曲线上都有相同的时间点;
在相同时间点合并值:对于每个时间点,从X、Y和Z曲线中获取相应时间点的值,然后,将这三个值相加,得到一个合并后的值;
创建新的合并曲线:使用合并后的值和时间点创建一个新的 AnimationCurve 对象,其中,该曲线将代表XYZ分量的合并动画;
完成:获得一个合并了X、Y和Z分量的曲线,代表了它们的组合动画。
8.根据权利要求1所述的一种基于Unity的动画曲线序列化方法,其特征在于,所述步骤S4具体包括:定义动画曲线对象、动画事件对象、动画内容对象、动画物体对象和动画关键帧对象后进行动画剪辑的序列化存储,这些对象均需标注为Serializable类型;
其中上述对象具体包括以下内容:
动画曲线对象:曲线类型、属性名称、关键帧集合;
动画事件对象:时点、函数、参数和对象引用;
动画内容对象:自定义时间的内容;
动画物体对象:物体路径、关键帧集合、曲线集合;
动画关键帧对象:时点、值。
9.根据权利要求5所述的一种基于Unity的动画曲线序列化方法,其特征在于,所述步骤S5和所述步骤S6均根据关系数据库的类型进行的CRUD操作,以及根据步骤S4中定义的对象,进行唯一键值的匹配后进行增量的数据存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311451259.3A CN117173293B (zh) | 2023-11-03 | 2023-11-03 | 一种基于Unity的动画曲线序列化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311451259.3A CN117173293B (zh) | 2023-11-03 | 2023-11-03 | 一种基于Unity的动画曲线序列化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117173293A true CN117173293A (zh) | 2023-12-05 |
CN117173293B CN117173293B (zh) | 2024-01-26 |
Family
ID=88941658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311451259.3A Active CN117173293B (zh) | 2023-11-03 | 2023-11-03 | 一种基于Unity的动画曲线序列化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117173293B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461662A (zh) * | 2014-12-25 | 2015-03-25 | 上海恺英网络科技有限公司 | Unity3d骨骼动画插件SmoothMoves的加载优化方法 |
US9754398B1 (en) * | 2014-03-24 | 2017-09-05 | Amazon Technologies, Inc. | Animation curve reduction for mobile application user interface objects |
CN110533751A (zh) * | 2019-08-30 | 2019-12-03 | 武汉真蓝三维科技有限公司 | 一种具有交互功能的三维可视化动画制作与播放方法 |
CN111760293A (zh) * | 2020-07-07 | 2020-10-13 | 网易(杭州)网络有限公司 | 时间轴工具的资源动态加载方法及装置、电子设备 |
CN114281773A (zh) * | 2021-12-28 | 2022-04-05 | 北京思明启创科技有限公司 | 动画显示方法、装置、电子设备及计算机可读存储介质 |
CN114511654A (zh) * | 2020-11-17 | 2022-05-17 | 福建天晴在线互动科技有限公司 | 一种基于贝塞尔曲线的相机动画编辑方法及其*** |
CN115129212A (zh) * | 2022-05-30 | 2022-09-30 | 腾讯科技(深圳)有限公司 | 视频编辑方法、装置、计算机设备、存储介质及产品 |
US20220398798A1 (en) * | 2021-05-19 | 2022-12-15 | Amir Baradaran | JSON-Based Translation of Software Programming Language Into an Accessible Drag and Drop Web-based Application for Content Creation in Spatial Computing |
-
2023
- 2023-11-03 CN CN202311451259.3A patent/CN117173293B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9754398B1 (en) * | 2014-03-24 | 2017-09-05 | Amazon Technologies, Inc. | Animation curve reduction for mobile application user interface objects |
CN104461662A (zh) * | 2014-12-25 | 2015-03-25 | 上海恺英网络科技有限公司 | Unity3d骨骼动画插件SmoothMoves的加载优化方法 |
CN110533751A (zh) * | 2019-08-30 | 2019-12-03 | 武汉真蓝三维科技有限公司 | 一种具有交互功能的三维可视化动画制作与播放方法 |
CN111760293A (zh) * | 2020-07-07 | 2020-10-13 | 网易(杭州)网络有限公司 | 时间轴工具的资源动态加载方法及装置、电子设备 |
CN114511654A (zh) * | 2020-11-17 | 2022-05-17 | 福建天晴在线互动科技有限公司 | 一种基于贝塞尔曲线的相机动画编辑方法及其*** |
US20220398798A1 (en) * | 2021-05-19 | 2022-12-15 | Amir Baradaran | JSON-Based Translation of Software Programming Language Into an Accessible Drag and Drop Web-based Application for Content Creation in Spatial Computing |
CN114281773A (zh) * | 2021-12-28 | 2022-04-05 | 北京思明启创科技有限公司 | 动画显示方法、装置、电子设备及计算机可读存储介质 |
CN115129212A (zh) * | 2022-05-30 | 2022-09-30 | 腾讯科技(深圳)有限公司 | 视频编辑方法、装置、计算机设备、存储介质及产品 |
Non-Patent Citations (1)
Title |
---|
桑琪;叶德建;: "基于Unity3D游戏客户端开发框架的设计与应用", 微型电脑应用, no. 06 * |
Also Published As
Publication number | Publication date |
---|---|
CN117173293B (zh) | 2024-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7808501B2 (en) | Method of shading using sample vectors | |
US7804503B2 (en) | Animating objects using metadata | |
US8612040B2 (en) | Automated derivative view rendering system | |
US7739612B2 (en) | Blended editing of literal and non-literal values | |
US20180203675A1 (en) | System and method for streamlining user interface development | |
CN108897567B (zh) | 基于Unity的软件加载文件的方法、装置、设备及存储介质 | |
US8869051B2 (en) | Systems and methods for using separate editing applications from within electronic content creation applications while preventing data loss | |
CN109242938B (zh) | 一种基于Unity的动画编辑方法及终端 | |
US8610713B1 (en) | Reconstituting 3D scenes for retakes | |
CN111161365B (zh) | 一种骨骼动画数据的压缩方法及装置 | |
CN115964038A (zh) | 一种基于双模型驱动的低代码开发方法 | |
CN108875001B (zh) | 一种大容量地理空间数据导出vct文件的方法 | |
CN112035588B (zh) | 构建空间数据规则库引擎的方法及gis数据质量检查方法 | |
CN111179391A (zh) | 一种三维动画制作方法、***及存储介质 | |
Vallecillo et al. | MDWEnet: A practical approach to achieving interoperability of model-driven web engineering methods | |
CN117173293B (zh) | 一种基于Unity的动画曲线序列化方法 | |
JP2002527814A (ja) | コンポーネント・ベース型ソース・コード・ジェネレータ | |
Besuievsky et al. | Customizable lod for procedural architecture | |
CN107845135B (zh) | 一种三维仿真模型及模型库的构建方法及装置 | |
CN109999500A (zh) | 一种基于编程语言流畅加载游戏地图的方法以及电子设备 | |
CN112988306A (zh) | 动画处理方法及装置 | |
Terrazas et al. | Java Media APIs: Cross-platform Imaging, Media, and Visualization | |
US20040205657A1 (en) | Method and system for linking project information | |
US9026985B2 (en) | Dynamically configurable model-to-model transformation engine | |
CN113546409B (zh) | Laya引擎播放GIF格式资源的方法、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |