三维变形模块

Icon

背景:点云网格变形中,模型顶点可以分为三类:自由顶点,固定顶点和约束顶点。这里的约束条件为顶点位置约束,所以,约束顶点也可以看作是固定顶点,也就是变形后的顶点位置是确定的。而自由顶点就是需要变形的部分,在变形过程中尽可能的保持模型的原始形状。


三维点云变形:基于控制点的变形,原理是分片刚性变形。在点云中采样N个控制点,每个控制点附着一个刚性变换。控制点越多,变形的非刚性越强。控制点数为1的时候,即为刚性变形。一般的操作步骤:

deformpointlist
  1. 在三维变形应用里,导入需要变形的点云。注:也可以导入网格,因为网格也可以看作是一个点云(抛掉网格连接关系)
  2. 初始化控制点:设置控制点数目,默认值为300. 点数越多,变形越精确,但是速度也会越慢。如图a所示。
  3. 控制点选择:控制点分为两种类型,一种是固定的(红色),一种是可以动的(蓝色). 把需要变形区域的控制点选择为蓝色. 选择方式是通过鼠标右键框选添加或者去掉控制点。如图b所示
  4. 变形操作:通过移动蓝色控制点来变形。右键拖动控点到目标位置,控制点变为绿色,目标位置为灰色。如图c所示。
  5. 最后变形,如图d所示

三维网格变形:基于网格顶点的变形:输入三维网格。通过网格顶点的位置约束来驱动变形。与点云变形不同的是,网格变形应用了网格的连接关系,变形过程中,更加注重网格局部刚性的保持。一般的操作步骤:

deformmesh
  1. 导入需要变形的网格。如图a所示。
  2. 顶点选择:选择变形区域(蓝色)。选择方式是通过鼠标右键框选添加或者去掉控制点。如图b所示。
  3. 控制点选择:通过移动蓝色控制点来变形。右键拖动控点到目标位置,控制点变为绿色,目标位置为灰色。如图c所示。
  4. 变形:然后初始化变形,最后变形。在控制点索引不变的情况下,变形初始化只需要一次。如图d所示。可以用橡皮擦掉控制点的显示。

注:鼠标右键有三种编辑模式,框选添加蓝色点,框选去除控制点,移动控制点


控制网格变形:变形的基本方法有两步:首先构造控制网格,然后计算出模型基于控制网格的坐标。在变形的时候,用户通过操作控制网格,来达到模型的相应变形。一般的操作步骤:

CageDeformation_blade
  1. 计算输入网格的控制网格。参数为控制网格在xyz方向上的分段数,如图1所示。
  2. 计算网格的坐标。目前有两类坐标,对应两类变形。刚性-尽量刚性的变形;线性-线性变形。
  3. 用户通过操作控制网格,来达到模型的相应变形。图3是刚性变形,图4是线性变形。

如果您有任何疑问和建议,欢迎发email:

contact