发明名称 基于表面网格的快速毛发建模方法
摘要 本发明公开了一种基于表面网格的快速毛发建模方法,该方法通过将目标毛发形态由简单的表面形状网格控制,从而实现简化毛发的建模过程,并得到同样高质量建模结果的目标。本发明仅需要用户使用普通的网格建模方法创建大致表示毛发形状的粗糙表面网格,然后通过完全自动的轨迹线提取方法得到形状网格对应的稀疏毛发轨迹线,基于这些轨迹线与用户指定的毛发依附网格即可生成完全符合形状网格的毛发建模结果。在上述建模结果的基础上,通过用户易控的风格化方法可进一步得到保持建模形状下的风格化效果。本说明书中所指的毛发建模均为将目标毛发对象建模为大量极细发丝几何体的集合的过程。
申请公布号 CN102339475B 申请公布日期 2014.01.29
申请号 CN201110327886.7 申请日期 2011.10.26
申请人 浙江大学 发明人 翁彦琳;侯启明;柴蒙磊;任重
分类号 G06T13/40(2011.01)I;G06T17/30(2006.01)I 主分类号 G06T13/40(2011.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 周烽
主权项 1.一种基于表面网格的快速毛发建模方法,其特征在于,该方法包括以下步骤:(1)形状网格的预处理:对输入的形状网格进行预处理以满足后续建模步骤对形状网格的需求规范,即通过自动或用户辅助的方式修正形状网格的参数坐标以标识局部位置内毛发的形态方向,以便在网格内自动提取毛发轨迹线;(2)毛发轨迹线的提取:通过采样方式得到网格内均匀分布的毛发轨迹线,将表面的毛发形态方向定义依据网格的几何结构拓展至形状网格几何体内部,得到空间内的毛发形态的离散表示;(3)基本毛发建模:为毛发对象额外指定依附网格对象,由依附网格来决定毛发的起始位置,以属性贴图方式定义在依附网格上的密度、长度参数来进行毛发形态的局部控制,而步骤(2)中得到的毛发轨迹线集合用以改变空间中的毛发方向以拟合形状网格确定的毛发形态,并最终得到基本的毛发建模结果;(4)毛发的风格化:基于基本的建模结果,通过过程式风格化方法来精细调整毛发几何以实现卷曲、弯曲、杂乱风格化效果;所述步骤(2)具体包括以下子步骤:(A)在参数坐标UV空间V轴上确定<img file="169638DEST_PATH_IMAGE001.GIF" wi="14" he="17" />个等高线采样层,其<img file="453989DEST_PATH_IMAGE002.GIF" wi="14" he="17" />值分别为<img file="804199DEST_PATH_IMAGE003.GIF" wi="93" he="26" />,每个采样层在得到的轨迹线上对应于其轨迹上一点;(B)对采样层<img file="832197DEST_PATH_IMAGE004.GIF" wi="20" he="26" />,将其在UV平面上的对应直线<img file="951463DEST_PATH_IMAGE005.GIF" wi="46" he="26" />与形状网格求交得到<img file="141136DEST_PATH_IMAGE006.GIF" wi="22" he="26" />组空间线段,使其满足:不同组的线段均相互分离,而组内线段互相串联成一空间曲线;第<img file="40959DEST_PATH_IMAGE007.GIF" wi="12" he="20" />组空间线段与形状网格的边相交得到<img file="46217DEST_PATH_IMAGE008.GIF" wi="21" he="29" />个<img file="347886DEST_PATH_IMAGE009.GIF" wi="16" he="17" />值从小到大排列的一组交点<img file="2011103278867100001DEST_PATH_IMAGE010.GIF" wi="306" he="37" />其<img file="646143DEST_PATH_IMAGE002.GIF" wi="14" he="17" />值均为<img file="970945DEST_PATH_IMAGE004.GIF" wi="20" he="26" />,<img file="340747DEST_PATH_IMAGE011.GIF" wi="46" he="26" />;将每组线段首尾相连构成<img file="169025DEST_PATH_IMAGE006.GIF" wi="22" he="26" />个封闭的空间多边形,将其作为对应于采样层<img file="966080DEST_PATH_IMAGE004.GIF" wi="20" he="26" />的等高线多边形截面;(C)在步骤(B)中,对于每个采样层<img file="11134DEST_PATH_IMAGE004.GIF" wi="20" he="26" />得到<img file="184627DEST_PATH_IMAGE006.GIF" wi="22" he="26" />个截面;从<img file="195308DEST_PATH_IMAGE012.GIF" wi="20" he="26" />到<img file="100947DEST_PATH_IMAGE013.GIF" wi="29" he="26" />,截面数量的变化与形状网格的拓扑关系的变化有无分支无汇聚的管状结构、分支结构或汇聚结构三种情况:将这种不同采样层之间截面的对应关系用截面关系图进行表示:图中的顶点用来表示某个截面,将<img file="197079DEST_PATH_IMAGE014.GIF" wi="30" he="26" />中截面与<img file="846366DEST_PATH_IMAGE004.GIF" wi="20" he="26" />中对应截面相互连接;(D)求得每个截面的重心位置<img file="711554DEST_PATH_IMAGE015.GIF" wi="26" he="29" />;(E)以<img file="788094DEST_PATH_IMAGE016.GIF" wi="116" he="24" />的顺序对所有采样层进行遍历处理:对当前采样层<img file="371522DEST_PATH_IMAGE004.GIF" wi="20" he="26" />上的所有截面,<img file="48667DEST_PATH_IMAGE017.GIF" wi="42" he="21" />,比较其与步骤(C)的截面关系图中上一采样层<img file="33941DEST_PATH_IMAGE014.GIF" wi="30" he="26" />上的所有对应截面的<img file="281383DEST_PATH_IMAGE009.GIF" wi="16" he="17" />值范围,若有<img file="289790DEST_PATH_IMAGE009.GIF" wi="16" he="17" />值区间不属于任一对应截面的<img file="343197DEST_PATH_IMAGE009.GIF" wi="16" he="17" />值范围,则在这个<img file="120660DEST_PATH_IMAGE009.GIF" wi="16" he="17" />值区间于形状网格上对应的空间线段与重心<img file="601320DEST_PATH_IMAGE015.GIF" wi="26" he="29" />构成的多边形内部进行均匀采样得到新的轨迹线起始采样点;而对于所有基截面,<img file="329979DEST_PATH_IMAGE018.GIF" wi="42" he="21" />,在其截面的所有多边形区域内采点;对于任一起始于<img file="124760DEST_PATH_IMAGE004.GIF" wi="20" he="26" />的新采样点<img file="819046DEST_PATH_IMAGE019.GIF" wi="20" he="29" />,进行如下计算:连接重心<img file="408291DEST_PATH_IMAGE015.GIF" wi="26" he="29" />与<img file="453607DEST_PATH_IMAGE019.GIF" wi="20" he="29" />并延长使之与截面的边交于点<img file="848816DEST_PATH_IMAGE020.GIF" wi="24" he="29" />,则<img file="335292DEST_PATH_IMAGE020.GIF" wi="24" he="29" />的纹理坐标表示为<img file="423334DEST_PATH_IMAGE021.GIF" wi="57" he="34" />;我们定义如下的采样点二元参数<img file="129515DEST_PATH_IMAGE022.GIF" wi="62" he="30" />来确定采样点在截面内的相对位置:<img file="328415DEST_PATH_IMAGE023.GIF" wi="193" he="69" />;其中,<img file="669398DEST_PATH_IMAGE024.GIF" wi="50" he="30" />代表该采样点到形状网格表面投影点的纹理<img file="928341DEST_PATH_IMAGE009.GIF" wi="16" he="17" />坐标,<img file="620354DEST_PATH_IMAGE025.GIF" wi="46" he="30" />则表示该采样点到截面重心的长度与形状网格表面投影点到截面重心的长度之比;对于上一采样层<img file="357365DEST_PATH_IMAGE014.GIF" wi="30" he="26" />上的采样点<img file="818434DEST_PATH_IMAGE026.GIF" wi="29" he="26" />,在当前采样层<img file="248278DEST_PATH_IMAGE004.GIF" wi="20" he="26" />上利用采样点参数<img file="660543DEST_PATH_IMAGE027.GIF" wi="62" he="29" />定位采样点在这一层上的确切位置<img file="201245DEST_PATH_IMAGE028.GIF" wi="20" he="26" />;首先在截面关系图上找到<img file="844716DEST_PATH_IMAGE026.GIF" wi="29" he="26" />在<img file="117566DEST_PATH_IMAGE014.GIF" wi="30" he="26" />上的截面与<img file="846487DEST_PATH_IMAGE004.GIF" wi="20" he="26" />对应的在关系图上有边直接相连的所有截面,然后判断采样点的<img file="862985DEST_PATH_IMAGE009.GIF" wi="16" he="17" />值是否包含在这个截面的<img file="360962DEST_PATH_IMAGE009.GIF" wi="16" he="17" />值范围(<img file="804713DEST_PATH_IMAGE029.GIF" wi="81" he="29" />)中,即判断是否满足<img file="20931DEST_PATH_IMAGE030.GIF" wi="154" he="30" />,从而确定采样点是否在这个截面中存在对应点,若没有截面满足这个条件,则认为这条轨迹线终止于上一采样层<img file="342584DEST_PATH_IMAGE014.GIF" wi="30" he="26" />;若有截面满足这个条件,假设存在<img file="695068DEST_PATH_IMAGE031.GIF" wi="20" he="17" />个,令截面<img file="575299DEST_PATH_IMAGE007.GIF" wi="12" he="20" />的面积为<img file="13234DEST_PATH_IMAGE032.GIF" wi="21" he="26" />,其中,<img file="433851DEST_PATH_IMAGE033.GIF" wi="42" he="20" />,所有截面的面积之和为<img file="844104DEST_PATH_IMAGE034.GIF" wi="74" he="32" />,截面面积按如下方式估算:将封闭截面的所有边与这个截面的重心<img file="691974DEST_PATH_IMAGE035.GIF" wi="24" he="25" />构成一组三角形,将所有三角形面积相加即为截面面积的估算,计算得到一个(0,1)之间独立均匀分布的随机数<img file="554888DEST_PATH_IMAGE036.GIF" wi="14" he="16" />,若<img file="779196DEST_PATH_IMAGE037.GIF" wi="136" he="26" />,则将采样点在<img file="542490DEST_PATH_IMAGE004.GIF" wi="20" he="26" />层上的对应点从这个截面<img file="826841DEST_PATH_IMAGE007.GIF" wi="12" he="20" />上选取;选取对应截面后,通过参数<img file="177051DEST_PATH_IMAGE027.GIF" wi="62" he="29" />在截面上定位唯一的一点<img file="939471DEST_PATH_IMAGE028.GIF" wi="20" he="26" />;(F)对于每个采样点,连接其在所在的连续采样层上的所有对应采样点,即得到一条对应的毛发方向轨迹线。
地址 310058 浙江省杭州市西湖区余杭塘路388号