【PFTrack教程】如何跟踪画面中的运动物体?(视频详解)

VFX大学 PFtrack,3DEqualizer,Mocha追踪 【PFTrack教程】如何跟踪画面中的运动物体?(视频详解)

标签: ,

正在查看 15 条回复
  • 作者
    帖子
    • #31022

      追光
      参与者
      机构认证

      有的时候我们需要反求的不仅仅是摄像机的运动,比如替换镜头中的运动物体。追光今天教大家跟踪和解算演员手中的道具,今天要使用 User Track 节点手动跟踪物体,然后将物体解算到场景中。

      练习素材下载链接:

      PFTrack运动物体跟踪解算练习素材百度云下载


      1. 导入素材并检查

      video

      打开文件浏览器,导航到教程素材,将缩略图拖拽到节点图中。按播放键检查素材,这是一个室外手持镜头,演员手中提着一个箱子📦。


      2. 解算摄像机

      video

      每个场景,在解算任何物体运动之前,都需要一个摄像机,所以我们首先要跟踪并解算片段中的摄像机。

      创建 Auto Track 节点,将 Search 模式改为 Optical Flow,在 Deformation 菜单中选择 Rotate、ScaleSkew,然后点击 Auto Track

      video

      跟踪完成后,我们创建一个 Camera Solver 节点,在 Distortion 选项卡勾选 Low-order 镜头畸变的 Estimate,然后点击 Solve All,解算摄像机。选择地面上的三个跟踪点,在 Set Plane 菜单中选择 X-Z Plane,快速定位场景。然后选择一个合适的跟踪点,点击 Set Origin

      关于摄像机解算,这里讲得比较粗略,大家可以参考这个帖子:

      【PFTrack教程】如何使用自动跟踪和摄像机解算?(视频详解)

      ——————

      加载预定义场景

      video

      另外,如果这个镜头本身就有一个带解算摄像机的场景,我们就可以使用场景里的摄像机,不用自己跟踪解算,只需要创建一个 Edit Camera 节点,连接到片段上,点击 Import Camera,导入摄像机。


      3. 跟踪物体

      创建节点和运动组

      video

      创建 User Track 节点,连到解算了的场景中。在这个 User Track 节点中创建的跟踪点将用来解算道具的运动,而不是摄像机运动。为此,我们需要为运动物体创建一个新的运动组,点击 Current group 菜单旁的 + 按钮,在输入框中输入“Box”,对创建的组重命名。现在就有两个运动组了,一个默认的 Camera 组(用来解算摄像机),一个新的 Box 组,这个组会收集所有与道具运动有关的跟踪点。

      ——————

      创建第一个跟踪点

      video

      点击 Create 按钮,然后在 Cinema 中点击,创建并定位第一个跟踪器。这里我们选择道具左上角的跟踪标记点。如果需要的话,也可以缩放到标记点,以便更容易地调整跟踪器。点击内部跟踪器并拖拽,可以微调定位;在下面的面板上有一个放大的跟踪器,我们也可以调节它来重新定位跟踪器。

      跟踪窗口内部的矩形包含即将跟踪的图案。我们需要调节这个跟踪窗口,拖拽窗口边缘到合适的位置,使它只包含跟踪标记点,不包括其他东西。

      外部矩形是搜索窗口。搜索窗口定义 PFTrack 在下一帧搜索特征图案的区域,将它缩小一点,使它更接近跟踪窗口。道具上有多个同样的标记点,所以如果搜索范围太大的话,会导致跟踪器跳到其他标记点上。

      Deformation 菜单中选择 Rotate、ScaleSkew,允许跟踪窗口变形,更好地匹配下一帧的标记图案。

      完成后,点击 Set Default,将这些设置保存为默认,我们接下来创建在这个节点中的跟踪器就会默认使用这个设置了。

      ——————

      跟踪第一个跟踪点

      video

      点击 Centre View,使当前选中的跟踪器总是保持在视窗的中心,这样更容易查看跟踪器,发现可能存在的问题,如果偏了的话,可以及时矫正。

      点击 > 按钮是向前跟踪1帧;点击 >> 按钮是持续向前跟踪直到片段的结尾,或匹配分数太低(匹配分数是用来表示当前帧和跟踪器参考图匹配质量的数值)。Failure threshold 参数定义低于哪个值就表示匹配分数太低。

      video

      如果出现匹配分数太低,跟踪中断了的话,我们可以调节跟踪器的位置和参数,然后继续跟踪。手动定位跟踪器通常会导致跟踪器的路径出现跳动,我们可以点击 Polish 进行平滑,因为这样会在上次跟踪的最后五帧开始重新跟踪特征点。重新跟踪的帧数由 Polish range 参数定义。

      video

      调节好位置和参数后继续跟踪。

      在哪一帧停止跟踪,很大程度上取决于跟踪器的初始位置,以及它的跟踪窗口和搜索窗口。当跟踪没到达片段末尾就结束时,要确保跟踪器还在正确的位置上,有必要的话,进行重新定位和平滑(Polish),然后继续跟踪。

      ——————

      创建并跟踪更多跟踪点

      video

      返回第一帧,然后在盒子的面上创建两个以上的跟踪器,用来跟踪标记点。

      video

      跟踪方法和第一个跟踪器一样,必要时候进行重新定位和平滑,直到跟踪到片段结尾。

      ——————

      跟踪箱子背面

      video

      跳到第一帧,在箱子背面的标记点上防治第四个跟踪器。由于跟踪标记点的角度,我们应该先调整跟踪窗口的大小。跟踪到半路上跟踪点就会不见了,第59帧是标记点完全可见的最后一帧。

      video

      如果跟踪器已经跟踪了更长的时间,我们可以回到第59帧,点击并确认 R+ 按钮,这样将删除当前帧以后的所有跟踪关键帧。

      尽管跟踪器在59帧以后就不跟踪了,但是它在片段的剩余部分依然是可见的,而且是激活的状态。播放条上的深红色标记就是跟踪器可见但没有跟踪的地方。蓝色表示跟踪器可见且跟踪过的地方。在第59帧上,点击 H+ 按钮,在剩余帧上隐藏这个跟踪点,然后逐帧播放检查一下,确认这个跟踪点在这些帧上不可见了。

      ——————

      跟踪箱子上面

      video

      接下来我们跟踪箱子的上面。返回第一帧,并在角上放置跟踪器。

      因为这个跟踪标记并不完全可见,所以我们需要相应地调节跟踪窗口和搜索窗口,然后跟踪直到最后一帧。

      video

      继续放置跟踪点,重复跟踪。在比较难跟踪的地方可以逐帧地跟踪,及时调整。

      ——————

      跟踪箱子前面

      video

      跳到最后一帧,在箱子的前面放置最后一个跟踪器,这个标记点只在最后3帧可见。所以,在最后一帧定位跟踪器,然后使用 << 按钮向后跟踪,到达第69帧时,点击 H- 按钮隐藏前面没有跟踪的帧。

      此外,如果我们在其他跟踪软件中做好了跟踪,只需要导出跟踪数据,在 User Track 节点中点击 Import 打开文件,将这些跟踪器加载到节点中就可以了。


      4. 解算物体

      video

      和 Camera Solver 将跟踪特征点转化成摄像机运动一样,Object Solver 解算的是物体运动。创建 Object Solver 节点,并连接到 User Track 节点上。要注意,因为 Object Solver 解算的不是摄像机,所以我们需要把当前组选择的是 Box 运动组,保留一切参数默认,点击 Solve Object 就可以了。

      ——————

      设置物体缩放

      video

      打开透视图,播放片段,对解算有一个初步的印象,然后近距离观察运动摄像机和物体,和明显物体离摄像机和原点太远了。此时 PFTrack 认为物体离摄像机很远,所以需要一个数学算法限制,当只使用一个摄像机解算物体运动时。

      video

      现在我们来校正这个问题。在 Orientation mode 菜单中选择 Distance form camera,在 Cinema 中启用操控器,更改物体大小,以及离摄像机的距离。拖拽操控器,使物体离远点更近。


      5. 测试解算结果

      video

      现在我们可以在 Test Object 节点中使用测试物体测试解算结果了。关闭透视图并创建节点。在 Available objects 列表中点击 Cow_Head,将牛头放入解场景中。将 Interaction mode 改为 Place at selected feature,并将 Positioning mode 设置为 Origin,牛头就会放置在箱子的原点上,而不是边缘上。点击箱子面上的一个跟踪点,将牛头放在那里,然后使用 Rotate、ScaleTranslate 交互模式移动到合适的位置。

      video

      完成后,将 Interaction mode 设置为 None,隐藏操控器,然后播放,测试物体应该就像贴在箱子上一样。


      6. 导出解算结果

      video

      创建 Export 节点,导出场景。在 Groups 选项卡中,我们可以看见 Camera 组和 Box 组都可以导出,所以两个都选上,点击 Export Scene,导出结果。


      如有疑问,可以跟帖留言,追光会尽快回复噢。

      如果喜欢追光的帖子,点击我的头像,加我为好友,就可以看到我得更新啦,也可给我发私信,点击帖子顶部得收藏放入收藏夹,方便将来再次查看~

      本帖未经允许不得转载,禁止二次转载,转载请注明出处并保留在本站的完整链接,

    • #31036

      小仙女
      参与者
      军士

      很赞,思路清晰,讲解详细,网上好多教程都是长长的的一个视频,再不就是全英语无字幕,看着看着就不知道自己在干什么了。第一次理解了为什么要先求摄像机。

    • #49164

      施主请留步
      参与者
      军士

      那个有几个问题想咨询一下 1:makeObject节点和objectsolver 这个两个节点有什么不同吗 :2:然后就是当整个场景结算好时列入上述素材  在三维视图中有场景运动相机和物体运动相机都结算好时  放置测试物体的时候  测试物体都不会准确的在 跟踪点上 有的是在跟踪点的前面有的是在跟踪点的后面 但测试物体的动画跟物体运动想一直 怎么回事呢? 3:当场景中的运动物体出现很大的旋转等透视变化时 这样的跟踪是否还会有效呢   4:最近做东西的时候发现导出相机时候放到maya里 给模型做约束发现物体的动画和在PFtrack里的不太相同  但在PF里测试的时  测试物体都是稳定的    最近一直被这几个问题所困扰

    • #49165

      施主请留步
      参与者
      军士

      还有一个问题就是空间关系的话怎么确定准确呢 还是根据点的信息找个大概位置呢

      • #49167

        追光
        参与者
        机构认证

        空间关系计算出来要求是准确的。如果是对追踪质量要求比较严格的,需要进行测量,前期测量分为两种(而且两种都是必须要做的):
        1,对物体的真实尺寸进行测量,追踪好后,选择两点输入事先已经测量好的数据。比如:箱子高度是40cm,宽度是20cm
        2,需要前期多角度倾斜摄影,通过后期反求出物体的三维空间关系。
        3,如果是有旋转,选准角度低于60度的,可以直接点追踪,如果大于这个度数建议将第二步中测量得到的三维物体放入场景,使用模型追踪(如下贴)。

        【PFTrack教程】如何使用几何体解算摄像机?(gif图文详解)

    • #49176

      施主请留步
      参与者
      军士

      make object 和objectsolver有什么区别呢

      • #49181

        小仙女
        参与者
        军士

        makeobject是创建几何物体的,objectsolver是解算器。

    • #52086

      baixiaobai
      参与者
      军士

      求助     pftrack怎么跟踪多个物体在同一场景里

    • #55896

      caoxueqiang
      参与者
      军士

      非常感谢!学习了!

    • #64268

      阳光之下
      参与者
      军士

      你好,怎样才能让点动,

      就是平时咱们反求出的相机,

      放到maya里在不用相机的情况下,

      导出的点,自身有运动信息,

      现在把相机去掉,点就不动了。

      怎样才能导出有运动信息的点,而不靠导出的摄像机动。

      • #64278

        追光
        参与者
        机构认证

        这是复合跟踪,需要先求解出摄影机运动,接着再追踪物体,反求出物体运动。这篇文章中的内容可以一步一步操作一下复合跟踪的操作流程与节点流程。

    • #65556

      波士顿糖果
      参与者
      军士

      请问怎么把物体结算出来的信息导入nuke里使用呢,比如使用箱子的跟踪信息给箱子上贴一张图。

      • #65560

        追光
        参与者
        机构认证

        直接导出就可以~~导出为nuke工程文件即可,然后在Nuke的脚本运行里打开脚本,运行一遍脚本就导入到Nuke中了~~

        • #66062

          波士顿糖果
          参与者
          军士

          能不能出一个数据导出到nuke里的应用教程,这个应该还是非常有帮助的,谢谢大神了。

          • #66063

            追光
            参与者
            机构认证

            好的,这几天安排下,做一个数据交换的教程~~敬请关注NewVFX~~😄

    • #71342

      摘叶茶
      参与者
      军士

      大大,为什么这个素材用PFTrack很易跟踪好用3DEqualize就是箱子的跟踪点跟不好(在3维视窗里看跟踪点不成箱型状,单独看箱子的跟踪点是完美的,是场景解算影响的吧)

      • #71348

        追光
        参与者
        机构认证

        3dequalizer的追踪精确度,效率,远远超过pftrack。但3de的操作方式相对更复杂,可设置参数会更多…相对而言pftrack的操作更加简单一些。体系原理是一致的,只是3de可以更多依靠人工操作,对参数进行更加细致的调整,熟悉面板上每一项参数的算法原理是很重要的。

    • #71345

      摘叶茶
      参与者
      军士

    • #71346

      摘叶茶
      参与者
      军士

      在手动跟踪里看箱子跟踪得不错,在3D视窗里看箱子的跟踪点却成一直线状

      • #71347

        恬的卫士
        管理员

        对的,这主要是用于追踪运动物体的相对中心点。如果想要解算运动物体在三维空间中精确的模型位置,必须要经过摄影测量这个步骤。

        也就要求前期拍摄需要标记拍摄,同时需要按照摄影测量规则拍摄测量照片,用来求解精确模型尺寸。
        最后将精确模型尺寸匹配到你现在追踪好的物体上,才会得到精确模型空间位置。

        缺乏摄影测量的情况下,无法得到精确的位置,只是大概参考中心点。

    • #71350

      摘叶茶
      参与者
      军士

      但用PFTrack却操作简单而精准

      • #71351

        追光
        参与者
        机构认证

        对的,一般的影片用pftrack就可以了。如果是电影就只能用3de,没有第二种选择。能精准的追踪1个像素以内的误差,但运作成本,人员要求也非常高。3de的价格也够买很多套pftrack了,如果不做电影,pftrack够用了…主要是简单。

        • #71353

          摘叶茶
          参与者
          军士

          大大,那我这跟踪问题出再哪里?需要改哪跟踪流程,哪些参数的调校?主要就是3D里箱子的跟踪点的型态问题,更改场景跟踪点解算后型态也会相应改变

        • #71382

          摘叶茶
          参与者
          军士

          大大,跟踪出现这英文(obsolete)是什么意思?

    • #72168

      nahs
      参与者
      军士

      大大,请问第二步骤的Edit Camera node中导入的文件在分享的百度云里没有。可以自己用Camera Solver估算吗?谢谢

      • #72169

        追光
        参与者
        机构认证

        那个不属于第二步,只是顺带提到的导入其他场景的摄影机的方法。在这个流程中,不需要用到Edit camera节点,目前的流程中就是使用的Camera solve来进行计算的。Edit camera是针对已经 Solve 好镜头数据的场景使用的。

        • #72172

          nahs
          参与者
          军士

          谢谢!明白了,解释的很清楚 🙂

    • #78686

      Chiraku
      参与者
      军士

      想请问一下。

      我导出了fbx文件在nuke里面读取了导出的牛头模型还有点云和摄像机。有办法可以在nuke里面建一个cube之类的模型。把这个cube的的运动匹配到运动的点云上或者和运动的牛头模型做父子连接吗。我现在用readgeo读取的模型和点云虽然在动。但是都没有关键帧动画。不知道nuke里面建的cube的位移旋转这些该怎么匹配那个箱子的运动。

      • #78689

        追光
        参与者
        机构认证

        这个问题比较好,也涉及到 pipeline 流程的问题了。在了解到这些问题的时候会逐步发现,影视制作是由数十种不同工种配合的,无法在两三种软件里完成整个流程,所以当我们把每个软件几乎学习掌握到几乎极致后,才发现这个软件只能完成这一部分内容,其他部分还需要其他的,这就是 pipeline 流水线的不同环节。

        首先、反求追踪做完后会分为两个环节:1、将数据给三维软件一份(Houdini,Maya),含摄影机、模型运动、点云用于参考对位,所以导出前将坐标做标准化处理非常重要,不然到纯三维软件里没有专门处理流程,在专业三维软件中处理物体运动父子协同或者克隆会很轻松。2、将数据给到合成师一份,含摄影机以及点云,主要用来匹配数字绘景,当然 Nuke 也有较为简单的三维能力,它的三维能力偏向于绘制布景以及擦除替换修复,完成合成。

        其次、这个问题在我早期学习时候也像你这么思考过,事实上,在复合跟踪中,跟踪运动物体的主要目的是什么?到底是在跟踪什么数据?用途是什么?用途就是精确替换,追踪的核心工作标准是追踪精确度,追踪那么多点实际上是在反向映射到一个点:物体的相对中心点。在一个相对一体的物体上,有一个可以通过计算得到的中心点,而这种计算是通过多个点来完成的。

        最后,牛头的运动是基于已经反求计算结果的中心点运动的。许多时候我们用锐角的物体来布置前期拍摄,以及后期反求参照,就是因为尖角更能直观的标识相对中心。

        Nuke 中导入 PFtrack 的数据,建议使用 nk文件,NK 文件无法直接导入到 Nuke 中,需要将 nk 文件以记事本(文本)方式打开,然后在 Nuke 的命令行工具中运行脚本。

        当然,为了进一步了解影视数据流,可以通过 nk 文本仔细观察查看 xyz 的运动数据。导入后,许多时候会有很多嵌套层,找到最后一层,会有我们要的数据的,但在三维软件中这些数据更有深度使用的价值,Nuke 中可以用来做一些测试,但数据后续创造能力会超出合成软件范畴,因为追踪数据会激发出我们更深远的想象力,比如将牛头替换为精灵、神兽~~或者其他。

    • #78694

      Chiraku
      参与者
      军士

      感谢大佬。

      还想问一下PFTarck导出的py文件如果是像这个提着箱子的素材。求出来的跟踪点其中有运动的点是不是就导入不了nuke。

      我一开始导出PY文件在nuke里ALX+X没法导入。之后尝试了用记事本打开PY文件复制命令在nuke命令行里运行的方法。虽然导入进了点云和摄像机。但是运动的点就丢失了。只有固定的。所以最后才用的FBX文件在nuke里readgeo。用的12.2的nuke。不知道是我版本的问题还是什么地方出了问题。

正在查看 15 条回复
  • 在下方一键注册,登录后就可以回复啦。
error: 提示:内容受到保护!!
-->