zoukankan      html  css  js  c++  java
  • 2D Skinned Mesh(3D的完全翻版 带旋转)

    由下面几个文章引发的欲望,让我自己也试着实现了一个基于2D的骨骼动画。

    一篇讲述骨骼动画数学运算的文章

    http://www.cnblogs.com/neoragex2002/archive/2007/09/13/891945.html

    两篇讲述骨骼动画原理和实现的文章 一篇也是用的2D,老外的那篇用的是DX

    http://www.cppblog.com/Leaf/archive/2010/12/31/137818.html

    空明流转用C#写的一个,当然也可以下载源码。只是在他的BLOG中,他未解释任何东西。并且我也未曾下载任何源码,不知是否源码中有文档

    http://www.cppblog.com/lingjingqiu/archive/2008/06/07/52463.aspx

    很不爽的是,许多例子或原理讲的时候没有带旋转。 其实那才是重头戏。 空明流转的貌似有旋转,可惜C#我也看不懂。还不如自己来一个。

    为了迎合广大人民群众的取向,先上图和上码。

    image

    源码下载地址 (所有源码和执行程序)

    本来按照某种意义上来讲,这就算完事儿了。 但还是要简单介绍一下。

    白色方块:骨骼位置

    白色线条:骨骼空间的X轴(注意这是2D,因此只有X和Y轴)

    蓝色方块:顶点

    (要跟大家说一下对不起,因为我实在是不想仔细地去给一个让它们看起来会很美的数据。凑合着能表达意思就行)

    按键:1 2 3 4 5 6 7 8(非小键盘)你自己按了就知道。

    环境:C++ VS 2005 HGE(仅是用于渲染)。

    关于那些代码

    对于骨骼数据的存储,我并未采用兄弟+孩子节点的表示法。 而是将他们存在了一个数组里。 并标记一个骨骼的父骨骼在数组中的索引。

    这样不管是从数据存储还是访问上,都很方便。

    另外,骨骼数据并未存放着“它影响了哪些顶点,影响权重”等信息,这些则交由模型持有。 这样一来,骨骼数据本身就是一堆矩阵的数

    据运算,并不涉及其它结构。 放哪都是一样的。 目前是2D的数据运算。 若有兄弟有蛋疼,将它换成3D数据试试。本想出一个很好的演示

    样例,突然发现数据构建太费劲了,只好省去! 此次也没有做动画,而是做了一个手动控制。

    关于这次蛋疼的目的

    这次蛋疼的目的仅是想充分理解一下骨骼运算。因为公司的骨骼动画并非由我完成的,所以自己没有实际操刀做过。由此想自己实现一次,而3D

    数据构造又太麻烦。 既然仅是数学运算,何必要找3D呢,2D即可。

    关于这次的收获

    这次写了顺便写了一个2D的向量和一个2D矩阵运算类。矩阵求逆那里很费了一下时间,后来才发现是一个地方写错了。 不过纠结总归有好处,至

    少映像更深。 其间参考了许多原码,由此不得不说明一下我遇到的一些TIP

    一、骨骼数据的存放一般是分开存放的。分为“位移,缩放,旋转”。 在动画插值时分别插值。 因为矩阵的线性插值形成的旋转效果是不对的。

    (因为SIN COS)并非线性。而位移和缩放通常情况下是固定的常量。不需要进行插值,由此还能省去不少运算。

    二、骨骼权重和要为1 (这句有点废)

    三、用SHADER进行骨骼运算时,由于全都是世界矩阵。 由此可省掉一个(0,0,0,1)。 于是,一个骨骼矩阵可以节约一个寄存器。(这

    也是老生常淡了)

    四、能有耐心地看完DX的例子的人,一定是强人。 因为我一个也没坚持看完过。

    五、多看看DX SDK,即使同一页,每一次你都会有新收获。

    关于下一次蛋疼计划

    整理一下先前写的那个3D例子。虽然与VCZH那个比起来很逊,但毕竟是自己生的。

    有兴趣的朋友就下载来看看吧,一切尽在不言中,我自我感觉那代码比较好懂。不而要我多解释。 加上上面好几篇文章作为“巨人的肩膀”。

    谢谢。

    GMAIL: BOYUEGAME

    时间到,洗洗睡!各位晚安。

  • 相关阅读:
    微软外服 AlI In One
    js 循环多次和循环一次的时间的性能对比 All In One
    vue inject All In One
    Excel 表格数据倒置 All In One
    SVG tickets All In One
    OH MY ZSH All In One
    js array for loop performance compare All In One
    mac terminal show You have new mail All In one
    新闻视频 26 制作母版页
    转自牛腩 母版页和相对路径
  • 原文地址:https://www.cnblogs.com/qilinzi/p/1935121.html
Copyright © 2011-2022 走看看