如果能像电影一样,在一段自己实拍的镜头中加入CG角色,比如钢铁侠,想想就很帅!
这是怎么做到的?自己也想学着做,可难不难?今天王老师就来揭秘,如何应用摄像机反求,把实拍的景物与三维结合。
首先我们要去确定的一点是,这不是一个静态图片,静态图片的话我们可以直接把钢铁侠P上去呀。现在是一个运动镜头,所以我们所要做的第一步就是对这个摄像机在三维软件中进行还原。
怎么还原呢?我们并不能很好的定位摄像机在三维空间的位置,这是我们就要用到摄像机所拍的参照物对摄像机进行反求,从而得到三维软件中的摄像机位置。
▼制作完成的演示视频如下:
在生产制作当中用到的比较多的是PFtrack,它方便快捷,是专门用来反求摄像机的。当然现在很多后期软件中也加入了对摄像机的追踪和反求,比如大家熟知的AE和Nuke。而Nuke反求摄像机则在合成流程上比较便利,有时候简单的素材可以通过nuke反求后直接在nuke中进行合成,或者用反求的摄像机对素材进行三维贴片paint。
今天我主要来讲讲用Nuke怎么还原出这台摄像机。
导入Nuke里查看素材,记住一定要按s设置工程哦!添加CameraTracker节点。在setting标签页下把preview features打开,可以预览当前特征点。
返回我们的CameraTracker标签栏。
Mask遮罩对我们来说很有用,需要对特定区域进行跟踪,排除镜头中干扰信息才能得到更好的结果。在这个镜头里,原力大厅的大屏幕正在放映公司制作的《斗战神》,屏幕画面的运动会影响我们摄像机的反求,让计算机分不清这是什么。运动的人物或者其他物体也会干扰对摄像机的反求,所以我们要用mask去除这部分。
我在这里简单绘制了一个roto作为他的遮罩。在mask选上mask alpha。
是不是我们屏幕上的特征点都去掉了呢!
回到第一帧,这时候我们只需要在下面Analysis分析的地方选择track就好。点击track,我们的nuke就会自己开始追踪啦。
走完一遍播放别着急关前面的小窗口哦,它会倒过来再走一遍,等小窗口自己结束,我们的追踪就已经完成,屏幕上都是黄色的小点点。
然后接着点击Solve反求解算,Nuke会根据之前的track信息对摄像机位置进行解算。
此时屏幕上黄色跟踪点变成绿色或者红色的点,就表示成功啦。被我标记的蓝色框框内是解算错误参数。
黄色的点表示没有参与到摄像机反求运算中;
绝大部分的点变成绿色,表示跟踪特征点正常参与解算;
还有一些红色的跟踪点表示其无法跟绝大多数的跟踪点保持相同的运动规律,在反求解算中已经被系统丢弃了。
接下来我们需要对红色与黄色点进行删除或者优化,才能保证反求摄像机的准确性!在AutoTracks标签栏下
① 是解算错误参数(每像素单位内的均方根误差),来说明反求的结果是否良好,我们优化的目的是把错误参数降低,使得反求的误差更小,一般来说低于1是可以被接受的,高于1的如1.5的话可能错误率就比较高了,需要想办法降低该数值,0.5的值比0.8更加优化。
② 这里是具体的追踪参数,选中会显示在右侧的坐标系中,如果看不到曲线按F键可以让曲线适应屏幕大小,横坐标是镜头的帧数,纵坐标是追踪参数。
③ 这里是我们用来优化错误参数的三个值,适当的调节这三个值可以优化反求结果,使得错误参数更低,反求效果更精确。
④ Delete unsolved删除没有参与解算的跟踪特征点,即黄色的点。 Delete Rejected 删除被丢弃的跟踪特征点,即红色的点。
讲了那么多,看起来好复杂哦,那么我们应该怎么进行操作呢?
其实不要担心,很简单的:
第一步:
在②③中Min length与Track len –min对应查看,提高Min length值至Track len –min曲线的平均位置左右,可以删除小于此最小长度的追踪点,这些点的也是误差较大的点。
Max track error 与Error –rms对应查看,降低缩小Max track error 最大跟踪误差值使得error-rms在这个区间的平均位置,这会使得很多绿色的点变成黄色或者红色,不能减少到非常低,尽量不要小于Error –rms的平均数,不然会造成适得其反的效果,跟踪有效点数量太少,计算偏差会更大。
Max error 与 error-max对应查看,降低Max error值至error-max的平均值左右,可以删除误差较大的点。
在这里,没有绝对的数值,需要根据个人的镜头得出的参数来进行优化调整。
第二步:
勾选上focal length焦距,position位置,rotation旋转后才可以进行优化,点击Refinement优化里的Refine Solve即可。
第三步:
在④种删除不需要的追踪点,点击Delete unsolved,Delete Rejected就完成啦。
第四步:
别着急,看一下现在的Solve Error是不是比原来小了,可以再次重复前几步操作继续降低Solve Error,可以使得镜头反求更加精确,如果没有变小,请检查一下前几步是否有错误,适当调整settings里的追踪点数目,监测阈值,或者是roto遮罩等,再次进行追踪反求和优化。
这是我的最终结果,由此我们可以得出摄像机的运动规律和三维物体在空间中的位置啦。接下来就是输出摄像机到三维软件中了!
在CameraTracker标签栏下Export导出里选择Scene场景,点击create创建即可。
Nuke将直接为你生成还原出来的三维场景节点。
添加WriteGeo节点输出摄像机,一定要手写路径和后缀哦,选择文件存放位置,这里结尾使用的是fbx后缀,Nuke可以输出FBX,ABC,OBJ这三种三维软件格式,点击Execute输出即可,选择帧数范围(如果之前设置了工程直接选global就好啦),ok就可以输出完毕。
迫不及待打开MAYA来看看我们导出的摄像机了,使用maya打开刚刚的cam.fbx
选择摄像机,导入序列帧
此时摄像机就完美反求出来了。我们可以还原场景,并且加入钢铁侠模型!还可以加些小特效~
摆好位置,打上灯光,渲染!
叠上影子,调个色,加个噪~完工!
最后的最后~划重点!!
灰常简单,分三步走
1. 跟踪:CameraTracker节点,设置跟踪参数进行track
2. 反求:solve后调整参数优化解算结果
3. 场景创建:场景摄像机的创建和导出FBX
留言与评论(共有 0 条评论) |