杨净 萧箫 发自 凹非寺
量子位 报道 | 公众号 QbitAI

最近,我身边的朋友,突然一个个都变成了圣斗士!

像这种比较炫酷的“飞天”黄金圣斗士,连影子都惟妙惟肖的:

还有这种在办公室偷偷变身双子座圣斗士,想要拯救世界的:

又或者是在自家小花园里变成处女座圣斗士,打破次元壁的:

还有白羊座、天秤座、射手座圣斗士……怎么回事?

原来,这是一群程序员做出的移动端3D圣衣特效,现在只用一部手机,就能随时随地“变身”圣斗士。

又一童年梦想被实现了有木有!

如果不想打开摄像头,也可以只用一张照片,就能成功“变装”:

不过,要实现这样贴合的效果并不容易,单从技术本身来看,就充满了挑战性。

在他们之前,甚至根本就没有人将这类技术应用到手机上。

而整个项目也是联合渲染、设计两个团队,一鼓作气耗时10个月才完成。

毕竟要守护心中的雅典娜,多少付出都是值得。

电影游戏界的“重金特效师”

这项耗时10个月打造的技术,就是好莱坞大片和3A(高开发成本)游戏大作中才会用到的动作捕捉

说到这项技术,或许有的人还会感到陌生,但像《阿凡达》《指环王》这样的好莱坞电影、或是《刺客信条》《生化危机》这样的3A游戏,你一定听说过。

没错,这其中的许多经典特效、角色动作设计,都采用了动作捕捉技术。

由于能直接记录动作,这项技术能大幅缩短制作特效的时间,同时能让角色表情、动作看起来更真实。

对手K动画设计师来说,能降低设计工作量;对虚拟直播(Vtuber)、体育和医疗等领域来说,动作捕捉不仅能实现逼真的动作还原,还能实现实时动作记录

听起来非常诱人,但这其实是一项高门槛技术

首先,要想实现逼真的动作还原效果,就必须对硬件提出高要求,主流的惯性和光学动作捕捉技术,基本都需要传感器,便宜的效果还不好

以(惯性动捕)游戏《舞力全开》为例,虽然硬件成本低廉(甚至能用手机当传感器),但由于只有手部传感器,无法检测腿部活动,体验并不好,还诞生出了像“轮椅舞王”这样的梗。

其次,为了将干扰、延迟降至最低,需要预留空间。以专业的Vtuber(虚拟主播)为例,他们直播所采用的动作捕捉技术,基本都需要10×10米的大房间来降低干扰。

最后,数据计算量大。动作捕捉系统获得的只是一大堆坐标数据,后期不仅要进行专业数据处理,同时还需要高性能计算机显卡来实现。

集硬件成本、环境、计算量等限制为一身的动作捕捉,要是之前说要把它用到手机上,可能立刻会有人说这是痴人说梦。

然而科技的发展总能给我们带来意想不到的效果。

微视团队中一群做计算机视觉的程序员,就只用一部手机将黄金圣斗士的铠甲贴合在人物身上,而且确实成功了,实现了实时的处理效果。

但手机端动作捕捉技术,并不好做。

自研移动端算法,筛选7k+顶点

只用一部普通的手机,意味着两个难点:计算量受限坐标深度只能靠预测

相机生成的照片,通常只有2D信息。要想从2D中还原出3D信息,需要找到一个能够预测坐标深度的函数,使之预测的3D信息尽可能逼近真实值。

对于真实度要求很高的动作捕捉技术而言,这意味着精度和实时性都要受到挑战。

目前已有的移动端AI技术,只能实现实时动作捕捉的一部分功能,包括人体/人脸检测、和基于2D/3D骨骼关键点的姿态估计技术,也就是我们常见的“火柴人”算法。

但“火柴人”算法显然没有3D Mesh贴合度高,因此团队决定,将3D Mesh搬到移动端上,自研一套基于3D Mesh的移动端姿态估计算法。

这套算法相当于重建人体表面的7000多个特征点,以及15000多个三角面片,不仅能够还原人体的基本动作,还能预测出人体的高矮胖瘦。

除此之外,团队还从3个方面,对模型进行了整体优化。

其一,从动作捕捉精度和模型大小两方面,对自研模型进行调试。

据微视团队表示,移动端已有的基于3D骨骼关键点的驱动阀,虽然可以驱动虚拟人体,在同一场景下做各种动作,但这套算法存在一些不足,需要自行调整。

例如,算法偶尔会出现不正常的抖动,包括虚拟人物突然“形变”的情况,如下图脚掌翻转。为此,团队还给算法加上了平滑滤波,使得人物动作看起来更真实,进一步提升模型精度,避免像下面这种抖动。

