博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2D Skinned Mesh(3D的完全翻版 带旋转)
阅读量:6102 次
发布时间:2019-06-20

本文共 1544 字,大约阅读时间需要 5 分钟。

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

 

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

 

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

 

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

 

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

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

 

 (所有源码和执行程序)

 

 

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

白色方块:骨骼位置

白色线条:骨骼空间的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

 

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

作者:

出处: 
蛮牛专栏:
简介:09年入行,喜欢游戏和编程,对3D游戏和引擎尤其感兴趣。 
版权声明:本文版权归作者和博客园共有,欢迎转载。转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:http://www.cnblogs.com/geniusalex/archive/2011/01/14/1935121.html

你可能感兴趣的文章
WEB请求处理一:浏览器请求发起处理
查看>>
Lua学习笔记(8): 元表
查看>>
PHP经典算法题
查看>>
LeetCode 404 Sum of Left Leaves
查看>>
醋泡大蒜有什么功效
查看>>
hdu 5115(2014北京—dp)
查看>>
数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)...
查看>>
PHP读取日志里数据方法理解
查看>>
第五十七篇、AVAssetReader和AVAssetWrite 对视频进行编码
查看>>
Vivado增量式编译
查看>>
一个很好的幻灯片效果的jquery插件--kinMaxShow
查看>>
微信支付签名配置正确,但返回-1,调不出支付界面(有的手机能调起,有的不能)...
查看>>
第二周例行报告
查看>>
Spring学习(16)--- 基于Java类的配置Bean 之 基于泛型的自动装配(spring4新增)...
查看>>
实验八 sqlite数据库操作
查看>>
四种简单的排序算法(转)
查看>>
Quartz2D之着色器使用初步
查看>>
多线程条件
查看>>
Git [remote rejected] xxxx->xxxx <no such ref>修复了推送分支的错误
查看>>
Porter/Duff,图片加遮罩setColorFilter
查看>>