基于三维网格采样的袜品辅助设计系统的设计与实现

2022-09-06 01:30阮崇浩彭来湖胡旭东
软件工程 2022年9期
关键词:编织顶点约束

阮崇浩,汝 欣,彭来湖,胡旭东

(浙江理工大学浙江省现代纺织装备技术重点实验室,浙江 杭州 310018)

Mr.ChonghaoRuan@gmail.com;ruxin@zstu.edu.cn;laihup@zstu.edu.cn;xdhu@zstu.edu.cn

1 引言(Introduction)

袜品作为一年四季不可或缺的服饰品,除了满足人们日常的穿着需求外,其在医疗、运动、塑形等领域的应用范围不断扩大,例如医疗压力袜、跑步袜、瘦腿袜等。这些袜品在设计上需要符合使用者的足部特征,在生产时需要进行精细的外形控制。而传统的袜品生产技术受商业CAD软件的限制,并不能很好地适应这些新需求。传统袜品开发流程包括设计、打样、测试、批量生产。工人需要根据袜品设计稿手动计算出生产所需的编织参数,并输入款式文件中。同时传统的编织参数计算方法存在一定缺陷,例如各部段的横列数是取固定的横向密度进行计算的,其结果并不准确,往往需要通过反复打样对参数进行调整才能达到设计要求,这个过程繁复冗杂。

近年来,随着计算机图形学技术的蓬勃发展,针织织造技术以数字化、智能化为发展主线,不断对针织设备与工艺流程等进行智能化改造。WU等人提出了一种可将三维模型转化为仿真织物模型的方法,但该织物模型的一行网格对应于实际针织物中一行没有端点的闭合纱线横列,不具备可编织性。IGARASHI等人设计了一个可以将三维模型转化成编织指导图的系统,使用者可以根据图案的指导手工编织各个小块,最后组装成完整织物。MCCANN等人开发了一种编译器,可以将经过排版的形状基元的组合图案转换为V型横机的机器指令。NARAYANAN等人首次实现了将三维网格模型通过网格重构转换为针织机指令。但是,这些方案仅适用于可进行自由加减针的横机。

圆袜机相比于横机具有更高的生产效率,是生产袜品的首选机型。本文针对传统袜品生产中存在的问题,利用图形学技术,并结合圆袜机的工作原理,设计了一款袜品三维辅助设计系统。用户可以使用常规建模软件进行建模或利用三维扫描的方式对袜品的外形进行设计。系统会根据特定规则在模型表面进行顶点采样,快速、准确地获取机器生产所需的编织参数。本文的研究旨在减少袜子款式开发中复杂的工艺计算,为机织技术从工业化向大众化转变提供思路。

2 系统设计(System design)

2.1 总体设计

三维设计相较于平面设计更加直观立体,同时其在复杂精细的外形设计方面具有得天独厚的优势。为了能够显示、处理三维设计模型,本系统主要分为四个模块,分别是模型加载模块、约束环绘制模块、网格采样模块及路径编译模块,如图1所示。这四个模块正好对应系统将设计模型转化为编织参数的四个主要步骤。首先系统会通过模型加载模块将设计模型的数据读取到内存中,并对模型信息进行一些预处理。然后,用户需要在模型表面通过绘制约束环的方式标记模型的袜口、袜头位置。系统会从绘制的约束环出发,沿着模型表面,根据特定的规则对模型的顶点进行采样,绘制出一条类似真实纱线轨迹的编织路径。最后通过路径编译模块,将编织路径转化成圆袜机的编织参数并进行输出。

图1 系统结构Fig.1 System structure

2.2 系统技术选型

如图2所示为系统技术框架。由于系统需要对三维模型进行渲染、处理,因此选用VC++进行开发。SDL2是一款跨平台开发库,旨在通过OpenGL和Direct3D提供对音频、键盘、鼠标、操纵杆和图形硬件的低级访问。本系统使用SDL2库进行基础窗口搭建,使用OpenGL进行三维图像渲染,使用ImGUI进行用户交互界面开发。用户可通过在窗口内操作UI组件或鼠标、键盘来调用程序执行相应动作,实现顶点采样等操作。同时系统会实时建立程序中对象的OpenGL缓存,通过GPU将图像渲染,输出到窗口中,实现用户操作的视觉反馈。