脚掌不正常的翻转抖动

同时,在精度以外,团队还要保证在移动端实现3D Mesh。为了做到这一点,除了在其他模型方面尽可能整合压缩以外,团队也对模型本身进行了一个简化。

其二,从数据采集来看,团队也下了不少功夫。

由于移动端3D Mesh数据需针对性采集,微视团队搭建了自动化的数据采集系统,帮助快速采集到高质量动捕数据。

虽然Kinect的实时动作捕捉效果一般,但用于数据采集还是非常不错的,三台结合起来就能获得完整的深度信息。

为了确保模型的泛化性,除了尽可能多找18~60岁的不同人物数据进行采集以外,程序员们还采用了数据增强和半监督学习来增强模型的泛化能力。

数据增强这块,为了加强模型辨认人体与周围环境的能力,程序员们将获取到人体的mask信息进行提取,随机贴到其他背景的图片上,创造出更多不同背景信息的图片;同时,团队也采用了神经渲染、GAN等技术,来生成更多的训练数据。

半监督学习上,程序员们结合辅助任务,对2D关键点模型进行训练、提升模型的泛化能力。

其三,就是团队对实时性和特效渲染做的兼顾。

模型结构的整体设计和优化都只是“基本操作”,例如将串联运行的模型改成并联运行等;在推理上,团队还基于优图的TNN移动端深度推理框架,实现了模型的高效推理,最终将模型的推理时间从15ms降低到了11ms

这里面的一个难点,就是要确保渲染效果和移动端性能(实时性)的兼顾,既要让画面看起来比较精致,又不能让软件运行速度太慢。

因此,团队先采用了自研3D渲染引擎增强光影效果,并利用SSAO、IBL等技术增强阴暗角落处的阴影质量,使得整体渲染效果与目前主流手游非常接近;

同时又进一步适配不同机型,采取分级策略,确保在各种手机上都能取得不错的运行性能。

显然,要想实现上面这些技术,呈现出最终的圣斗士特效,微视的设计师们同样功不可没。

甚至可以说,微视团队中,就连设计师也都是“技术硬核”的存在。

设计师也学代码?

从最初产生想法、打磨研发,一直到最终呈现,10个月的时间,对于一个研发团队来说并不短。

当中,除了技术本身的实现难度之外,还牵涉到整个系统的协同配合。

从最开始的CV技术研发、到移动端的部署,以及渲染,最后制作成一个特效工具……整个技术生产链条的打通需要各个团队充分合作。

就比如,像把盔甲穿在人身上,这样一个看似简单的动作,就需要开发、算法、设计三个组的同学协同调整。

一位设计组的旁友直呼:这部分的钻研和调整超过了制作模型的时间。

但即便如此,他们也有自己的制胜法宝。

首先,目标一致

大概也是因为围绕圣斗士这一主题,团队内部也有很多的年轻人,所以整个技术磨合阶段并没有出现过什么Battle

嗯,为了同一个梦想,各自都在燃烧自己的小宇宙!

另外小小剧透一下,由于整个链条已经打通,接下来团队会用技术做一些发散,尝试其他IP角色。

(疯狂暗示)

其次,就是技术思维

即便是与核心技术没有那么强关系的设计组,也坦言前沿技术的更迭很快。

可能去年学的新技术,可能到今年就已经过时了,要多花时间一些时间钻研前沿技术。

尤其是在被问到给当前要毕业的设计同学建议时,更是言简意赅:

学点代码,很有帮助

确实很技术,很硬核。

一边不断接触各种前沿技术,享受着从研发到落地整个链条,另一边还能完成“拯救世界”和“守护女神”的梦想,这是团队内部提及最多的成就感。

也唯因如此,才能将硬核技术攻克下来,成为每个人都能触达的好玩特效。

最后还想再替相信「光」的年轻人问一句:

奥特曼,真的不打算安排上么?

(PS:想要变身黄金圣斗士的朋友,带上照片戳“阅读原文”即可玩耍~)

