《NEXT技术快报》第1期:图形篇
| 导语 每年暑期都是各路顶会扎堆,今年也不例外,SIGGRAPH,CVPR,ICML这三个我们一直关注的领域顶会相继召开,本期“NEXT技术快报”将重点关注这三大顶会的内容,摘录与游戏开发,游戏体验相关的内容做一个归纳点评。
NEXT技术快报:快速扫描学术/技术前沿进展,做出必要的分析归纳,寻找它们在产品中落地的可能性。希望能帮助大家了解前沿,拓宽视野,提高决策效率。
角色动画(Character Animation)
角色动画是游戏、VR/AR或动画电影制作的核心环节,快速制作出高质量、栩栩如生的实时动画效果一直以来都是研究热点,角色动画包括:
● 角色之间或角色与环境的交互动画
● 动作序列之间的融合过渡
● 角色的表情动画/口型动画
● 角色身体的动画(比如肌肉和脂肪组织的抖动)
● 使用动作捕捉制作动画
DeepLoco: Dynamic Locomotion Skills Using Hierarchical Deep Reinforcement Learning
原文链接:http://www.cs.ubc.ca/~van/papers/2017-TOG-deepLoco/2017-TOG-deepLoco.pdf
演示视频:https://www.youtube.com/watch?time_continue=122&v=G4lT9CLyCNw
【摘要】
利用人工智能的方式控制或者制作可信的角色动画,一直以来是个不小的挑战,本文试图使用hierarchy(层级)控制网络来控制角色的下肢移动,可以适应未知的环境,并做简单的交互,比如踢球、沿着指定轨迹或者用户输入方向,自动调整步态运动。
【问题】
- 三维环境下,角色关节的自由度很高,动作空间和状态空间都很大;
- 使用强化学习方法时reward比较稀疏,且不好设计,与环境的交互很难训练,比如踢球。
【解决方法】
高层的控制网络(HLC),输入周围环境的高度图、角色当前的状态和高级的目标(比如到达某处或者将球踢向目标),运行频率为2Hz,输出为两脚下一步的位置和身体的朝向(Gh);底层的控制网络(LLC),它的输入是Gh,依次从运动捕捉数据中选择合适的片段,输出为角色各个关节的旋转量等,还可以加入动画风格的变量(比如踮着脚走路)。本文采用了标准的actor-critic强化学习方法。
【结果分析】
优势:1)HLC和LLC是分开的两个网络,底层LLC网络可根据需要进行替换,只需要对HLC适当再训练即可;2)使用多个动态捕捉数据序列,从而在步态转换中更加自然;3)HLC可以做出躲避环境中的障碍物的指示,以及防止角色跌倒;4)使用的是动态捕捉数据,有点模仿学习的味道。
不足:1)HLC和LLC是分开训练的,HLC与LLC之间的接口(即高级任务)是人为设计的,并不是深度学习中的端到端学习模式;2)只能处理静态的环境,如果是动态的障碍物,则没法处理;3)在LLC中使用了一种特殊的bilinear phase representation表示,而不是神经网络中常见的LSTM网络;4)目前是沿着指定的路径行走,网络本身还不能根据地形自动选择路径;5)只有下半身的运动,没有胳膊头部等上半身的运动;
【应用落地】
可以用作游戏中动画片段之间的自然过渡,网络本身并不大,可实时计算。
Facial Retargeting with Automatic Range of Motion Alignment
原文链接:http://vml.kaist.ac.kr/publication/journal/2017/2017RogerBR_ToG.pdf
演示视频:https://www.youtube.com/watch?v=p99jOup243g
【摘要】
捕捉到的表情动作如何在保留含义的情况下从演员传递给目标角色一直是个难点,目前方法一般只适用于写实风格的角色,或者需要用户针对演员的每个表情(FACS分类)制作对应的角色表情。本文作者提供了一种自动化的表情传递方法,可以用于不是很夸张的表情动画,基本思想是以一段演员的表情视频作为输入,对blend shape进行优化,并保留表情之间的相关性。
【问题】
- 由于几何形状不同,表情动画从真实演员的面捕动画传递到卡通角色往往存在问题;
【解决方法】
首先从blendshapes开始,针对输入的演员的面部表演视频(使用了marker),优化每个blendshape的对应点的变形,这里作者是以整段视频输入和相关性来优化位置差异,并且考虑了RBF变换后的拉普拉斯坐标差异(局部几何特征信息),以及保留演员不同表情之间的相关性信息。其次,考虑了角色表情不宜有大的局部几何的弯曲,以及blendshape的权重应该稀疏化,来针对视频中的每一帧表情优化权重。
【结果分析】
优势:只要输入一段演员的表演视频,就可以实现自动化的、贴合演员特征的表情动画传递系统,可以适用于不很夸张的卡通角色。
不足:1)文中卡通角色的blendshape数量较少,如果希望获得较为精细的面部动画,blendshape数量还需要增加,可能优化解算会存在问题;2)嘴部的marker点的变化,在多个差别表情中差异不大,比如亲吻、张嘴、大笑,造成传递后的卡通角色的表情程度相对真人演员比较轻微;3)对于较为夸张的卡通动画表情,仍然效果不好;4)传递的是比较粗的表情动画,脸部的细节并没有涉及,比如皱纹,不过作者认为可以通过叠加的方法来解决。
【应用落地】
可以根据真人的一段表情动画,获得优化后的blendshapes和权重,从而做到实时的表情传递,可以用于教育或VR/AR交互中,比如将教师的表情传递到一只卡通兔子上,从而替换为一个兔子在授课。
A Deep Learning Approach for Generalized Speech Animation
原文链接:http://ttic.uchicago.edu/~taehwan/taylor_etal_siggraph2017.pdf
演示视频:https://www.youtube.com/watch?v=lYTTpazRttc
【摘要】
口型动画一直是动画制作中的难题,也是VR/AR虚拟角色实时动画中的难题。本文首先将输入的音频分解为互相有重叠的音素,然后利用slide window的技术结合深度神经网络预测中性角色口部动画的参数,在做动画迁移时,只需做一次录制角色和目标角色骨骼之间的对应关系即可。
【问题】
- 动画师手动key动画比较耗时,不同的语言需要制作不同的口型动画;
- 面部动作捕捉(需要marker点或者用颜色标记),对设备和光线要求比较高,而且在后期需要动画师修改调整。
【解决方法】
作者发现常用的LSTM或RNN网络更易产生偏差,需要更大量的数据才能获得较好的效果,所以选择了slide window的方法。
【结果分析】
优势:只要使用声音和角色面部视频(可以将无marker的视频用计算机视觉的方法变为marker的),比较容易训练出虚拟角色的口部动画,而且可以做到实时的匹配。
不足:1)口部的动画控制还是有些简单,用于真人动画可能会存在问题;2)训练得到的中性角色上的口部动画,还需要做好迁移才能将动画保真的迁移到其他卡通角色上;3)训练数据使用的是不带感情的面部数据,如何训练带感情的口部动画,是下一步的工作。
【应用落地】
用于实时的、简单的虚拟卡通角色的口部动画。
Data-Driven Physics for Human Soft Tissue Animation
原文链接:http://motionlab.kaist.ac.kr/wp-content/uploads/2017/07/mkim_siggraph2017.pdf
演示视频:https://www.youtube.com/watch?v=YySDlC7NZg4
【摘要】
本文试图将传统FEM方法和数据驱动方法的实时性结合,既能获得实时的肌肉或脂肪组织的变形动画效果,也能让身体响应外力的作用。基本思想是,将角色的身体划分为内层的VSMPL voxel和外层的FEM voxel,前者用数据驱动,后者用动力学计算。
【问题】
- 在模拟人体运动时的肌肉变形和次级运动时,FEM方法会精确,但是物理参数需要设置,且计算量大;
- 使用数据驱动的方法,速度很快,但是存在误差,以及无法模拟外力作用下的肌肉变形。
【解决方法】
本文将15年的SIGGRAPH论文的SMPL方法扩展到体积方面,简称VSMPL,从而对4D扫描的不同人的运动时的身体变化,分解为shape blendshape和pose blendshape,然后依据harmonic坐标的方法建立从身体表面到线状骨骼的势场RDF,根据场的数值将voxel划分为内层的VSMPL voxel和外层的FEM voxel,前者使用类似SMPL的方法来获取建模参数,后者根据肌肉和脂肪组织的次级运动来建模参数(包括统一的衰减系数),最终得到完整的模型,FEM层可以响应外力作用。
【结果分析】
优势:1)处理速度很快,可以达到4毫秒每帧,2)与真实人体的4D扫描数据误差在8%左右,3)模型的精度(PCA方式)可以根据需要调节,且精度高系数多所增加的计算时间并不多,4)FEM计算所依赖的RDF图是可以手绘的,所以次级运动的程度和区域也是可以控制的,5)在关节处变形效果不错,比如胳膊肘的扭曲中,6)方案基于15年SIGGRAPH论文的SMPL方法,这个方法已经有了整合进Maya流水线的插件,可以与LBS或Dual Quaternion配合。
不足:1)该方法不能处理皮肤的紧缩和滑动等效果,2)只适用于身体,因为脸部需要更加精细的FEM网格,3)在收集4D扫描数据时,没有考虑衣服对身体的压迫作用。4)因为内层是VSMPL,所以对于体积大的变形效果还不好,Disney采用的是adaptive voxel精细度的FEM方法,效果最好,已用在动画电影《超能陆战队》中,不过缺点是速度要慢很多,几秒一帧。
【应用落地】
可以用于拳击,相扑或者其他需要展示肌肉运动的体育游戏中,或者需要写实风格的高精度游戏中。初始的数据来源,可以是动画师制作的动画序列。
VNect: Real-time 3D Human Pose Estimation with a Single RGB Camera
原文链接:http://gvv.mpi-inf.mpg.de/projects/VNect/content/VNect_SIGGRAPH2017.pdf
演示视频:https://www.youtube.com/watch?v=W1ZNFfftx2E
【摘要】
实时的人体动作捕捉对于VR/AR交互或游戏都很有意义,但目前的动作捕捉方法往往很难兼顾民用和实时。本文试图发明一种用常见网络摄像头就可以在室内外使用的动捕方案,其关键思想是借助于骨骼节点的热点图和深度图估计,以及实时的骨骼长度和时序变化校正。
【问题】
- 多摄像头方法,准确但多数不是实时的;
- 基于RGB-D深度摄像头的方案,比如微软的kinect,在室外因为红外干扰无法实施;
- 传统电影制作中使用的基于红外marker的方式,价格昂贵且需要搭建场地。
【解决方法】
视频经过track定位到人的bounding box区域后,经过resnet-50的处理,然后通过cnn网络同时获得骨骼节点的2D热点图和三维x/y/z轴向的位置信息(相对于人的胯部基准点),然后使用euro filter进行时间上的过滤平滑,得到实时的人体三维骨骼节点信息,然后利用ceres库做了一次skeleton骨骼节点的匹配优化处理,获得最终骨骼位置。
【结果分析】
优势:1)在6核志强和titan x平台上,速度可以达到接近30fps的实时效果;2)摄像头裁剪后含人的区域为384*384/256*256,就可以得到较为精确的动捕信息,所以一般民用摄像机或手机摄像头即可作为输入设备;3)考虑到了骨骼的长度信息,以及对骨骼的2D/3D信息都进行了时序过滤,并且最后加入了skeleton匹配优化,所以动捕信息较为稳定;4)辅助更多的信息,比如imu-sensor,脚步着地信息等,可以获得更加稳定的动捕效果。
不足:1)对于肢体的遮挡问题,仍然无解,恐怕必须有多个摄像头方案才能解决;2)因为采用了多次过滤,以及匹配优化,在肢体运动较快时,会出现跟掉的问题,不过之后还能回复;3)因为是用2D热点图来预测骨骼节点信息,然后在x/y/z位置图中查找位置信息,所以前者的预测不准确,会造成三维位置出现很大的偏差。
【应用落地】
使用手机摄像头将视频流传送到一台强大的电脑上,能实现不错的动捕效果,可用于vr社交或交互游戏。
特效模拟指动画或游戏中模拟真实世界各种物理效果,可以细分成:
● 场景特效(VFX),包括爆炸、烟雾、沙子和湖泊海洋瀑布等;
● 角色相关的特效模拟(CFX),包括头发的动态模拟、角色衣服的模拟;
Data-Driven Synthesis of Smoke Flows with CNN-based Feature Descriptors
演示视频:https://www.youtube.com/watch?time_continue=11&v=L50fXkStQso
【摘要】
流体模拟通常很耗时,相对于基于粒子的模拟,欧拉方法更为精准,但是计算量随模拟尺度的三次方增长。本文试图用机器学习的方法,利用之前精确模拟的高精度烟雾来近似替代到当前的粗分网格中,在降低计算量同时保持流体模拟的细节。
【问题】
- 基于拉普拉斯的方法,存在浮点计算造成的耗散问题,且精度不够;
- 基于网格的欧几里德方法,则需要消耗大量内存和计算。
【解决方法】
在烟雾欧拉方法模拟中低分辨率和高分辨率的一对模拟的密度分布和速度分布作为输入,训练cnn网络提取特征,并学习两组特征之间的相似度。然后以此特征作为量度,在实际的低分辨率模拟时,从之前的数据库中找到近似的高分辨率模拟的密度分布,然后利用当前模拟的advection来,在微分几何空间中进行as-rigid-as-possible的变形处理,可以将模拟所需的voxel数量降低到200分之一,处理速度达到4秒每帧(76*64*64的网格,等效于560×360×360网格的模拟效果)。
【结果分析】
优势:针对大尺度的烟雾模拟,极大的降低了内存和计算量的消耗,可以达到4秒每帧左右的等同大网络的效果,同时因为是数据驱动的方式,所以缓解了物理模拟中出现的因为浮点数精度有限导致的能量消散现象。
不足:1)需要5.1Gb空间存储高精度模拟的数据,以及基于欧拉方法仍然需要较长的模拟时间和一定的内存占用,不太适合移动端设备;2)因为是数据驱动的方法,所以局部可能不满足散度为零,也就是局部体积可压缩,对于水的模拟可能会有瑕疵。
【应用落地】
可以应用于游戏过场动画的制作,或者小尺度的烟雾模拟。
Fluxed Animated Boundary Method
原文链接:http://alexey.stomakhin.com/research/siggraph2017_fab.pdf
演示视频:https://www.youtube.com/watch?v=EYBlxxI2dz8
【摘要】
如何快速真实的模拟开放大场景中的流体和刚体的交互是个难题,本文是迪士尼为动画电影《海洋奇缘》中所开发的技术,基本思想是在大的区域内使用FFT方法,在含有船只的小的水域内,使用真实物理模拟方法,在两者边界上做速度场的融合。
【问题】
- 基于FFT模拟的海洋,快速但无法模拟水体和船体或礁石的碰撞;
- 基于真实物理模拟的流体和刚体解算,解算量巨大,且存在边界计算不精确的问题,比如让艺术家创造魔法般的流体组成的人物的效果,而且没有考虑流体边界不定型的问题,比如在开放的海洋中。
【解决方法】
本文设计了一种框架,将Tessendorf方法(一种类似NV使用FFT模拟海洋的方法)和FLIP/MPM物理模拟方法相结合,由艺术家指定需要物理模拟的流体的区域(FAB区域),FAB区域外,使用FFT方法来模拟海浪,在FAB和物理模拟的边界上,计算出边界上的速度场,以及生成新的粒子或去除由物理模拟区进入FAB区域的例子,然后在物理模拟区内进行物理模拟,更新粒子速度,最后由粒子生成面,并和周围FAB区域的流体表面进行融合,从而获得最终的效果。该方法可以让艺术家创造具有魔法效果的流体角色或效果,或者开阔海洋上划过的小船所留下的波纹。
【结果分析】
优势:在GPU上用FFT模拟海洋的效果效率是很高的,但是和海洋中的刚体的碰撞交互是个问题。纯物理模拟的效果是最好的,但是大量水体的模拟计算很慢。本文做到了自动选择刚体和流体的交互区域进行准确的物理模拟,同时在其他区域使用更简易快捷的模拟,2)对于FFT方法,本文还使用了一种根据镜头需要,自动选择tile尺寸的方法,从而避免了FFT方法中存在tiling artifacts。
不足:1)在艺术家使用该方法创建魔法流体效果时,需要注意物理速度是否合理,否则会有瑕疵。2)在海洋中,因为有船体和海洋的交互,未必能保证船体周围非物理模拟区仍然是符合FFT模拟的海浪。3)本文目前使用的是MPM流体模拟方法,之后应该能扩展到其他流体模拟方法。
【应用落地】
用于开阔海洋的流体模拟,同时可以包括真实的船体和流体的交互。如果选择基于GPU的粒子流体模拟方法,也许可以做到实时的交互。
Anisotropic Elastoplasticity for Cloth, Knit and Hair Frictional Contact
原文链接:http://www.seas.upenn.edu/~cffjiang/research/cloth/paper.pdf
演示视频:https://vimeo.com/219585631
【摘要】
模拟各向异性的布料或者长的毛发,在动画中始终是个热点难题,15、16连续年没有相关的SIGGRAPH论文或者大的进展。之前的方法多是基于粒子的拉格朗日方法,但是计算量巨大。本文试图用最新的Material Point Method来解算,基本思想是将模拟的元素视为流体或连续体,避免了显示的解算碰撞和摩擦,从而揭示出一种统一的物理模拟框架。
【问题】
- 如何快速模拟真实的各向异性布料始终是个热点,因为存在元素间的碰撞和摩擦计算量很大;
- 长发的模拟同样是个难题。
【解决方法】
本文是综合之前的三篇SIGGRAPH论文做出的改进,分别是迪斯尼在做冰雪奇缘时为雪的模拟开发的MPM算法、APIC算法,以及为模拟沙子开发的算法,第一篇解决将拉格朗日方法和欧几里得方法做了整合,提出了一个变形梯度投射的思想,将动力学解算放在网格空间处理,从而可以处理颗粒之间的压缩、弹性和断裂等效果;APIC算法则解决了MPM中从网格向粒子传递时的耗散问题(相当于低通滤波);沙子模拟算法则是利用Drucker-Prager Yield Criterion来简化建模连续体内的摩擦力,将应力张量分解为粘稠流体内的耗散和摩擦两种因素,并且考虑了网格内部元素的填充率。本文的贡献是提出了在垂直于表面或线的切线方向上的形变梯度,从而间接阻止元素之间的穿插,也解决了之前MPM方法存在的精度问题。以下是三篇相关文献。
1、A Semi-Implicit Material Point Method for the Continuum Simulation of Granular Materials
2、A material point method for snow simulation
3、The Affine Particle-In-Cell Method
【结果分析】
优势:可用于模拟毛衣、长的头发等的动画效果,部分解决了元素之间的自碰撞和摩擦和撕裂等问题。对于180万个面的布料模拟,每帧耗时2分钟(运行在CPU上,常规网格)。
不足:1)实现在CPU上,未来可能会迁移到GPU上实现更快的模拟速度;2)目前使用的不是自适应网格,随着模拟的物体尺寸增大,网格数会三次方增加;3)不能完全保证元素之间不会穿插,这是算法本身决定的,不过作者测试,在时间步长比较小的时候,能基本避免;4)网格的尺寸需要设定为与材质元素的尺寸一致,否则模拟中会出现瑕疵。
【应用落地】
毛衣、长头发等的动画效果,以及和其他元素之间的交互(这些元素也可以用MPM算法模拟)
渲染是从几何体和材质信息生成最终呈现在屏幕上的2D画面的过程,分为offline和online两种类型,后者包括游戏中常见的OpenGL和DirectX管线,因为场景复杂、光效复杂和对计算时间的要求,主要的研究方向可分为:
● 光线追踪中采样算法的研究,比如蒙特卡洛的优化、bi-direction等;
● 针对各种复杂光效的优化,比如景深、运动模糊、高光反射、sss效果等;
● 实时渲染算法的研究,比如实时的多边形光源的照明、实时的GI算法等;
● 渲染中去除噪点、减少采样的方法;
● 物体材质的参数模型和参数获取等。
Lighting Grid Hierarchy for Self-illuminating Explosions
原文链接:http://www.cemyuksel.com/research/lgh/lgh.pdf
演示视频:https://www.youtube.com/watch?v=nWEPCU2d0WI
【摘要】
模拟爆炸、烟雾或者位置动画很多盏点光源的光照和阴影效果是个难题,因为渲染时间往往随光源的数量成倍增加。本文的基本思想是,将烟雾或多盏点光源的位置作为输入,得到各级粗分网格中的点光源的亮度和位置,用这些点光源的融合来计算光照信息,减少了计算量。
【问题】
- 游戏中爆炸后烟雾的动画中往往很难模拟烟雾对环境的光照效果,因为光源的增加会造成计算量激增;
- 在多盏点光源情况下,动态阴影和半透明效果也是问题;
- lightcut方法将众多点光源转换为层级树的方法,存在bias问题。
【解决方法】
本文将烟雾或多盏点光源的位置作为输入,然后逐步变成网格中格点的点光源,使用了传统的线性融合的方法来做不同层级的格点光源的光照融合,在每帧点光源变化时,更新所有层级格点的光照,使用cube-map来模拟阴影,对于层级较高的格点(就是粗略模拟的光照)使用体积光源模拟,对于烟雾中存在的multi-scattering间接光照效果,本文使用了增加虚拟光源的方法来模拟。
【结果分析】
优势:1)在渲染下图中的爆炸效果时,使用了1.4百万的点光源,计算网格耗时273秒,光照计算耗时320秒;在渲染下图中的多个点光源和半透明的SIGGRAPH字体时,使用了2.2万盏点光源,计算网格耗时20秒,光照计算耗时30秒。测试平台为dual Intel Xeon E5-2690 v2 CPUs (20 cores total) and 96GB内存。效果很好,速度也比较快。2)没有lightcut方法中存在的帧与帧之间的闪烁问题;并且速度快了几个量级,在爆炸烟雾渲染中,lightcut方法需要2个小时来渲染。3)使用的都是传统的算法和方法,比较可靠。
不足:1)仍然无法避免VPL算法本身存在的漏光问题;2)如何在gpu上或者实时渲染中利用该技术,本文没有提及,但是方法上并没有限制,估计阴影贴图(.5GB-1GB的贴图量)的生成会比较耗时和消耗带宽,不过在实时渲染中可能也不需要用这么多盏点光源来模拟,值得尝试。
【应用落地】
用于游戏动画中篝火、爆炸等动态体积光源的模拟,或者飞舞着很多萤火虫的洞里的光照效果。
Interactive Reconstruction of Monte Carlo Image Sequences using a Recurrent Denoising Autoencoder
原文链接:http://research.nvidia.com/sites/default/files/publications/dnn_denoise_author.pdf
演示视频:https://drive.google.com/file/d/0B6eg_ib7k4PoaVhWN3VYRHo0NDQ/view
【摘要】
渲染中如何在不增加采样的情况下降低噪点一直是研究的热点,本文采用机器学习的方法,使用CNN网络来编码信息,然后用RNN网络来降低连续帧之间的噪点,在间接光上取得了不错的效果
【问题】
- 最简单的降噪方法是增加采样数,缺点是造成渲染时间成倍增加;
- 传统机器学习(比如线性回归)方法来降噪,但是因为噪音来源比较多,比如有材质高频信号、复杂几何体(比如头发)、间接光照(全局光,multi-scattering),以及景深和运动模糊等,所以很难有一个统一的方法或者统一大小的filter宽度来对数据进行处理。
【解决方法】
NVIDIA在optix框架基础上尝试使用深度学习的方法实时的对图像去噪点,对于仅考虑单次间接反射/折射的渲染画面,保持了edge等高频信号,同时在连续的渲染画面中取得了较好的降噪效果。技术上使用CNN+Skip connection来做encoder,然后再decoder,中间使用rcnn结构抑制连续画面中的闪烁。
【结果分析】
优势:达到20fps左右的实时渲染速度,仅使用1spp的间接光照采样,在保持边和阴影等高频信号的同时,去除了噪点且没有引入叠影等,做到了较为不错的全局光照和阴影效果。
不足:1)为考虑复杂几何体,景深和运动模糊的情况,2)输入画面本身是每像素一个采样点的噪音较大的渲染画面,没有演示对于噪点较小的渲染画面的处理结果,3)训练中使用的是128*128的画面,网络较小,decoder时是采用上采样来做到的,所以最后输出画面尺寸也是128*128,后续也许扩展到了更大的网络;4)不能处理光线的多次反射/折射,场景中有镜子,杯子等时,会有问题。5)optix是nvidia开发的一套运行在gpu上的光线追踪渲染框架,所以本文使用的环境,并不是游戏中所用的opengl或dx管线。
【应用落地】
在将来也许可以用于提升游戏的画质,但是对于电影等要求较高的渲染可能还不行。
Modeling Surface Appearance from a Single Photograph using Self-augmented Convolutional Neural Networks
原文链接:http://msraig.info/~sanet/sanet.pdf
演示视频:暂时没有
【摘要】
Xin Tong在MSRA一直在做材质方面的工作,国内该领域做的最好的组,去年他做的SIGGRAPH工作仍然是使用传统的基于多张照片或视频的受约束的二次规划/优化方法,这是他们组第一次尝试使用CNN深度学习的方法来做。
【问题】
- 为了获取真实物体的材质信息,往往需要使用的巨大的球形照相机群,不能广泛采用;
- 用数据拟合的方法,需要从多个角度拍摄多张照片,或者拍摄一段物体旋转下视频信息,光照需要保持恒定,比较费时。
【解决方法】
本文试图从单张照片估计出物体的SVBRDF信息,作者使用了两个深度神经学习网络,分别用来估计统一的高光模型参数(Ward模型,也可以改做其他的,比如游戏中常用的ggx,左图)和随空间位置变化的漫反射模型参数和表面法线(右图)。
为了增加样本数量,作者使用了一种称为Self-augmentation的训练方法。对于输入的无标记照片,首先使用监督方法训练好的模型估计出SVBRDF参数,然后使用该参数,在CG软件中变换光照和视角,渲染出一张新的图片,然后再次利用深度网络估计出新的SVBRDF参数,以两个SVBRDF之间的偏差作为loss。
【结果分析】
优势:仅需要一张照片就可以获得物体的SVBRDF信息,算是目前最为简化的BRDF获取方式了。
不足:1)对于每一种材质,需要一个对应的神经网络,不同材质间无法通用,神经网络的泛化性比较低;2)对于照片有不少限制,比如物体需要是平面的,且光源需要离物体较远,认为类似于平行光源;3)如果高光变化较大,那么估计出的参数会不准确;4)在实际生产中,一般很少考虑BRDF随空间位置变化的情况,所以模型上应该可以进一步简化。
【应用落地】
他们组的一些论文,不限于这篇,可以用于使用手机等设备快速获取物体的BRDF信息,从而在游戏中创建出更加真实的基于物理的渲染效果。
虚拟现实或增强现实领域是目前的产业和研究热点,包括以下细分领域:
● 周围环境的三维重建以及用户在环境中姿态的实时定位(SLAM)
● 减少VR眼镜造成的眩晕感
● 三维物体或角色本身的识别、扫描、重建和传输
● 针对全景图的渲染优化和传输优化
● 从环境照片中获取环境中的光照分布等
BundleFusion: Real-time Globally Consistent 3D Reconstruction using Online Surface Re-integration
原文链接:https://arxiv.org/pdf/1604.01093v1.pdf
演示视频:https://www.youtube.com/watch?v=keIirXrRb1k
【摘要】
作者使用常见的深度摄像头,采用层级结构进行SLAM构建,做到了环境模型的实时重建和修正,以及摄像机姿态的准确恢复和实时的闭环修正,基本思想是在连续的11帧内做跟踪,并筛选出稳定的特征,然后在以11帧为单位的整个序列帧上做闭环修正,降低了闭环修正发生的频率,并去除不稳定的特征信息。
【问题】
- 之前的方法多采用bundle adjudgement来修正轨迹,确保摄像机能够回到原点,修正摄像机位置估计中的漂移误差,但是这种方法往往需要消耗较多的计算时间,无法用于实时的任务;
- 因为摄像机动的太快,或者被遮挡,会造成跟丢的情况,摄像机恢复后的位置不易确定。
【解决方法】
作者使用常见的深度摄像头,采用层级结构进行SLAM构建:1)连续的11帧组成一个块,在这个块上,作者使用SIFT特征点来做摄像机姿态跟踪,并辅助以特征点的分布、缩略图中的点位置信息,完成该11帧时间范围内的姿态修正,并将新的深度信息及时更新到三维重建的模型中,将连续稳定的特征点整合在一起;2)在chunk之间(不是每帧都执行),再对一些关键帧进行全局优化,同时考虑稳定特征点、voxel的位置信息和法线信息在不同摄像机姿态下的对比,使用PCG方法做大规模稀疏矩阵(105k行,5k列)的方程求解,并根据全局优化前后的摄像机姿态差异,来决定是否将该帧数据从三维重建模型中去除,最后进行ICP修正更新三维模型。
【结果分析】
优势:使用单个普通的摄像机做到了实时(30FPS)、稳定、闭环的大场景三维重建和摄像机姿态位置定位,并且模型的准确率和之前offline的方法差别不大,而且不像之前的闭环处理方法,需要中断或者在做bundle adjustment时有延迟。
不足:1)使用了i7 cpu,一个nvidia gtx titan x来做场景重建,一个gtx titan black来特征点的匹配和全局优化等,计算资源要求比较高;2)在重建过程中,稳定特征点的差异会在全局优化过程中传播到多个帧,所以场景模型会存在细微的不断变化,同时作者在文中提到使用权重来更新三维场景模型,但是并没有详细叙述权重的算法,考虑到本文属于SLAM中dense的方法,而不是sparse的方法,所以没法获得每个voxel的位置信息的准确率或概率,所以更新的权重可能是人为设定的,这也导致新的数据(不太可能和之前数据完全一致,因为深度摄像机本身也存在噪点)会不断更新之前的场景模型,尽管比较细微;3)作者在闭环处理上,仍然沿用了传统的PCG优化方法,虽然算法上进行了改进,但是存在优化中矩阵规模随SLAM时间增加二次方增长的问题,虽然作者在limitation中没有提及,但是在文中提到在做了10分钟的SLAM后,优化矩阵有105k行,所以怀疑该方法在连续运行时间上存在限制。最新的基于sparse的方法isam2,使用树结构和概率做闭环处理,避免了这个问题,可以考虑和该方法的结合。4)因为使用结构光,所以不大可能在户外使用;5)已经有用于影视previs制作的摄像头位置姿态跟踪解决方案,比如ncam(http://www.ncam-tech.com/),使用sparse的方法,非常准确稳定,但是缺少本文对环境的三维重建。
【应用落地】
可以用于ar/vr领域,可以快速完成室内场景环境的扫描建模,且同时不受空间限制的获取当前位置和姿态信息(htc vive限制在4*4的范围内)
Real-time Geometry, Albedo and Motion Reconstruction Using a Single RGBD Camera
原文链接:http://www.guokaiwen.com/main.pdf
演示视频:https://vimeo.com/210761032
【摘要】
本文的基本思想是,运动物体的三维模型信息和材质信息可以互相辅助,轮流优化,从而在使用单一深度摄像头的情况下完成动态物体的三维重建和材质扫描。
【问题】
- 有些方法依赖于一些预备工作或假设,比如人体的骨骼或身体的扫描;
- 有些方法依赖于多个摄像头的融合处理,无法做到实时;
- 多数方法没有做到同时恢复被跟踪物体的三维模型和颜色信息。
【解决方法】
作者使用voxel来表示非刚体,利用cvpr15论文dynamic fusion中的节点来控制物体的形变,先根据物体表面的颜色和光照信息(用SH来表示低频变化的光源)来估计voxel的运动,然后再根据前后几帧的运动信息来更新物体表面的颜色信息,在优化求解中使用了改进的PCG方法,并且对于发生碰撞的voxel(比如在衣服或袋子口合上的时候)不做更新,从而获得不错的跟踪效果,并能得到物体静态时的形状和颜色,FPS能到30帧左右。
【结果分析】
优势:不需要任何事先的准备工作,使用一个普通的深度摄像头,就可以做到非刚体的动态的捕捉和建模,并且包含了物体的颜色信息,比如穿裙子的人物,或者书包等任意形状的物体。速度在4-core Xeon E3-1230和GTX TITAN X上做到了30fps,精度在厘米级别(动态)。
不足:1)该方法假设物体表面是一致的漫反射,对于有高光反射的物体会存在问题;2)物体的重建精度受限于深度摄像头的精度;3)因为深度摄像头的帧率限制,所以对于快速运动的物体,因为帧与帧之间voxel变化大,以及存在动态模糊,会造成瑕疵;4)对于拓扑结构发生变化的物体,会存在建模上的问题;5)因为本文使用了voxel来表示物体,所以在网络传输时带宽要求比较高。
【应用落地】
可以用于vr/ar领域的交互,比如类似微软Holoportation(传送门)的效果,让远在千里之外的亲人和家人互动。
Accommodation and Comfort in Head-Mounted Displays
原文链接:http://www-sop.inria.fr/reves/Basilic/2017/KBBD17/SIG17_accommodation.pdf
演示视频:https://www.youtube.com/watch?v=0vMbiu2llQY
【摘要】
VR体验中会出现眩晕感,部分是由视觉辐辏调节冲突(vergence-accommodation)造成的。作者结合自动曲光计和可调节焦距的镜片,来测量人眼对不同远近的VR物体的刺激反应,得出目前解决VA冲突的三种方案哪种更为舒适。
【问题】
- 目前提出的解决方案有,景深渲染,可调焦镜片,monovision。但是缺乏数据去验证哪种方案更舒适。(monovision的原理介绍https://www.vrlife.news/monovision-improving-vr-experience/)
【解决方法】
下图分别为硬件原理图,使用自动曲光计测量人眼的对焦点,用可调节焦距的眼镜去匹配人眼对不同远近物体的刺激响应。
【结果分析】
优势:作者经过实际测量发现可调节镜片能比另外两种方法得到更为准确、也更舒适的VR呈现效果,为将来发展更好的VR显示设备提供了方向。值得进一步关注。
不足:目前假设眼球是不动的,如何配合眼球追踪技术,可以得到更好的效果。
【应用落地】
更为舒适,眩晕感更少的VR显示设备。
O-CNN: Octree-based Convolutional Neural Networks for 3D Shape Analysis
原文链接:http://wang-ps.github.io/O-CNN_files/CNN3D.pdf
演示视频:暂时没有
【摘要】
本文使用了类似openvdb的思路,对三维信息进行压缩,并且使用平均的法线来表示voxel中三维特征,在三维物体识别、segmentation、形状提取等方面有应用价值。
【问题】
- 现在获得物体的三维立体扫描数据越来越方便,比如RGB-D摄像头、结构光扫描设备,三维模型数据越来越多,但是如何从数据中提取物体特征信息尚无定论;
- 三维信息的内存占用和计算量随三维物体尺寸的三次方增加。
【解决方法】
使用了类似openvdb的思路,对三维信息进行压缩,仅存储非空的voxel信息。使用shuffle key来编码voxel的序号,使用Lable数组来存储当前层中哪些voxel是被物体表面占据的,然后采样物体表面的点的法线平均值作为当前voxel的特征,最后进行3d-cnn的计算。
【结果分析】
优势:1)在计算时间和内存占用上,相对不压缩的方法有近10倍的提升,且在物体识别和segmentation上和之前的方法准确度基本一致。2)对于将来如何利用cnn处理巨大的高精度的三维信息提供了更好的基础,比如去噪点、相似性比较或场景分析。
不足:1)如果针对物体的不同部分的几何特征,采用不同的voxel尺寸,可能会进一步提高效率;2)本文仅考察了3d-cnn网络,对于深度学习中的其他重要网络,比如rnn,resnet的结合应用还没有研究,可能会有新的突破。
【应用落地】
大场景或高精度模型的去噪点、识别或者segmentation。