骨骼动画是啥原理?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了骨骼动画是啥原理?相关的知识,希望对你有一定的参考价值。

详细一点?本人对opengl,DX,3D渲染都有一点了解,可以深入说明一下。

骨骼蒙皮动画特指skinnd mesh,也叫骨骼动画。无论是合金装备,波斯王子,还是魔兽世界,到处都是骨骼动画技术的运用。用它塑造了各种各样,栩栩如生的生物。其中,人类体格的骨骼动画运用最为广泛 这里的骨骼蒙皮动画特指skinnd mesh,也叫骨骼动画。无论是合金装备,波斯王子,还是魔兽世界,到处都是骨骼动画技术的运用。用它塑造了各种各样,栩栩如生的生物。其中,人类体格的骨骼动画运用最为广泛。
从本质上来讲,所有的3D角色动画系统都是基于一种逻辑,就是用一定的方法去改变
Mesh顶点的位置,只是具体改变的方法不同而已。骨骼动画也是一样的。
骨骼动画的基本原理就是首先控制各个骨骼和关节,再使符在上面的skinned mesh与其匹配。在骨骼蒙皮动画中,一个角色由作为皮肤的单一网格模型和按照一定层次组织起来的骨骼组成。骨骼层次描述了角色的结构,就像关节动画中的不同部分一样,骨骼蒙皮动画中的骨骼按照角色的特点组成一个层次结构。相邻的骨骼通过关节相连,并且可以作相对的运动。通过改变相邻骨骼间的夹角,位移,组成角色的骨骼就可以做出不同的动作,实现不同的动画效果。皮肤则作为一个网格蒙在骨骼之上,规定角色的外观。这里的皮肤不是固定不变的刚性网格,而是可以在骨骼影响下变化的一个可变形网格。组成皮肤的每一个顶点都会受到一个或者多个骨骼的影响。在顶点受到多个骨骼影响的情况下,不同的骨骼按照与顶点的几何,物理关系确定对该顶点的影响权重,这一权重可以通过建模软件计算,也可以手工设置。通过计算影响该顶点的不同骨骼对它影响的加权和就可以得到该顶点在世界坐标系中的正确位置。动画文件中的关键帧一般保存着骨骼的位置,朝向等信息。通过在动画序列中相邻的两个关键帧间插值可以确定某一时刻各个骨骼的新位置和新朝向。然后按照皮肤网格各个顶点中保存的影响它的骨骼索引和相应的权重信息可以计算出该顶点的新位置。这样就实现了在骨骼驱动下的单一皮肤网格变形动画。或者简单地说骨骼蒙皮动画。骨骼蒙皮动画的效果比关节动画和单一网格动画更逼真,更生动。而且,随着3D硬件性能的提高,越来越多的相关计算可以通过硬件来完成,骨骼蒙皮动画已经成为各类实时动画应用中使用最广泛的动画技术。
参考技术A 三维动画骨骼:就是通过附带在人身体上的一些装置,事三维模型的骨骼运动,然后制作出动画。我想知道,那个附带在人身上的装置是什么原理啊?是通过摄像机拍下人的影像提取出来的?还是每个骨骼中的链接点能测定这个连接点的位移,然后发送数据给计算机,计算机计算每个链接点的位移来使动画运动的?如果是后者的话,具体的原理是什么?链接点怎么会知道自己的位移呢?还是说只是测定了各个链接点上的骨骼的转动角度?追问

是我问你啊,怎么变成你问我了?

参考技术B 可以看成一推结点的集合,跟链表相似,只是结点之间有父子关系。

例如驱赶是头和四肢的父节点,手臂是前臂的父节点等等,有了这样父子关系后,父节点的位置发生变化时,它的子节点回跟这变化,而它的父节点就不收影响。还有结点之间可以设置距离,通过设置模型那些面附着于哪个节点来实现骨骼动画。
参考技术C 推荐如下:

参考资料:http://wenku.baidu.com/view/fca5684e767f5acfa1c7cdb1.html

Android播放Spine骨骼动画笔记

参考技术A

官方实例: http://zh.esotericsoftware.com/spine-demos
官方工具: EsotericSoftware / spine-runtimes
java相关包: https://github.com/EsotericSoftware/spine-runtimes/tree/3.8/spine-libgdx

Libgdx实现和原生view进行层级透明叠加,修改GLSurfaceView为GLTextureview:
https://www.pianshen.com/article/6271275180/
此篇文章CSDN地址

检查了我们的json文件中的name,没有为null值的啊,于是对比可以运行的spine文件json发现:

最后发现是果然还是我的libgdx太老,升级为最新的即可

之前的版本是

注意:升级成为新版本,那么格式也要用新版本,就是那种缺省了字段的json格式
所以版本匹配很重要。

而Demo只有 \'armeabi\',\'armeabi-v7a\', \'x86\' 这三个so的支持,于是我们修改配置如下

于是就可以正确的运行了,如果想支持其他的cup架构,那么就要找到对应的架构的 libgdx.so 文件,添加到项目中。

更新后:

这是1.9.10的介绍: https://www.badlogicgames.com/wordpress/

以上是关于骨骼动画是啥原理?的主要内容,如果未能解决你的问题,请参考以下文章

Android播放Spine骨骼动画笔记

骨骼动画—从基础建模到Threejs渲染

骨骼动画原理

Unity 骨骼动画 2D Animation 入门(1)

数字人C4D角色动画研究之九:骨骼系统基础入门-2

Unity3D 骨骼动画原理学习笔记