FBX骨骼动画

不要在追寻什么人生的意义,追寻本身就很有意义-《萌菇凉》

本周我们拿出一些可能其他同学也存在的疑问来给大家讲解一下关于FBX骨骼动画的方面东西。我们应该如何去做一个动画系统。

关于绘制

我们首先来看看,我们要绘制动画需要具备什么样的底层基础功能:

  1. 绘制一群三角形的能力(因为无论模型如何复杂,它都是由三角形构成,或许你比较菜鸟,只能绘制21845个三角形(65535除以3),或许你有良好的数据组织,你有一个引擎,你可以突破这些瓶颈)

  2. Shader,你需要一个Shader为你的模型的各个部分进行着色,我们解析过FBX模型的知道,FBX模型里是有很多个节点的,节点上都挂在了Submesh这样的东西,而每个submesh基本上可以对应到某一群三角形的集合。于是乎,我们就需要特定的shader去绘制每个submesh,或许整个模型都可以使用一个shader去绘制。

  3. 动画采样器,或许有的人至今不明白刚体动画和骨骼动画有什么区别,但那又如何。我们来说说动画采样器,动画采样器就是根据时间点的信息,能够插值出动画中影响顶点位置的矩阵数据,然后通过这些矩阵数据计算出某个时刻,各种submesh的顶点的位置。我们通过时间去驱动动画采样器,动画采样器计算出矩阵来影响各个subumesh,就形成了骨骼动画。跟着我们学完了FBX骨骼动画课程的人都知道,你只要是认真学习了,就知道,动画的计算是非常耗时的。因为你需要每个顶点是被多个矩阵影响的,这样一来,每一次模型的所有顶点的重新计算就涉及到多个矩阵的相乘,并且还需要将这些累加的效果应用到所有的顶点数据上去。在CPU上来做这件事情的开销是非常大的。为了让我们的课程逻辑更清晰,我们采用的是OpenGL的固定管线来教学的。任何一个学了可编程管线,并真正掌握了的人,肯定知道如何变通成为可编程管线版。

难点

骨骼动画难的地方不是给模型贴图和解码材质,那些东西只是一个工程学问题,只要有编程功底的人,有足够的能力去组织一套复杂的代码,这些问题都不是问题。骨骼动画难的地方在于矩阵的理解,说具体点,就是那些Cluster上的矩阵是怎么影响到了各部分submesh上的顶点的。理论上难点如下,如果不是下面的问题那么一定是你自己的基础不好,胡思乱想,瞎给自己折腾出来的一些难点:

  1. cluster与骨头的对应关系

  2. cluster与顶点们的对应关系

  3. 这些矩阵如何计算才是正确的骨骼矩阵的公式

  4. 动画采样器是个黑盒,你不理解它是怎么采样出来那些矩阵的。

其中1、2、3点都在我们的FBX骨骼动画课程中做了详细讲解,至于第4点为什么不讲,是因为我们不知道FBX SDK是如何实现动画采样器的,他们不是开源的东西。

动画采样器

关于动画采样器,实际上大家更多的不理解是它到底是个什么。实际上这部分内容不是三言两语能说明白的,你需要系统的学习整个动画理论的知识,而你想要学会动画理论,首先你要理解数学中的大量的插值技术,我们的2D帧动画、3D帧动画、FBX骨骼动画都是某种动画的特例。实际上是可以泛化的,但是由于覆盖的知识面太多,大家也知道,我们这里的内容属于小众内容,有兴趣来学习的都是聪明绝顶的人,一般的程序员是不会来钻这块内容的。因为他们需要的仅仅的是一份工作,来学习这部分高深内容的程序员,更多的是出于求知欲,对于原理的渴望,钻研能让这部分人过的更充实。

常见的误区1

FBX不就是为了游戏而设计的吗?这必然不是,FBX不是慈善家,就跟天下没有免费又好吃的午餐一样,每个人都要生存,有的人堂堂正正的赚钱,有的人通过免费,吸引客源,最终想着别的方法赚钱,但最终都是需要落实到赚钱这件事上。堂堂正正赚钱的,肯定会做好本职的工作,而靠免费来引流赚钱的,肯定免费只是表象,它更多的时间需要思考怎么变现。

回来说FBX,FBX是Adobe的用于存储3D数据的格式,它本身就不是为游戏而设计,之所以大家用FBX动画,一个原因仅仅是它可以支持游戏。

常见的误区2

我不管,我要用C++写出代码,使得我的C++程序读入FBX模型,并渲染出来的时候,能够逼近或者达到在Maya中一样的效果。

这一点但凡有经验的程序员都不会这么想,一般这么想的都是纯理论派,从未真正去接触游戏产业的人。我们有大量的证据可以证明这样做没有任何意义。但你要是想做,并不是不可能。

  1. 你使用Unity导入FBX动画模型或者静态模型去做游戏的时候,是直接把模型丢进Unity里,打包成AssetBundle后,就可以直接用的吗。并非如此,大部分情况都是,你先把模型导入进来,然后给模型各个submesh贴上心仪的材质球,然后改改shader或者调调参数,让模型外观看起来更满意,最后才是打包发布游戏。我们注意到,实际上在3D建模软件中的材质系统,实际上在游戏制作的时候是没什么用的,无论如何我们都需要手动的去调整我们的模型,让它在游戏引擎里看起来更加的精致。为什么会产生这种问题呢?因为,3D建模软件的渲染系统跟游戏的渲染系统是不一样的。他们之间的材质并不能产生一一对应的关系,所以你也不必去为了解码模型的材质而烦恼,因为那个根本不重要。这些你后续手动设置就好了。

  2. 我们现在假设你已经能够做到,在Maya中看到的是什么样子,你自己写的程序中就是什么样子的级别了。但是Maya中那个实时被渲染出来的模型,你觉得好看吗?我们很多程序员小姐姐(不好意思,我们忽略了程序员小哥哥,因为我们是更喜欢妹子的,不喜欢汉子,搅基者滚)不是美术妹子。在3D建模软件中通常具备两套以上的渲染系统,一套是建模用的,这套系统高效,但是画面不那么精致,另一套系统可能是PBRT的,一帧画面可能要八年才渲染的出来(或许是八十年)。具体如何操作,请请教美术妹子。回到写程序的方面,即便你能实现Maya中所有的材质球,那又能如何?你只不过实现了一套渲染出来很挫的画面。

在本文的最后,我们希望同学们回归正轨,不要在无所谓的事情上瞎折腾,那只会让本来应该去谈恋爱的时间,拿来折腾自己。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容