图2 系统技术框架Fig.2 Technical framework of the system

3 系统实现(System implementation)

3.1 模型加载模块

模型加载模块主要有读取模型基本数据、读取约束文件、计算顶点法向量、计算边信息四项功能。

(1)读取模型基本数据:系统按行读取obj文件中的数据,然后根据行首的标识符将数据存放到相应的数组中。读取的模型数据包括顶点坐标、顶点法向量及三角面索引。

(2)读取约束文件:若输入模型所在目录下存在同名的约束文件,系统会在加载模型时自动读取约束文件中的信息,即已保存的约束环的约束点在顶点坐标数组中的索引(数组下标)。

(3)计算顶点法向量:两点构成一条直线,系统会根据读取的顶点法向量、顶点坐标及设置的法向量长度计算出法线另一端点的坐标,并将法线的两端点坐标两两一组存储到一个pair容器数组中以用于顶点法向量渲染。

(4)计算边信息:系统遍历三角面索引数组,整理出所有的边,即找出每个顶点的所有相邻顶点,并计算出顶点到相邻顶点的距离(即边长)。边信息会被用于约束环绘制、网格采样等操作中。

3.2 约束环绘制模块

载入模型后,用户可以使用鼠标、键盘在模型表面放置多个约束点,系统会将这些约束点按顺序连接成约束环,如图3所示。其实现原理在于本系统使用了Dijkstra最短路径算法,该算法主要用于求解带权图中一点到其他点的最短路径,是求解网格顶点最短路径问题所使用的最广泛的、经典的算法。

图3 绘制约束环Fig.3 Drawing constraint rings

(1)算法思想

算法从起始顶点出发向外扩展,从相邻顶点中选取最合适的顶点加入路径,确定路径下一个“当前点”的唯一考虑因素是相邻的顶点与起点间的距离,直到扩展到达目的顶点。

(2)算法步骤

如图4所示,查找顶点→的最短路径的完整步骤如下:

①刚开始={},={、、、、},其中为源点,对应的路径长度为0。集合中与源点直接相邻的顶点存在正常的路径长度,为两点间的距离;中与源点不相邻的顶点对应的路径长度为∞。

②将中与源点间距离最短的顶点转移到中,并作为中间点,重新计算中各顶点的路径长度。如果源点经过中间点到顶点的路径长度比之前计算的路径长度短,则更新中顶点的路径长度。以图4步骤2为例,上一步中→的路径最短,因此将顶点转移到集合中,并作为中间点。以为中间点重新计算中各顶点的路径长度,点和点E的当前路径比之前计算的∞小,更新从源点到点和点的路径长度。

图4 Dijkstra算法步骤Fig.4 Steps of Dijkstra algorithm

③重复步骤②直到集合变为空。

为了避免多次读取同一模型时需要重新绘制约束环,系统会将用户绘制的约束点以顶点坐标索引形式存储到二维数组中(约束环可存在多个,每个环由多个约束点构成),并输出到cons格式文件中,下次读取该模型时加载模块会自动加载对应的cons文件绘制出约束环。

3.3 网格采样模块

为了模拟真实袜品纱线轨迹的形态特点,我们将网格采样过程细分为四个阶段:袜筒阶段→袜跟阶段→袜脚阶段→袜头阶段,如图5所示,步骤如下:

图5 网格采样算法流程图Fig.5 Flow chart of mesh sampling algorithm

(1)执行水平采样,将袜头环上的所有顶点添加到目标顶点集中。系统沿着纱线的实际编织方向以均匀的宽度对目标顶点集进行采样,并将采样节点水平相连。当采样过程再次回到起始节点时就完成了水平采样,生成一条初始采样点横列。

(2)执行纵向采样生成一组新的采样节点。系统遍历当前横列中的所有采样节点,根据相邻节点顶点法向量的叉积得到当前横列所在面的法向量。然后从当前横列的节点出发,沿着与面法向量相反的方向找到一个采样高度处的顶点,作为一组新的采样节点。采样高度并不是固定不变的,纵向采样会根据所处部位的袜品线圈圈高特征去动态地调整采样的高度。例如在袜筒阶段,系统会根据采样点的顶点法向量和其所在面的面法向量间的夹角对采样高度动态地进行调整,以此模拟真实纱线因受力所产生的形变,如图6所示。同时采样点的数量也会变化,在袜跟、袜头阶段,我们在采样算法中加入了加减针规则,使得采样点个数变化符合加减针规律。