程序员至死是少年!在公司竟公然变身圣斗士相关推荐

  1. 疫情过后,35岁老程序员年后第一天上班被公司劝退,该何去何从?

    "上午在改BUG,下午就被裁掉了" 继阿里.京东传出缩招的消息之后,国内影响力最大的科技企业之一的华为也传出停止社招,华为方面迅速辟谣,不过另有消息人士指华为的社招虽然没有停止,不 ...

  2. 天才程序员之死,让人悲痛,引人沉思

    9月8日,有网帖称WePhone开发者苏享茂因被前妻所逼,遭索要1000万元和房产赔偿,后自杀身亡. 9月9日,记者从其家属处获悉,苏享茂于9月7日凌晨五点左右在公司附近的住所处跳楼自杀,目前公司正在 ...

  3. GPT-4加强版Copilot来了!动嘴就能编程,测试申请已开启,网友:程序员已死

    丰色 发自 凹非寺 量子位 | 公众号 QbitAI 用自然语言进行编程的时代真的要来了-- GitHub CEO托马斯·多姆克在官方博客上宣布: 代码辅助工具Copilot进行重大升级,接入GPT- ...

  4. GitHub重磅!GPT-4 Copilot来了!AI帮你编程,网友:程序员已死

    丰色 发自 凹非寺 量子位 | 公众号 QbitAI 用自然语言进行编程的时代真的要来了-- GitHub CEO托马斯·多姆克在官方博客上宣布: 代码辅助工具Copilot进行重大升级,接入GPT- ...

  5. 程序员跳槽时,如何选择公司

    前言 跳槽是每个程序员都会经历的,作为一个跳槽过好几次的人,对于跳槽这件事我还是有一定的发言权的,总结就一个字:真鸡儿累. 如果新的岗位发展前景不错,也比较适合自己,那就还好. 万一入职后发现又是一个 ...

  6. 程序员之死(系列)——续

    程序员之死(系列)--续 1. 看到CSDN 在讨论程序员是不是已经死了.对于这个问题本身,我没有啥想法,因为本质上只不过是把一个一直在讨论的问题用尼采体重新表达了一下.其实这个话题既不是职业规划问题 ...

  7. 程序员之死:技术不是最重要的?

    程序员"已死"? Kent Beck在<实现模式>一书中提到:"写的好代码不一定市场上面买的好,市场上面很多用垃圾代码堆砌而成产品正在赚着大钱--" ...

  8. 从删库到跑路,就是这么迅速!程序员为了报复同事删了公司数据库

    从删库到跑路,就是这么迅速!程序员为了报复同事删了公司数据库 一只有头发的程序猿 2019-08-23 09:38 做过互联网行业的都知道,数据库对公司是至关重要的,存储了大量的数据在里面,要是没有这 ...

  9. 活久见!程序员开发进度太慢被公司告上法庭,索赔 90 万!

    loonggg 读完需要 5 分钟 速读仅需 2 分钟 大家好,我是校长. 真的是开眼了,活久见啊,公司因为嫌弃程序员开发进度太慢,耽误上线,竟然将程序员告上了法庭,要求程序员赔偿公司经济损失 90 ...

最新文章

  1. 微信出现“已停止访问该网页”或“关于潜在的违法或违规内容”怎么办?如何获取被屏蔽的网页的网址?...
  2. 敏捷为什么会失败之「PA-SA-WAKA-DA」理论
  3. 计算机二级公共基础知识证书,计算机二级公共基础知识
  4. 直播 | SemEval-2020自由文本关系抽取冠军方案解读(附NLP竞赛常用技巧总结)
  5. 终于可以摆脱 Pipenv 这坑货了
  6. Pyppeteer 使用笔记
  7. Sql server 事务的两种用法
  8. tcp client.cs
  9. Java SE 7、8、9 –推进Java
  10. .NET/C# 使用Stopwatch测量运行时间
  11. 教你如何预判用户手势行为
  12. idea springboot启动报SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”
  13. iOS开发中的小Tips
  14. 基于WordNet的英文同义词、近义词相似度评估及代码实现
  15. CSR蓝牙芯片进测试模式方法
  16. 散列表ADT--分离链接法
  17. (php毕业设计)基于php水果销售商店管理系统获取
  18. 天使玩偶(CDQ分治+最小曼哈顿距离)
  19. Citrix虚拟化技术之五XenServer6.2资源池配置
  20. 《协整理论与波动模型-金融时间序列分析及应用(第二版)》

热门文章

  1. GPS参数中PDOP
  2. APIJSON复杂业务深入实践(类似12306订票系统)
  3. 动态图(三) 动态WebP解码与播放
  4. openfire 学习1 -----openfire 服务器搭建
  5. hust1017Exact cover(Dancing Links)
  6. 早安!上学人!(连载)
  7. IDEA 方法设置快速注释【便捷】
  8. JAVA+MYSQL数据库课程设计“迪士尼票务与信息管理系统“(一)附带详细资源
  9. python 阶乘计算器
  10. HEAAN开源库源码(一)