【3DEqualizer教程】如何使用多个点组解算画面中刚性物体的运动?(视频详解)

VFX大学 PFtrack,3DEqualizer,Mocha摄像机追踪 【3DEqualizer教程】如何使用多个点组解算画面中刚性物体的运动?(视频详解)

正在查看 18 条回复
  • 作者
    帖子
    • #31807

      追光
      参与者

      V友们早啊^_^今天追光教大家使用 3DEqualizer 解算画面中的刚性物体的运动轨迹。今天我们使用的是手动跟踪,在今天的教程中,我们会讲到手动跟踪的一些技巧,使用多个点组解算物体,以及在三维空间中创建几何体、操作几何体。知识点还是比较多的,不过追光会分解各个知识点,不会让大家难学的。在本教程中,我们会跟踪练习素材中男孩手中运动的盒子。

      今天我们使用 3DEqualizer 跟踪反求刚性物体运动的工作流程为:

      1. 导入素材,并检查素材;2. 解算摄像机路径;3. 跟踪运动物体,并解算;4. 优化摄像机解算;5. 3D 空间对位;6. 检查最终结果。


      练习素材下载链接:

      3DEqualizer自动跟踪摄像机反求训练:物体跟踪


      下面是具体操作步骤。

      一、 导入素材,并检查素材

      启动 3DEqualizer,点击属性编辑器中的 Live Action Footage > Browse…,打开文件浏览器,导入练习素材。

      为了后续工作流畅,我们可以点击底部菜单中的 Playback > Export Buffer Compression File…,为素材导出缓存文件。

      video

      play-sharp-fill

      00:09

      导出缓存后,我们需要播放素材,检查一遍,确认跟踪难度,并构思跟踪方法。


      二、解算摄像机路径

      在这个过程中,我们将手动跟踪墙上的点,解算摄像机。

      创建第一个跟踪点

      1. 项目中有一个默认点组,是 Camera 类型的,这里就默认不更改,只是对这个点组重命名,便于后续好辨认。

      2. 选择墙上的一个标记点,按 Ctrl 点击,创建一个新的跟踪点,有的点需要设置跟踪区域和搜索区域。

      这里说下,选择的跟踪点最好是贯穿整个片段的,没有遮挡,颜色与周围反差大的、好辨认的点。

      3. 在点浏览器中选择新创建的点,做如下操作之一,选择跟踪点的模式:

      • 右键 > Modify > Trackingmode > Marker。
      • 在 Point 属性编辑器 > 2D Tracking 选项卡 > Trackingmode> Marker。

      跟踪模式里有三种类型:图案(Pattern)、标记点(Marker)、边/角(Edge/Corner)。我们选择的跟踪点是标记点。

      4. 为了区分每个点组中的点,我们可以修改点的颜色,这里追光选了黑色。

      video

      play-sharp-fill

      00:14

      ——————

      跟踪第一个跟踪点

      1. 回到画面的第一帧,点击画面左下角的 Gouge marker 按钮,抓取标记点,精准对位。

      2. 点击画面右侧的 Center 2D 按钮,居中显示跟踪点,便于跟踪时检查是否精准或出错。

      3. 点击下方的 Track 按钮,跟踪第一个跟踪点,跟踪完成后,检查一下跟踪情况。

      video

      play-sharp-fill

      00:14

      ——————

      继续跟踪墙上的点,然后解算摄像机

      在解算摄像机的过程中,追光使用了11个点:9个墙上的点,两个地上的点,这样解算结果会更精确。

      1. 使用上面的方法,继续跟踪墙上优质的标记点。下面是一个跟踪结果示例:

      video

      play-sharp-fill

      00:13

      2. 按 Alt+C(和点击底部菜单中的 Calc > Calc All from Scratch…是一样的),解算摄像机路径。

      在左下角误差浏览器中可以看到,解算结果还不错。

      3. 现在我们切换到 3D 空间中查看结算结果,可以看到摄像机轨迹非常平滑。

      video

      play-sharp-fill

      00:10

      ——————

      为跟踪点创建网格模型

      为了便于后续对位墙面和盒子的位置,我们给跟踪好用于解算的点创建一个网格模型,当作一个简易的墙面。

      1. 点击右下角的 Top 按钮,切到俯视图。

      2. 选择墙上的9个点,点击 3D Models > Create > Mesh From Points…,点击 Create,网格就创建好了。

      3. 可以看到新建的模型底部多了一个面,需要删除。点击窗口左侧的 Remove Poly 按钮,单击多余的面和线,进行删除。

      video

      play-sharp-fill

      00:20

      最终我们得到一个简易的墙面模型。

      ——————

      检查模型和画面的对位情况

      将主窗口切换为 Lineup 界面,按播放键进行播放,可以看到画面完美对位。

      video

      play-sharp-fill

      00:12

      如果对位很好,按 F2 键回到手动跟踪界面,按 Alt 框选空白区域,取消对所有点的选择。按 F 键回到全屏画面。


      三、跟踪运动物体,并解算

      在这一步中,我们将跟踪男孩手中的盒子。

      创建 Object 点组,并跟踪第一个标记点

      1. 回到画面第一帧,右键点组中的任意区域 > Add New… > Point Group…。要注意,此时我们要跟踪的是画面中的运动物体,所以点组类型应该为 Object。将该组重命名为 box。

      2. 选择盒子上面中心的点,按 Ctrl 单击,添加跟踪点,设置跟踪区域和搜索区域。

      由于我们跟踪的是标记点,跟上面摄像机跟踪一样,所以不必修改点的跟踪模式。

      video

      play-sharp-fill

      00:24

      ——————

      跟踪盒子上剩余的点,并解算盒子运动路径

      按照上面的方法跟踪盒子上剩余的标记点。下面是一个跟踪好的示例:

      video

      play-sharp-fill

      00:16

      取消对所有点的选择,按 Alt+C,解算物体运动路径,得到解算结果。


      四、优化摄像机解算

      之前我们的摄像机解算没有进行镜头畸变校正,导致误差比较大(平均误差为 0.3740),所以现在我们要优化一下。这里我们主要是使用镜头参数优化摄像机解算。

      所以这里追光要特别提醒大家:在跟踪反求的过程中,首先一定要对画面进行去畸变校正

      1. 将属性编辑器切换到 Lens,将 Focal Length 设置为 Adjust(调节);勾选失真参数中的 Distortion – Degree2 的 Adjust 按钮。

      2. 点击顶部菜单 Config > Add Vertical Pane > Parameter Adjustment…,调出参数面板。

      3. 点击参数面板下方的 Adaptive All,将参数的可视化方式都改为自适应。然后点击 Adjust… 按钮,计算参数调节量。

      4. 计算完成后,点击 Transfer Parameters,转化参数。

      5. 再次按 Alt+C 解算摄像机轨迹,完成后,关闭参数面板。

      video

      play-sharp-fill

      00:33

      此时摄像机轨迹的平均误差达到了 0.0650,比起之前远远降低了。


      五、3D 空间对位,得到最终结果

      3D 空间的对位,主要是校正场景大小,以及场景中物体与物体之间的位置关系。一般来说,我们按照上述方法反求出来的场景,无论是静止物体还是运动物体,它们和摄像机之间的缩放都是不正确的;而且反求出来的静止物体和运动物体之间的位置关系也不多。所以我们需要手动调节,或者补充一些数据,以获取正确的 3D 空间对位。这里追光讲两种对位方法。

      下面我们先检查一下反求出来的场景,很明显,盒子和墙面之间的位置关系是不正确的。

      video

      play-sharp-fill

      00:07

      ——————

      为盒子创建几何模型

      在对位之前,我们先在盒子上创建一些几何体,作为 3D 空间的参考,方便对位。

      我们先将盒子的三个面上的点,创建为3条不同的连线。选中每个面上的点,按 Alt+L,创建连线。

      video

      play-sharp-fill

      00:28

      完成后,取消对点的选择。

      接下来,我们在盒子的上面创建一个正方体。点击 3D Models > Create > Cube,画面中央会出现一个正方体。

      然后按 F2 回到手动跟踪界面,选中盒子上面的四个点,再按 F6 返回 3D 界面,在 3D 界面中按 Shift+Alt,选中正方体,点击 3D Models > Align Model to Points,将模型对齐到点上。

      video

      play-sharp-fill

      00:45

      我们可以对盒子进行缩放、平移,更改颜色等操作。

      下面我们将要进行对位操作。

      ——————

      第一种方法,使用参考点对位

      观察 2D 画面,我们可以发现,男孩衬衫上的倒数第二粒扣子,和盒子几乎是处于统一纵深的,而且几乎没有什么运动。所以决定使用这粒纽扣作为参照点,进行盒子的对位。

      1. 回到画面第一帧,将点组切换为 Camera,按 Ctrl 单击纽扣中心,创建一个新的跟踪点,并设置跟踪区域和搜索区域。

      2. 因为我们跟踪的是纽扣图案,不是标记点,所以将跟踪模式更改为 Pattern。色彩改成一个特殊的红色,区别于其他点。

      3. 点击画面下方的 Track 按钮,进行跟踪。完成后,按 F 键回到全屏。

      video

      play-sharp-fill

      00:24

      4. 由于这个点只是用来作为盒子的位置参考的,所以我们在 Point 属性编辑器中,将它的计算方式改为 Passive – Triangulate Position Only,这样,在重新解算摄像机时,它就只是一个被动的点,不影响摄像机轨迹,只是在 3D 空间中生成一个点,可以用作一个三角面的位置。

      5. 按 Alt+C,重新解算摄像机。其实这一次解算,对摄像机的轨迹没有影响,只是计算这颗纽扣相对于墙和摄像机的位置。

      video

      play-sharp-fill

      00:06

      6. 得到纽扣在 3D 空间中的位置后,我们按 F6 进入 3D 界面,选中 box 点组,点击画面左侧的 Scale 按钮,对盒子点组进行缩放,使它的位置与纽扣的位置平齐。

      video

      play-sharp-fill

      00:20

      这样,盒子的位置就校正好啦。

      ——————

      第二种方法,使用距离约束对位

      追光说过,我们为软件提供的有用信息越多,得到的结果就越准确。在 3DEqualizer 中,如果已知一个物体上两点之间的距离,就可以得到这个物体在 3D 空间中的准确大小,以及它与摄像机之间的距离。

      在这个案例中,我们已知墙上两个点之间的距离是 90.1cm,盒子上两个点之间的距离是 16.8cm。我们只要把这个信息告诉 3DEqualizer,就可以得到准确的 3D 空间对位了。

      1. 激活摄像机点组,选择墙上两个已知距离的点,按 F6 进入 3D 界面,点击顶部菜单 Constraints > Create Distance Constraint…,在弹出对话框中输入 90.1。

      2. 激活物体点组,选择盒子上两个已知距离的点,按 F6 进入 3D 界面,点击顶部菜单 Constraints > Create Distance Constraint…,在弹出对话框中输入 16.8。

      注意:3DEqualizer 中默认的距离单位是厘米。

      video

      play-sharp-fill

      00:30

      这样我们就得到非常精准的位置关系啦。


      六、检查最终结果

      切换到 Overview 界面,播放画面,此时我们创建的长方体已经牢牢地钉在盒子上了。完美!

      video

      play-sharp-fill

      00:14

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

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

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

    • #31809

      小仙女
      参与者

      抓住一直夜猫哈哈~帖子不错哦!赞你!

      • #31811

        恬的卫士
        管理员

        😆 还是要注意身体噢 哈哈 半夜不睡对身体不好  精神可嘉

    • #31892

      乔治
      参与者

      非常好 😆

    • #34202

      caizu
      参与者

      谢谢楼主分享

    • #54525

      zen_l
      参与者

      请问为盒子创建几何模型里的那一步就是创建连线之前,把场景缩小以后,点击物体跟踪的点,我看视频里能够移动到场景中,但是我为什么点了Origin  物体跟踪的点没有反应没有动呢?

    • #55897

      caoxueqiang
      参与者

      非常感谢!学习了!

    • #56172

      艾迪
      参与者

      学习了,比Pftrack复杂

    • #68299

      临江仙
      参与者

      感谢追光兄的很多很多讲解,图片、视频+文字的教程形式太棒了,清楚方便

      • #68346

        追光
        参与者

        非常感谢对这种形式的肯定~~~,不管用视频讲解,还是用文字图片都存在许多的不足,这些文章也算是之前我们学习过程中的学习笔记📒,后来将这些内容逐步释放出来~~让更多人少走弯路,掌握更高级的制作方式,共同进步。学习并了解3de状态的制作人,一定在到达某个状态,寻找更高起点的制作人~~,要好的理解与方式也可以共享出来。加油⛽️

    • #71212

      摘叶茶
      参与者

      大大,盒子底部的跟踪点时隐时显,要怎样跟踪处理?

      • #71213

        追光
        参与者

        哈哈,这个问题是最近才更新的新技能,非常强大,已经做了完整的整理和流程分享,欢迎👏使用大招:偏移追踪与变形追踪,当然还有一种经验追踪,依赖于长期对影视画面拍摄、镜头运动与画面之间的坐标关系,通过建立网格来进行大脑预判追踪,可以学习这篇你就能Get到了。

        【3DEqualizer教程】 2D偏移追踪被遮挡的点与3D立体追踪

    • #72196

      willex
      会员

      非常感谢楼主的教程,跟踪精度确实非常高啊.现在有一个问题,就是导出到maya之后,因为背景图片在3de4里面是进行了校正的,在3de4的overview里面看着3d点和校正后的图是吻合的,背景图也是进行了拉伸的.但是在maya里面导入的却是未校正的背景图,这个应该如何处理呢?

      • #72198

        追光
        参与者

        这个问题提的非常好,这里刚好讲一下我们合成Pipeline流程:

        1. 原始素材(带有镜头光学畸变)。

        数据:原始素材

        2. 后期使用网格计算去除畸变。

        数据:原始素材,镜头畸变模型数据,去除畸变后的素材。注:这里已得到3组数据。

        3. 进行摄影机反求。

        数据:原始素材,镜头畸变模型数据,去除畸变后的素材,摄像机轨迹坐标。注:这里已得到4组数据。

        4. 将摄影机数据 + 去除畸变后的素材导入三维软件。

        备注:三维软件内的模型、动画数据均是无畸变,所以我们使用无畸变数据合成,才能重合。

        5. 三维模型、动画渲染后,得到动画序列。

        数据:三维动画无畸变数据。

        6. (三维动画序列 +镜头畸变反向数据)+ 摄影机原始素材,进行合成。

        7. 最终结果:摄影机原始畸变视角下的三维动画与实拍镜头。

        备注:摄影机原始素材最终未改变,符合现实物理世界的视角、畸变,看起来更加自然,而且数据始终原始无损。

        结论让计算机三维动画来匹配现实世界,以实现混合计算机世界与现实世界的目的。


        问题解决方法:根据流程得出,您缺少了矫正后的去畸变实拍镜头数据,3de其实是有渲染能力的,也是专门为了这个Pipeline设计的,具体操作如下图所示:

    • #72207

      willex
      会员

      谢谢,那么附带出了两个问题.
      第一,用棋盘格进行畸变校正和上文教程里面解算完之后用parameterAdjustment进行的畸变校正,两者是取一,还是两者都要进行呢?如果是取一,哪个会更好呢?棋盘格校正很直观,之前在boujou里面也是用的这种原理,而解算完之后的parameterAdjustment畸变校正目前不是很清楚它的原理,所以也不知道它到底优势在哪里.
      第二,export里面可以导出nuke的lensDistortion node,或者gridwarp,这几个的使用上在哪里可以找到详细的帮助或教程呢?这几个的输出对应的是棋盘格的校正,还是也整合了parameterAdjustment校正?
      不好意思,问题有点多..

    • #72208

      willex
      会员

      测试了warp4可以直接输出校正后的序列,而通过nuke的gridwarp也可以获得同样的效果.请问畸变的反向数据是在哪里输出呢?

      • #72209

        追光
        参与者

        这涉及到整个Pipeline构建,多种软件之间协同,数据传递,多方面的生产线构建问题,单纯靠现有软件原始功能不能实现。等将来我们做Pipeline方面教程和服务时候,会陆续发布出来。

    • #72213

      willex
      会员

      严重期待

    • #74643

      摘叶茶
      参与者

      大大,如何取消原有距离约束,重新约束。现在删约束说是原有一个点是有约束

      • #74644

        追光
        参与者

        刚刚测试了一个3DEqualizer以前追踪好的工程,建立约束、取消约束都正常,无法复现你所遇到的问题。从3DEqualizer R4b4版本开始支持一个点与多个点建立约束关系。

        建议:从2D Tracker的点面板 > 打开点编辑器检查,是否存在选择时候多选了点,建立了其他约束关系。

    • #74646

      摘叶茶
      参与者

      如果在lineup介面,开起3D points 跟踪点与标记中心有些帧会偏移,镜头校正后好些单还会偏移,这要如何消除

    • #74648

      摘叶茶
      参与者

      已搞定

    • #87834

      jerryfeng
      会员

      把场景缩小后,点击跟踪物体的点,在点击Origin没有反应,这是为什么?

      • #87836

        追光
        参与者

        刚刚打开这个工程试了下,是正常的,这里选择的是盒子的所有点(点组),而不是其他的单一点。可以检查下之前的流程是否正确~~

    • #87845

      jerryfeng
      会员

      video

      play-sharp-fill

      追光大大,我还是在调整场景的scale后,物体跟踪的点没办法匹配到场景中间来,点origin没有任何反应,麻烦帮忙看看是什么问题。

    • #129304

      xiaofeifei
      参与者

      大佬你好,请问在这个案例中,我们已知墙上两个点之间的距离是 90.1cm,盒子上两个点之间的距离是 16.8cm 这个两个90.1cm和16.8cm的数值在哪里得到的?

正在查看 18 条回复
  • 在下方一键注册,登录后就可以回复啦。