图6 袜筒阶段采样高度调整Fig.6 Sampling height adjustment of sock leg

(3)执行链接,将相邻的节点水平链接以获得新横列。同时将当前横列的最后一个节点与新横列的第一个节点链接,使得新横列与当前横列相连。最后,将新横列设置为当前横列。

(4)执行平滑处理。如果模型的顶点数较小,则随着采样的迭代进行,生成的横列可能会变得不平整。因此,系统采用了加权移动平均法对生成的采样点横列进行平滑处理,即平滑处理后的节点坐标是该节点处理前坐标与其相邻节点的坐标的加权平均值。

(5)重复步骤(2)—步骤(4),若循环中满足了阶段切换条件,就切换采样阶段与规则,直至满足袜头阶段结束条件。每个采样循环中都加入了阶段切换判断:例如袜品模型在袜筒与袜跟交界处的顶点具有曲率局部最大的特征。因此在袜筒阶段的每个采样循环内,系统都会计算生成的采样点的曲率,一旦其满足曲率局部最大特征就切换采样的阶段。

3.4 路径编译模块

编织路径就像网格模型与编织参数之间的桥梁。一方面,编织路径是在模型表面上采样生成的,因此其捕获了设计模型的外形特征;另一方面,系统可以从编织路径中获取各部段的横列数及横列宽度等编织参数。其中,横列的宽度并不能直接在袜机中进行设置,系统会将横列的宽度进一步转换成用于控制织物宽度的上机参数——线圈长度。最后,系统会将这些编织参数输入袜品的链条文件,袜机就能够对设计的袜品进行织造。

4 实验结果(Experimental results)

系统界面和生产硬件如图7所示。在实验中,我们使用了WLT-6F全电脑袜机进行织造,针筒的针数设置为108 针,纱线材料选用棉纱。如图8所示,系统输入的网格模型具有1,090,000 个顶点,采样过程耗时35 分38 秒,生成编织路径,然后通过编译得到各个部段的横列数及横列的线圈长度。各个部段的横列数如表1所示。袜机根据输出的编织参数织造的袜品如图8所示。为了更好地呈现袜品的形状,我们使用了软泡沫模型进行填充,可以看出袜品与模型表面较为贴合。在无任何热定形处理的情况下,经系统指导编织的袜品能够较好地还原输入模型的外形。

图7 实验环境Fig.7 Experiment environment

图8 实验过程Fig.8 Experiment process

表1 各部段横列数Tab.1 Number of rows in different part

5 结论(Conclusion)

本文设计和实现了基于三维网格采样的袜品辅助设计系统,该系统初步实现了使用网格采样算法指导袜品的织造,将与图形学技术相结合的新型针织织造技术拓展到圆袜机领域。实验结果表明,由该系统指导编织的袜品在外形上与设计模型基本一致。我们的方案可以有效减少袜品款式开发中复杂的工艺计算,缩减打样工序。同时该系统结合了三维设计的优势,可以让袜品的款式设计变得更直观立体,尤其适用于复杂精细外形的设计。然而,该系统的实现方案和计算效率还可以从以下几方面进行优化:

(1)方法改进:目前,系统通过用户绘制约束环的方法来标记采样算法的关键位置。未来我们考虑使用模型各点的SDF(形状直径函数)提取模型的骨架,并结合区域分割的方法自动获取这些关键位置,以减少人工干预。

(2)系统扩展:我们计划添加织物仿真功能,以呈现带有线圈细节的“纱线模型”,而不是简单的编织路径,并计划添加一个编辑工具,允许用户编辑和修改“纱线模型”,如YUKSEL等人开发的工具。此外,系统目前只支持平针组织,为系统添加其他组织结构与花型(如罗纹组织、集圈组织)的支持也在我们的计划列表中。同时,系统的代码仍处于开发级别,采样过程的计算时间还可以进行显著优化。

猜你喜欢
编织顶点约束
体验编织的乐趣
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
“碳中和”约束下的路径选择
约束离散KP方程族的完全Virasoro对称
竹自清高,编织美好
关于顶点染色的一个猜想
度假吧!带上你的编织鞋包
不等式约束下AXA*=B的Hermite最小二乘解
数学问答
快乐是用来编织