考虑到将来可能从事虚拟现实、增强现实的相关工作,学习了一些和三维动画与实拍结合相关的软件。主要有Boujou摄像机跟踪,After Effects后期合成制作,并结合Maya做了点简单的试验。所谓三维动画与实拍视频合成,就是将虚拟的三维动画的物体叠加到实拍视频上,形成一种虚实合成的效果,在现在的很多大片如《变形金刚》中都普遍地运用了这种技术。下面这段视频是一个简单的例子。
为了能够正确匹配,首先就需要正确匹配实拍和三维动画中的摄像机运动参数。这里有两种方法:一种是通过真实的摄像机运动控制机器人,如camera control设备;另一种就是从实拍视频中提取出摄像机的运动参数。像camera control这种硬件设备比较昂贵,所以通过软件从实拍视频中提取出摄像机的运动参数的方法使用较多。
常用的摄像机跟踪软件有Boujou,matchmover,syntheyes,maya live等。其中maya live技术比较老,基本上没什么人用了;syntheyes更适合做一些精确跟踪,但操作复杂,不适合初学者;matchmover据说容易产生偏差,但其已经被autodesk收购,购买maya 2010就会附有matchmover软件,所以将来matchmover的发展应该会不错;Boujou简单方便,效率高,因此我这个初学者就从Boujou软件开始上手。
Boujou的操作比较简单:
1. 导入视频文件(Import Sequence)
2. 自动跟踪特征点(TrackFeatures)
3. 通过跟踪到的各帧特征点的位置解算摄像机运动参数(Camera Solve),下图左红色的即为求解出的摄像机运动路径。
4. 进一步可以增加一些约束,如哪几个点共面,设定坐标系等(Scene Geometry),并可以加入三维虚拟物体测试跟踪效果(Add Test Objects)
5. 导出摄像机运动参数(Export Camera),选择摄像机运动,物体相对静止
6. 在maya中把摄像机的背景平面作为该段实拍视频,建立三维虚拟物体,加上灯光阴影,下面这段视频就是在maya下简单合成的效果:
在做影视特效中,为了把多段实拍视频,maya分层渲染输出,各种特效合成在一起,必然需要视频后期制作软件。常见的有Adobe的After Effects,autodesk的Combustion,Shake,Fusion等。其中After Effects是基于层操作的,类似于photoshop,如果你对photoshop,premiere等adobe的软件比较熟悉,上手AE就比较快;而Fusion是基于节点操作的,和Maya有点类似,更灵活功能更强大。
利用AE在下图所示的视频中叠加进烟雾,模拟汽车尾气及轮胎与地面的摩擦效果(转自火星时代的教学视频):
1. 为了使得汽车在烟雾之前,需要选中汽车所在区域,将该区域的图像放在最前面。首先利用钢笔工具绘制车外层的轮廓
2. 通过跟踪视频中的特征点运动,使得遮罩随着视频中车的运动而运动
3. 得到的烟雾效果,结果不能透过车窗看见后面的烟雾
4. 继续绘制车窗遮罩,得到的最终遮罩效果
5. 最终合成的烟雾效果
Fusion我只是简单地有一个形象的认识,贴一张前面飞机特效合成的节点图
Maya+Boujou+After Effects就可以做一些影视特效效果,同增强现实技术相比很类似,区别是增强现实技术的实时性要求比较高。随着硬件和算法的发展,增强现实技术对真实性的要求必然会越来越高,比如匹配真实场景中的灯光、阴影、色温等,而这一方面的研究方向可以借鉴目前影视特效领域中的要求和方法。再比如看siggraph论文,讲单帧抠像的文章较多,但是连续视频中抠像的文章比较少,而这也是业界中迫切需要解决的问题,因此这个方向值得去好好研究。
基于图像的的三维建模近年来一直是图形学领域的研究热点,因为三维扫描仪毕竟价格较贵,如果能从普通的照相机、摄像机、甚至摄像头得到的图像视频数据就能方便地获得三维数据,那就会对三维技术的进一步推广带来巨大的作用。
简单学了一下canoma(和poser一个公司,操作很类似),autodesk image modeler这两个基于图像的三维建模商品软件,此类软件的技术要点如下:
1 拍摄物体不同角度的多张照片
2 建立一些基元,定位关键点,使三维网格模型同各张照片均对齐。
3 把照片上拍下的2D图像作为材质贴图贴在模型的表面
4 把已建好的模型输出成相应的文件格式
相比较而言,canoma更简洁,容易上手;image modeler功能更全,在重建三维物体前先求出了对应的摄像机参数。
上图为Canoma软件建模的流程,拍一个物体的多个角度图片,然后选择一个基本的三维物体形状。上图中为了建立这个纸盒的三维模型,选择基元为长方形。通过把这个长方形的形状同两个角度下照片的位置分别对齐,就生成了对应的三维物体,且自动带了纹理贴图信息(如上图右所示)。
下图为image modeler的操作界面
这类软件的功能还都比较简单:首先,不支持基元的自动对齐,需要大量的人工交互;其次,基元的种类还比较有限,对于较复杂的场景道具,需要较多的基元组合去近似逼近。进一步的科研方向是可以结合图像处理中特征点识别算法,提高特征点标示的效率。这类软件的建模功能一般较弱,将来如果能把其作为maya等三维软件的插件,具体的建模操作用maya的功能,也是一个思路。
全景图也算一种基于图像的建模吧,无论是虚拟现实,还是maya中环境贴图都需要用到。我学了全景图制作软件Stitcher,将几张照片缝合成全景图片,即将平面照及计算机图变为360 度全观(panaramic) 风景,用于虚拟现实浏览。Stitcher和image modeler原来都是Realvize公司的产品,最近被autodesk收购,扩展其三维和二维结合的应用领域。Realvize公司还有两个著名的软件:Matchmover,和Boujou类似的摄像机跟踪软件;Movinmento,从多个不同角度的实拍视频中分析得到运动捕捉数据。
Stitcher的操作还是比较简单的,如果照片拍的好,就三个步骤。下图为Stitcher的操作界面,第一步就是输入多幅照片,最下面一行为导入的图片。然后自动拼接,还可以自动对齐,全局曝光平衡,中间就是拼接后的效果。最后输出文件就可以了
输出的全景图为:
Stitcher可以输出为QTVR格式的mov文件,装了Quicktime就可以浏览,用户可以在其中控制摄像机虚拟浏览。有一个方便的小工具,叫Pano2QTVRgui,可以把全景图片转换为flash的swf文件,直接运行浏览,或直接嵌入到网页中,比较方便。
自己摸索到一个比较简单好用的方法,就是拍摄一段要制作全景图的空间的视频,然后每秒抽2张图片,把这些图片序列导入到Stitcher,自动拼接。
现在有的新款数码相机也支持直接拍摄,在数码相机上合成全景图,毕竟在拍摄风景时,全景图的信息量要比一张照片要大的多,而且会给观赏者带来更大的沉浸感,相信全景图的应用也会越来越普遍。