【PFTrack教程】如何跟踪画面中的运动物体?(视频详解)
› VFX大学 › PFtrack,3DEqualizer,Mocha追踪 › 【PFTrack教程】如何跟踪画面中的运动物体?(视频详解)
-
作者帖子
-
-
2018-01-08 - 10:37 #31022
有的时候我们需要反求的不仅仅是摄像机的运动,比如替换镜头中的运动物体。追光今天教大家跟踪和解算演员手中的道具,今天要使用 User Track 节点手动跟踪物体,然后将物体解算到场景中。
练习素材下载链接:
1. 导入素材并检查
打开文件浏览器,导航到教程素材,将缩略图拖拽到节点图中。按播放键检查素材,这是一个室外手持镜头,演员手中提着一个箱子📦。
2. 解算摄像机
每个场景,在解算任何物体运动之前,都需要一个摄像机,所以我们首先要跟踪并解算片段中的摄像机。
创建 Auto Track 节点,将 Search 模式改为 Optical Flow,在 Deformation 菜单中选择 Rotate、Scale 和 Skew,然后点击 Auto Track。
跟踪完成后,我们创建一个 Camera Solver 节点,在 Distortion 选项卡勾选 Low-order 镜头畸变的 Estimate,然后点击 Solve All,解算摄像机。选择地面上的三个跟踪点,在 Set Plane 菜单中选择 X-Z Plane,快速定位场景。然后选择一个合适的跟踪点,点击 Set Origin。
关于摄像机解算,这里讲得比较粗略,大家可以参考这个帖子:
——————
加载预定义场景
另外,如果这个镜头本身就有一个带解算摄像机的场景,我们就可以使用场景里的摄像机,不用自己跟踪解算,只需要创建一个 Edit Camera 节点,连接到片段上,点击 Import Camera,导入摄像机。
3. 跟踪物体
创建节点和运动组
创建 User Track 节点,连到解算了的场景中。在这个 User Track 节点中创建的跟踪点将用来解算道具的运动,而不是摄像机运动。为此,我们需要为运动物体创建一个新的运动组,点击 Current group 菜单旁的 + 按钮,在输入框中输入“Box”,对创建的组重命名。现在就有两个运动组了,一个默认的 Camera 组(用来解算摄像机),一个新的 Box 组,这个组会收集所有与道具运动有关的跟踪点。
——————
创建第一个跟踪点
点击 Create 按钮,然后在 Cinema 中点击,创建并定位第一个跟踪器。这里我们选择道具左上角的跟踪标记点。如果需要的话,也可以缩放到标记点,以便更容易地调整跟踪器。点击内部跟踪器并拖拽,可以微调定位;在下面的面板上有一个放大的跟踪器,我们也可以调节它来重新定位跟踪器。
跟踪窗口内部的矩形包含即将跟踪的图案。我们需要调节这个跟踪窗口,拖拽窗口边缘到合适的位置,使它只包含跟踪标记点,不包括其他东西。
外部矩形是搜索窗口。搜索窗口定义 PFTrack 在下一帧搜索特征图案的区域,将它缩小一点,使它更接近跟踪窗口。道具上有多个同样的标记点,所以如果搜索范围太大的话,会导致跟踪器跳到其他标记点上。
在 Deformation 菜单中选择 Rotate、Scale 和 Skew,允许跟踪窗口变形,更好地匹配下一帧的标记图案。
完成后,点击 Set Default,将这些设置保存为默认,我们接下来创建在这个节点中的跟踪器就会默认使用这个设置了。
——————
跟踪第一个跟踪点
点击 Centre View,使当前选中的跟踪器总是保持在视窗的中心,这样更容易查看跟踪器,发现可能存在的问题,如果偏了的话,可以及时矫正。
点击 > 按钮是向前跟踪1帧;点击 >> 按钮是持续向前跟踪直到片段的结尾,或匹配分数太低(匹配分数是用来表示当前帧和跟踪器参考图匹配质量的数值)。Failure threshold 参数定义低于哪个值就表示匹配分数太低。
如果出现匹配分数太低,跟踪中断了的话,我们可以调节跟踪器的位置和参数,然后继续跟踪。手动定位跟踪器通常会导致跟踪器的路径出现跳动,我们可以点击 Polish 进行平滑,因为这样会在上次跟踪的最后五帧开始重新跟踪特征点。重新跟踪的帧数由 Polish range 参数定义。
调节好位置和参数后继续跟踪。
在哪一帧停止跟踪,很大程度上取决于跟踪器的初始位置,以及它的跟踪窗口和搜索窗口。当跟踪没到达片段末尾就结束时,要确保跟踪器还在正确的位置上,有必要的话,进行重新定位和平滑(Polish),然后继续跟踪。
——————
创建并跟踪更多跟踪点
返回第一帧,然后在盒子的面上创建两个以上的跟踪器,用来跟踪标记点。
跟踪方法和第一个跟踪器一样,必要时候进行重新定位和平滑,直到跟踪到片段结尾。
——————
跟踪箱子背面
跳到第一帧,在箱子背面的标记点上防治第四个跟踪器。由于跟踪标记点的角度,我们应该先调整跟踪窗口的大小。跟踪到半路上跟踪点就会不见了,第59帧是标记点完全可见的最后一帧。
如果跟踪器已经跟踪了更长的时间,我们可以回到第59帧,点击并确认 R+ 按钮,这样将删除当前帧以后的所有跟踪关键帧。
尽管跟踪器在59帧以后就不跟踪了,但是它在片段的剩余部分依然是可见的,而且是激活的状态。播放条上的深红色标记就是跟踪器可见但没有跟踪的地方。蓝色表示跟踪器可见且跟踪过的地方。在第59帧上,点击 H+ 按钮,在剩余帧上隐藏这个跟踪点,然后逐帧播放检查一下,确认这个跟踪点在这些帧上不可见了。
——————
跟踪箱子上面
接下来我们跟踪箱子的上面。返回第一帧,并在角上放置跟踪器。
因为这个跟踪标记并不完全可见,所以我们需要相应地调节跟踪窗口和搜索窗口,然后跟踪直到最后一帧。
继续放置跟踪点,重复跟踪。在比较难跟踪的地方可以逐帧地跟踪,及时调整。
——————
跟踪箱子前面
跳到最后一帧,在箱子的前面放置最后一个跟踪器,这个标记点只在最后3帧可见。所以,在最后一帧定位跟踪器,然后使用 << 按钮向后跟踪,到达第69帧时,点击 H- 按钮隐藏前面没有跟踪的帧。
此外,如果我们在其他跟踪软件中做好了跟踪,只需要导出跟踪数据,在 User Track 节点中点击 Import 打开文件,将这些跟踪器加载到节点中就可以了。
4. 解算物体
和 Camera Solver 将跟踪特征点转化成摄像机运动一样,Object Solver 解算的是物体运动。创建 Object Solver 节点,并连接到 User Track 节点上。要注意,因为 Object Solver 解算的不是摄像机,所以我们需要把当前组选择的是 Box 运动组,保留一切参数默认,点击 Solve Object 就可以了。
——————
设置物体缩放
打开透视图,播放片段,对解算有一个初步的印象,然后近距离观察运动摄像机和物体,和明显物体离摄像机和原点太远了。此时 PFTrack 认为物体离摄像机很远,所以需要一个数学算法限制,当只使用一个摄像机解算物体运动时。
现在我们来校正这个问题。在 Orientation mode 菜单中选择 Distance form camera,在 Cinema 中启用操控器,更改物体大小,以及离摄像机的距离。拖拽操控器,使物体离远点更近。
5. 测试解算结果
现在我们可以在 Test Object 节点中使用测试物体测试解算结果了。关闭透视图并创建节点。在 Available objects 列表中点击 Cow_Head,将牛头放入解场景中。将 Interaction mode 改为 Place at selected feature,并将 Positioning mode 设置为 Origin,牛头就会放置在箱子的原点上,而不是边缘上。点击箱子面上的一个跟踪点,将牛头放在那里,然后使用 Rotate、Scale 和 Translate 交互模式移动到合适的位置。
完成后,将 Interaction mode 设置为 None,隐藏操控器,然后播放,测试物体应该就像贴在箱子上一样。
6. 导出解算结果
创建 Export 节点,导出场景。在 Groups 选项卡中,我们可以看见 Camera 组和 Box 组都可以导出,所以两个都选上,点击 Export Scene,导出结果。
如有疑问,可以跟帖留言,追光会尽快回复噢。
如果喜欢追光的帖子,点击我的头像,加我为好友,就可以看到我得更新啦,也可给我发私信,点击帖子顶部得收藏放入收藏夹,方便将来再次查看~
本帖未经允许不得转载,禁止二次转载,转载请注明出处并保留在本站的完整链接,
-
2018-01-08 - 12:47 #31036
很赞,思路清晰,讲解详细,网上好多教程都是长长的的一个视频,再不就是全英语无字幕,看着看着就不知道自己在干什么了。第一次理解了为什么要先求摄像机。
-
2018-10-14 - 23:17 #49164
那个有几个问题想咨询一下 1:makeObject节点和objectsolver 这个两个节点有什么不同吗 :2:然后就是当整个场景结算好时列入上述素材 在三维视图中有场景运动相机和物体运动相机都结算好时 放置测试物体的时候 测试物体都不会准确的在 跟踪点上 有的是在跟踪点的前面有的是在跟踪点的后面 但测试物体的动画跟物体运动想一直 怎么回事呢? 3:当场景中的运动物体出现很大的旋转等透视变化时 这样的跟踪是否还会有效呢 4:最近做东西的时候发现导出相机时候放到maya里 给模型做约束发现物体的动画和在PFtrack里的不太相同 但在PF里测试的时 测试物体都是稳定的 最近一直被这几个问题所困扰
-
2018-10-14 - 23:31 #49165
还有一个问题就是空间关系的话怎么确定准确呢 还是根据点的信息找个大概位置呢
-
2018-10-15 - 00:32 #49167
空间关系计算出来要求是准确的。如果是对追踪质量要求比较严格的,需要进行测量,前期测量分为两种(而且两种都是必须要做的):
1,对物体的真实尺寸进行测量,追踪好后,选择两点输入事先已经测量好的数据。比如:箱子高度是40cm,宽度是20cm
2,需要前期多角度倾斜摄影,通过后期反求出物体的三维空间关系。
3,如果是有旋转,选准角度低于60度的,可以直接点追踪,如果大于这个度数建议将第二步中测量得到的三维物体放入场景,使用模型追踪(如下贴)。
-
-
2018-10-16 - 23:37 #49176
make object 和objectsolver有什么区别呢
-
2018-10-17 - 08:32 #49181
makeobject是创建几何物体的,objectsolver是解算器。
-
-
2018-12-15 - 12:30 #52086
求助 pftrack怎么跟踪多个物体在同一场景里
-
2019-04-05 - 22:46 #55896
非常感谢!学习了!
-
2019-06-04 - 17:23 #64268
你好,怎样才能让点动,
就是平时咱们反求出的相机,
放到maya里在不用相机的情况下,
导出的点,自身有运动信息,
现在把相机去掉,点就不动了。
怎样才能导出有运动信息的点,而不靠导出的摄像机动。
-
2019-07-16 - 15:09 #65556
请问怎么把物体结算出来的信息导入nuke里使用呢,比如使用箱子的跟踪信息给箱子上贴一张图。
-
2020-02-21 - 12:52 #71342
大大,为什么这个素材用PFTrack很易跟踪好用3DEqualize就是箱子的跟踪点跟不好(在3维视窗里看跟踪点不成箱型状,单独看箱子的跟踪点是完美的,是场景解算影响的吧)
-
2020-02-21 - 22:11 #71348
3dequalizer的追踪精确度,效率,远远超过pftrack。但3de的操作方式相对更复杂,可设置参数会更多…相对而言pftrack的操作更加简单一些。体系原理是一致的,只是3de可以更多依靠人工操作,对参数进行更加细致的调整,熟悉面板上每一项参数的算法原理是很重要的。
-
-
2020-02-21 - 21:35 #71345
-
2020-02-21 - 21:39 #71346
在手动跟踪里看箱子跟踪得不错,在3D视窗里看箱子的跟踪点却成一直线状
-
2020-02-21 - 22:02 #71347
对的,这主要是用于追踪运动物体的相对中心点。如果想要解算运动物体在三维空间中精确的模型位置,必须要经过摄影测量这个步骤。
也就要求前期拍摄需要标记拍摄,同时需要按照摄影测量规则拍摄测量照片,用来求解精确模型尺寸。
最后将精确模型尺寸匹配到你现在追踪好的物体上,才会得到精确模型空间位置。缺乏摄影测量的情况下,无法得到精确的位置,只是大概参考中心点。
-
-
2020-02-21 - 23:02 #71350
但用PFTrack却操作简单而精准
-
2020-07-27 - 17:57 #72168
大大,请问第二步骤的Edit Camera node中导入的文件在分享的百度云里没有。可以自己用Camera Solver估算吗?谢谢
-
2020-11-26 - 17:17 #78686
想请问一下。
我导出了fbx文件在nuke里面读取了导出的牛头模型还有点云和摄像机。有办法可以在nuke里面建一个cube之类的模型。把这个cube的的运动匹配到运动的点云上或者和运动的牛头模型做父子连接吗。我现在用readgeo读取的模型和点云虽然在动。但是都没有关键帧动画。不知道nuke里面建的cube的位移旋转这些该怎么匹配那个箱子的运动。
-
2020-11-27 - 01:05 #78689
这个问题比较好,也涉及到 pipeline 流程的问题了。在了解到这些问题的时候会逐步发现,影视制作是由数十种不同工种配合的,无法在两三种软件里完成整个流程,所以当我们把每个软件几乎学习掌握到几乎极致后,才发现这个软件只能完成这一部分内容,其他部分还需要其他的,这就是 pipeline 流水线的不同环节。
首先、反求追踪做完后会分为两个环节:1、将数据给三维软件一份(Houdini,Maya),含摄影机、模型运动、点云用于参考对位,所以导出前将坐标做标准化处理非常重要,不然到纯三维软件里没有专门处理流程,在专业三维软件中处理物体运动父子协同或者克隆会很轻松。2、将数据给到合成师一份,含摄影机以及点云,主要用来匹配数字绘景,当然 Nuke 也有较为简单的三维能力,它的三维能力偏向于绘制布景以及擦除替换修复,完成合成。
其次、这个问题在我早期学习时候也像你这么思考过,事实上,在复合跟踪中,跟踪运动物体的主要目的是什么?到底是在跟踪什么数据?用途是什么?用途就是精确替换,追踪的核心工作标准是追踪精确度,追踪那么多点实际上是在反向映射到一个点:物体的相对中心点。在一个相对一体的物体上,有一个可以通过计算得到的中心点,而这种计算是通过多个点来完成的。
最后,牛头的运动是基于已经反求计算结果的中心点运动的。许多时候我们用锐角的物体来布置前期拍摄,以及后期反求参照,就是因为尖角更能直观的标识相对中心。
Nuke 中导入 PFtrack 的数据,建议使用 nk文件,NK 文件无法直接导入到 Nuke 中,需要将 nk 文件以记事本(文本)方式打开,然后在 Nuke 的命令行工具中运行脚本。
当然,为了进一步了解影视数据流,可以通过 nk 文本仔细观察查看 xyz 的运动数据。导入后,许多时候会有很多嵌套层,找到最后一层,会有我们要的数据的,但在三维软件中这些数据更有深度使用的价值,Nuke 中可以用来做一些测试,但数据后续创造能力会超出合成软件范畴,因为追踪数据会激发出我们更深远的想象力,比如将牛头替换为精灵、神兽~~或者其他。
-
-
2020-12-01 - 12:35 #78694
感谢大佬。
还想问一下PFTarck导出的py文件如果是像这个提着箱子的素材。求出来的跟踪点其中有运动的点是不是就导入不了nuke。
我一开始导出PY文件在nuke里ALX+X没法导入。之后尝试了用记事本打开PY文件复制命令在nuke命令行里运行的方法。虽然导入进了点云和摄像机。但是运动的点就丢失了。只有固定的。所以最后才用的FBX文件在nuke里readgeo。用的12.2的nuke。不知道是我版本的问题还是什么地方出了问题。
-
-
作者帖子
- 在下方一键注册,登录后就可以回复啦。