“从点到线,由线到面”,是我们认识和解决复杂问题常用的指导原则。在计算机图形学和三维造型中,这一思想也在字面意义上得以践行:为了构造复杂的三维物体,有一类通用方法,称作绘制界面与造型(Sketch-based interface and modeling),被图形学研究者提出并发展了几十年。
简而言之,用户只需要绘制简单、粗糙的线框草图,计算机便能从草图出发构造符合用户期望的完整三维形状。绘制造型技术是图形学的重要研究领域,主要原因是只需要输入一个简单、直观的草图便可产生复杂而准确的空间形状。
因此该项技术常常被产品设计者、三维艺术家等广泛使用,以快速地将他们对于产品、虚拟场景的构思转化为可以进一步丰富和细化的三维原型。随着该技术的发展,研究者们更加关注如何让未经专业训练的人释放创造力,轻松地构造复杂模型,为更丰富的混合现实应用提供个性化的内容。本文接下来将要讲述的,是我们在促进绘制造型技术表达力和易用性方面取得的进展。
在本文中,我们首先会介绍如何从空间曲线框出发,生长出符合线框形状、满足直观期望的三维曲面,这方面的研究推进了如何构造准确而复杂的空间形状的算法演进;然后我们会介绍如何直接从绘制的平面草图获得符合想象的空间自由形状,这既扩充了用户输入的自由度,又丰富了可构造的形状。这两个问题都涉及到如何产生准确且符合期望的曲面形状,而我们是通过应用经典微分几何知识、开发相应几何处理算法达成这一目标的。
事实上,用户绘制的形状草图中,很多线都是所刻划形状的具有代表性的流线,数学上称之为该形状的主曲率线。如何从这些粗糙近似的主曲率线中恢复曲面,便是我们要解决的核心问题。该核心问题的求解,属于几何处理技术和优化方法的典型应用,因此通过该问题,我们也得以一窥近年来几何处理方向所取得的一些基础的技术进步。
用对齐流线的曲面填充空间曲线框
图1 咖啡机:空间曲线框和对应的填充后的三维形状
三维线框的产生比较困难,现有技术主要包括使用多视图、构建辅助线、针对规则物体优化等方法。为了简化问题,假定我们已经获得了三维空间中的线框(如图1左)。需要将线框填充上合适的曲面,才能构成完整的三维模型(如图1右)。
能够插值线框的三维曲面有无数个,但其中一些形状要更加合理、更符合我们观察曲线时持有的期望。如何将这种期望进行量化?艺术家和设计师往往根据经验,使用有代表性的流线来简洁地刻画一个三维形状。因此,我们需要的曲面所具有的流线应当和给定空间线框一致。从这一目标出发,我们构造了通过对齐给定流线来寻找期望曲面的算法。
我们采用变分方法,定义一个可变的曲面,该曲面插值给定线框,目标则是曲面自身的曲率方向应该和给定流线对齐。为了解决这个困难的非线性问题,我们反过来根据流线建模目标的曲率方向场,以之引导曲面变形,使它的曲率方向更好地匹配该目标方向场(算法流程见图2)。得益于近十年来几何处理方向的扎实进展,构造目标曲率场和曲面变形都更加可靠且高效。因此,对齐流线算法可以在7秒钟内构造出如图1右所示的三维曲面。
图2 构造对齐流线的曲面的过程
从左至右:初始的曲面、初始曲面上构造的目标曲率方向场、变形后的曲面、和变形后曲面的曲率场 。可以看到,最终曲面的曲率方向光滑地对齐于空间线框。
构造目标曲率场使用了一项一般性技术,即曲面上光滑四方向场的构造。所谓四方向场,即在曲面上每个点处定义一个十字形标架,指明在该点处前后左右的方向。因为曲面非零的高斯曲率,在每一点处定义这样的十字形标架明显比平面上的统一坐标系困难。几何处理的技术是采用黎曼几何的思想,在每个点的局部将曲面展平,建立该点与邻接点之间的连接变换,得以衡量两点间标架的一致性。然后把所有这样的邻接点对的标架差异极小化,就得到了曲面上的光滑四方向场。
现在的常用算法通过迭代求解线性方程组,可以在约0.4秒内计算出曲面上2万个点的光滑标架。曲面上构造的方向场有广泛用处,比如早期用于产生曲面上的流线以展示曲面形状的特征(恰好是我们所要求解问题的反面),在空间曲面上铺平纹理图片,产生曲面上规则的四边形网格,到最新用于三维几何重建等。由此可见,在弯曲的空间上获得方向的指示有着重要意义。
曲面的变形是另一项成果显著的几何处理方法。如图2中间两图所示,我们希望中间左图的曲面能够变形到它的曲率方向对齐上面由流线引导出的光滑方向场。曲面的形状在每个局部由它的曲率刻画,所谓变形即是改变曲面的曲率。这里我们可以依赖的几何处理工具是曲面上曲率表达的离散化,即我们能够建立以三角网格表示的曲面上每顶点处曲率的函数表达式,该函数以三角网格每个顶点的三维坐标为变量。图形学中,大量的应用将该表达式做线性化处理,用以实现实时交互的变形,如实时地拖拽一个三维动物的手脚来改变它的姿态,模拟一块布料碰撞物体,甚至捕捉重建运动中人的动态等。
在图3中,我们看到更多以对齐流线的方法构造曲面的结果。这些结果均符合我们观察曲线时对物体空间形状的想象。
图3 更多的对齐流线曲面结果
用平面绘制构造自由曲面
图4 茶杯:参考图片、平面草图、和对应的三维物体(平面草图定义了正面的形状,背面通过对称获得)
很多时候我们想要构造的物体并不具有规则的线框,而是有着丰富的形状变化和细节,因此需要更灵活的线条来刻画这些更自由的形状。如图4所示,为了构造参考图片中给出的茶杯,我们绘制了中间所示的非常稀疏的平面草图,然后凭借算法构造出右图所示的有丰富变化、与图片相似的三维物体。
与第一个问题不同的是,这些零散的平面草图没有严密的结构,无法被转换到三维空间,因此我们无法通过寻找插值空间曲线的曲面的方法构造三维物体,而必须将平面草图所覆盖的区域直接转换到带有深度的三维形状。
与第一个问题相似的地方则是,除去物体边界线,这些零散的平面笔画很多仍然是以曲率线的方式刻画所期望的三维物体。为了区别于前面所述空间中的流线,我们称这些平面投影的曲率线为曲面弯折线。假设物体边界线的空间位置会通过其他方式给定,剩下的问题就是如何找到插值边界曲线的曲面,使得它的曲率方向投影到平面后与用户所画的弯折线一致。
借鉴第一个问题的解决思路,我们仍然寻求从弯折线导出的光滑方向场出发,以之作为曲面应具有的目标曲率场(见图5)。所不同的是,在空间曲面上每一点处的前后与左右为垂直方向,而投影到平面区域后,这些方向不再垂直。我们考虑到了这些差异,并定义了一个局部光滑的物体的曲率线在投影后应具有的属性。然后求解满足这些属性的平面曲率方向场(图5中图),最后寻找曲面使其对齐这个曲率场。
图5 从平面草图产生三维自由形状的算法流程
从左至右:输入的平面草图(其中的弯折线被自动标记了曲率正负)、产生覆盖平面区域的网格、构造对齐了弯折线的目标曲率方向场、最终求得的曲率场、和对应的空间曲面
另一个区别于第一个问题的方面在于,此时的弯折线本身不带有曲率大小信息,仅仅包含曲率方向,而我们必须完整重现出曲率大小,才可以确定曲面的空间形状。我们采取两个步骤来解决这个问题:第一步是确定弯折线每段所代表的曲率正负,这通过将弯折线分解为简单弧线并利用弧线间的关系做出分类;第二步则是估计弯折线所应具有的曲率值大小。
曲线之间的曲率大小互相影响,且需要存在曲面能够实现特定的曲率,因此我们再一次直接从变化的曲面出发,求解变分问题,要求嵌入曲面中的弯折线所导出的曲率场与曲面自身的曲率一致(如图5右两图所示)。为了求解这个离散化到三角形网格的变分问题,我们采用迭代方法,每步迭代则是求解变分问题的线性近似问题。通过每步迭代求解线性方程组,对于如图5所示的曲面,约7千个变量的变分问题可以在3秒以内解决。
完整的物体,每个角度所能看到的只是一片曲面,其他表面被遮挡了。为了构造完整的物体,我们采用多个视角,每个视角下通过绘制草图构造对应的空间曲面,然后将各曲面合并成完整的物体。合并多个曲面,仍然是一个曲面变形的问题,只是这时我们需要每片曲面尽量保持自身形状的同时能够在相交处重合。
图6 通过绘制平面草图构造的三维物体
图6展示了通过绘制平面草图的方法,构造了具有自由形状的物体。它们大多具有丰富的变化,无法用简单的规则线条描述,散乱的弯折线却能恰当地捕捉其形状的变化规律。
在下面的视频中,我们可以看到对于该问题的概括讲解和实际的交互绘制造型过程。
结束语
本文只介绍了通过绘制草图构造三维物体的一类方法。事实上,有更多的方法专注于构造具体类别的物体,包括人脸、衣服、机械零件、花草树木、城市建筑、以草图检索三维物体数据库等。我们期待将来的新技术和新数据,能够允许普通人通过简单的绘制轻松创造丰富的三维物体、场景和动态,让创造触手可及。
在基础技术层面,希望大家可以通过本文了解到一点计算机图形领域、几何处理方向的经典成果和思路。几何处理的问题来源于几何重建、造型、动画等的实际应用,但是其有效性也深刻依赖于数学和几何理论的支持。随着三维信息的获取设备越来越轻便,以及获得信息质量的提高,我们希望未来的几何处理技术能够有效地利用这些信息,并持续从理论角度发展更可靠、高效的算法,将图形学的应用范围最终扩展到现实世界。
从线到面,过去的工作已经确立了一些可行的案例,希望以后我们能够完整构建一个立体的曲面,得以覆盖生活中需要可视计算技术的方方面面。
潘浩,微软亚洲研究院网络图形组副研究员。研究重点是三维几何处理。文中介绍的工作由他和微软亚洲研究院的同事、香港大学和英属哥伦比亚大学的合作者共同完成。
关于三维物体的构造方法,你有什么新奇好玩的想法吗?欢迎在文章下方留言讨论~
你也许还想看: