Loop Order Analysis of Weft-Knitted Textiles
Abstract
:1. Introduction
2. Related Work
3. Fabrication of Weft-Knitted Textiles
3.1. Front and Back Transfer Stitches
3.2. Front and Back Tuck Stitches
3.3. Front and Back Miss Stitches
3.4. Empty Stitch
4. TopoKnit
5. Loop Order Analysis
5.1. Precedence Rules
Algorithm 1$DETERMINE\_RULE(rowj,pattern)$ Returns the precedence rule for row j in pattern |
1: rule = {} 2: currentRow = pattern[*,rowj] 3: if FX* in currentRow then 4: rule = (K,FXL1,BXL1,FXR1,BXR1,FXL2,BXL2,FXR2,BXR2,FXL3,BXL3,FXR3,BXR3,P) 5: else if BX* in currentRow then 6: rule = (K,BXL3,BXR3,BXL2,BXR2,BXL1,BXR1,P) 7: else 8: rule = (K,P) 9: if FT in currentRow then 10: rule = FT + rule ▹ Front Tuck has highest precedence 11: else if BT in currentRow then 12: rule = rule + BT ▹ Back Tuck has the lowest precedence return rule |
5.2. Contact Neighborhood Order
Algorithm 2$YARN\_ORDER(i,j,pattern,DS)$ Return the list of CNs at location $(i,j)$ ordered by their spacial position (front-to-back). |
1: orderedCNs = [] 2: CNList = CNS_AT(i, j, DS) ▹ CNs at location $(i,j)$ 3: if CNList == [] then ▹ No CNs at this location 4: PRINT(“There are no CNs at this location") 5: return orderedCNs 6: CNStitchPairs = CN_STITCH_PAIRS(CNList, pattern) ▹ Define the stitches that create each CN at location (i,j) 7: sortedCNStitchPairs = SORT_BY_J(CNStitchPairs) ▹ Sort pairs by the row the CNs were defined at 8: return YARN_ORDER_RECURSIVE(sortedCNStitchPairs, pattern, orderedCNs) |
Algorithm 3$CN\_STITCH\_PAIRS(CNList,pattern)$ Return a dictionary of CN-Stitch pairs given a list of CNs |
1: CNStitchPairs = {} 2: for (CNi,CNj) in CNList do 3: n = CNj - 1 ▹ Determine n coordinate of the corresponding stitch in the pattern matrix 4: if CNi % 2 == 0 then ▹ Determine m coordinate of the corresponding stitch in the pattern matrix 5: m = CNi / 2 6: else 7: m = (CNi - 1) / 2 8: correspondingStitch = pattern[m][n] ▹ Access corresponding stitch at (m,n) in pattern matrix 9: CNStitchPairs[(CNi,CNj)] = correspondingStitch ▹ Assign CN-stitch pair for the current CN return CNStitchPairs |
Algorithm 4$YARN\_ORDER\_RECURSIVE(sortedCNStitchPairs,pattern,orderedCNs)$ Recursive function used to define the order of CNs at location $(i,j)$ |
1: if len(sortedCNStitchPairs) != 0 then ▹ Process until no CNs are left 2: currentRow = {} ▹ Stores the CN-Stitch pairs for the current row 3: smallestJ = sortedCNStitchPairs[0].CNj ▹ Row being processed 4: rule = DETERMINE_RULE(smallestJ) ▹ Precedence rule for the row being processed 5: for CN(i,j),stitch in sortedCNStitchPairs do 6: if j == smallestJ then ▹ CN defined in the row being processed 7: currentRow[CN(i,j)] = stitch 8: else 9: break 10: for CN(i,j) in currentRow.keys() do ▹ Delete CN-Stitch pairs about to be processed 11: delete sortedCNStitchPairs[CN(i,j)] 12: if rule[-1] == BT then ▹ Row contains a BT 13: orderedCNs = ORDER_ROW_CNS(currentRow, rule) + orderedCNs 14: else ▹ Row does not contain a BT 15: orderedCNs = orderedCNs + ORDER_ROW_CNS (currentRow, rule) 16: return YARN_ORDER_RECURSIVE(sortedCNStitchPairs,pattern, orderedCNs) ▹ Process the CNs in next row 17: return orderedCNs |
Algorithm 5$ORDER\_ROW\_CNS(currentRow,rule)$ Return ordered CNs in currentRow given a precedence rule |
1: stitchIndexCNPairs = [] 2: orderedCNs = [] 3: for CN(i,j),stitch in currentRow.items() do ▹ Create pairs of stitch index and CNs for current row 4: stitchIndexCNPairs.append((rule.index(stitch),CN(i,j))) 5: sortedStitchIndexCNPairs = sorted(stitchIndexCNPairs)] ▹ Order by the index of stitches in the precedence rule 6: for index, CN(i,j) in sortedStitchIndexCNPairs do ▹ Extract ordered CNs 7: orderedCNs.append(CN(i,j)) 8: return orderedCNs |
6. Yarn Order Visualization
Zoom-in Visualizations
Algorithm 6$YARN\_ORDER\_ZOOM\_IN(i,j,pattern,DS)$ Generate a zoom-in topology graph showing the order of loops at location $(i,j)$. |
1: yarnColors = [red, green, blue] ▹ Front-to-back yarn colors 2: orderedCNs = YARN_ORDER(i, j, pattern, DS) 3: if len(orderedCNs) == 0 then return 4: colorOrderedCNs = [] 5: for index, CN in enumerate(orderedCNs) do ▹ Assign a color to each CN depending on its order 6: colorOrderedCNs.append([CN, yarnColors[index]]) 7: colorOrderedCNs.reverse() ▹ Reverse to draw loops from back to front 8: yarnPathList = FOLLOW_THE_YARN(DS) 9: loops, edgeLoopPair, indexLoopPair = DEFINE_OPEN_LOOPS(yarnPathList) 10: while There are CNs in colorOrderedCNs to process do 11: (CNi, CNj), currentColor = colorOrderedCNs.pop(0) ▹ CN being processed 12: currIndex = DS[CNi][CNj].YPI[0] ▹ CN’s index in the yarn path when visited as a head CN 13: if currIndex == “null” then ▹ CN is not visited on the yarn path 14: headEdge = FIND_HEAD_EDGE(i,j,DS) ▹ Get edge that goes through this location 15: colorOrderedCNs.insert(0, [headEdge[0], currentColor]) ▹ Add edge’s first head CN 16: else ▹ CN is visited as head 17: I, J = yarnPathList[currIndex].FL 18: prevIndex = currIndex - 1 ▹ Yarn path index for previous CN 19: nextIndex = currIndex + 1 ▹ Yarn path index for next CN 20: prevI, prevJ = yarnPathList[prevIndex].FL ▹ Final location for previous CN 21: nextI, nextJ = yarnPathList[nextIndex].FL ▹ Final location for next CN 22: CNiOddity = CNi % 2 != 0 23: currentStitchRow = yarnPathList[currIndex].CR 24: rowOddity = currentStitchRow % 2 != 0 25: if CNiOddity != rowOddity then ▹ Previous CN is the first head of the loop 26: headCNs = [[yarnPathList[prevIndex].CNL[0], yarnPathList[prevIndex].FL],[(CNi,CNj), (I,J)]] 27: ▹ List of the two head CNs, initial location and final location for each head 28: loopIndex = edgeLoopPair[((I,J),(nextI,nextJ))] ▹ Find loop index using leg edge 29: else ▹ Next CN is the second head of the loop 30: headCNs = [[(CNi,CNj), (I,J),[yarnPathList[nextIndex].CNL[0], yarnPathList[nextIndex].FL] 31: ▹ List of the two head CNs, initial location and final location for each head 32: loopIndex = edgeLoopPair[((prevI,prevJ),(I,J))] ▹ Find loop index using leg edge 33: loop = indexLoopPair[loopIndex[0]] ▹ Get list of CNs and loop locations given loop index 34: for index, (CNi, CNj), (CNi_FL,CNj_FL) in enumerate(loop) do ▹ Draw each loop edge/connection 35: if index < len(loop) - 1 then 36: DRAW_CONN(CNi_FL,CNj_FL,loop[index+1][0],loop[index+1][1],currentColor) 37: stitchType = DS[CNi][CNj][0] ▹ Get stitch type for CN from data structure 38: if stitchType == "K" then ▹ Knit stitch 39: CNColor = gray 40: else ▹ Purl stitch 41: CNColor = green 42: DRAW_CN(CNi_FL,CNj_FL,CNColor) 43: sortedHeadCNs = sorted(headCNs) ▹ Order head CNs by their i coordinate 44: head1I, head2I = sortedHeadCNs[0][0][0], sortedHeadCNs[1][0][0] ▹ Get heads i coordinates 45: for btwI in range(head1I+1, head2I) do ▹ Draw UACNs on the head edge/connection 46: if DS[btwI][head1J].AV == "UACN" then 47: DRAW_SQUARE_STROKE(btwI, head1J, gray) |
7. Testing and Results
8. Conclusions
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Data Availability Statement
Conflicts of Interest
References
- Kapllani, L.; Amanatides, C.; Dion, G.; Shapiro, V.; Breen, D.E. TopoKnit: A Process-Oriented Representation for Modeling the Topology of Yarns in Weft-Knitted Textiles. Graph. Model. 2021, 118, 101114. [Google Scholar] [CrossRef]
- Kapllani, L.; Amanatides, C.; Dion, G.; Shapiro, V.; Breen, D.E. Topological, Manufacturability and Stability Analysis of Weft-Knitted Textiles. Comput. Aided Des. 2022. under review. Available online: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3976858 (accessed on 15 May 2022). [CrossRef]
- Vallett, R.; Knittel, C.; Christe, D.; Castaneda, N.; Kara, C.; Mazur, K.; Liu, D.; Kontsos, A.; Kim, Y.; Dion, G. Digital fabrication of textiles: An analysis of electrical networks in 3D knitted functional fabrics. In Proceedings of the Micro-and Nanotechnology Sensors, Systems, and Applications IX, Anaheim, CA, USA, 18 May 2017; Volume 10194, p. 1019406. [Google Scholar]
- Hong, C.J.; Kim, B.J. Model-Based Simulation Analysis of Wicking Behavior in Hygroscopic Cotton Fabric. J. Fash. Bus. 2016, 20, No. 6, 66–78. [CrossRef] [Green Version]
- Zheng, Z.; Zhang, N.; Zhao, X. Simulation of heat transfer through woven fabrics based on the fabric geometry model. Therm. Sci. 2018, 22, No. 6B, 2815–2825. [CrossRef]
- Shen, H.; Xie, K.; Shi, H.; Yan, X.; Tu, L.; Xu, Y.; Wang, J. Analysis of heat transfer characteristics in textiles and factors affecting thermal properties by modeling. Text. Res. J. 2019, 89, No. 20–21, 4681–4690. [CrossRef]
- Meissner, M.; Eberhardt, B. The Art of Knitted Fabrics, Realistic & Physically Based Modeling Of Knitted Fabrics. Comput. Graph. Forum. 1998, 17, No. 3, 355–362.
- Eberhardt, B.; Meissner, M.; Strasser, W. Knit Fabrics. In Cloth Modeling and Animation; House, D., Breen, D., Eds.; AK Peters/CRC Press: New York, NY, USA, 2000; Chapter 5, pp. 123–144. [Google Scholar]
- Counts, J. Knitting with Directed Graphs. Master’s Thesis, Massachusetts Institute of Technology, Cambridge, MA, USA, 2018. [Google Scholar]
- Kyosev, Y.; Angelova, Y.; Kovar, R. 3D Modeling of Plain Weft Knitted Structures of Compressible Yarn. Res. J. Text. Appar. 2005, 9, No. 1, 88–97. [CrossRef]
- Sherburn, M. Geometric and Mechanical Modelling of Textiles. Ph.D. Thesis, University of Nottingham, Nottingham, UK, 2007. [Google Scholar]
- Lin, H.; Zeng, X.; Sherburn, M.; Long, A.C.; Clifford, M.J. Automated geometric modelling of textile structures. Text. Res. J. 2012, 82, No. 16, 1689–1702. [CrossRef]
- Wadekar, P.; Perumal, V.; Dion, G.; Kontsos, A.; Breen, D. An optimized yarn-level geometric model for Finite Element Analysis of weft-knitted fabrics. Comput. Aided Geom. Des. 2020, 80, 101883. [Google Scholar] [CrossRef]
- Knittel, C.E.; Tanis, M.; Stoltzfus, A.L.; Castle, T.; Kamien, R.D.; Dion, G. Modelling textile structures using bicontinuous surfaces. J. Math. Arts. 2020, 14, No. 4, 331–344. [CrossRef]
- Wadekar, P.; Goel, P.; Amanatides, C.; Dion, G.; Kamien, R.D.; Breen, D.E. Geometric modeling of knitted fabrics using helicoid scaffolds. J. Eng. Fibers Fabr. 2020, 15, 1558925020913871. [Google Scholar] [CrossRef]
- Wadekar, P.; Amanatides, C.; Kapllani, L.; Dion, G.; Kamien, R.; Breen, D.E. Geometric modeling of complex knitting stitches using a bicontinuous surface and its offsets. Comput. Aided Geom. Des. 2021, 89, 102024. [Google Scholar] [CrossRef]
- Kaldor, J.M.; James, D.L.; Marschner, S. Simulating Knitted Cloth at the Yarn Level. In Proceedings of the ACM SIGGRAPH Conference, Los Angeles, CA, USA, 11–15 August 2008. Article No. 65, pp. 1–9. [Google Scholar]
- Kaldor, J.M.; James, D.L.; Marschner, S. Efficient Yarn-based Cloth with Adaptive Contact Linearization. ACM Trans. Graph. 2010, 29, No. 4, Article No. 105, 1–10. [CrossRef]
- Yuksel, C.; Kaldor, J.M.; James, D.L.; Marschner, S. Stitch Meshes for Modeling Knitted Clothing with Yarn-level Detail. ACM Trans. Graph. 2012, 31, No. 4, Article No. 37, 1–12. [CrossRef]
- Wu, K.; Gao, X.; Ferguson, Z.; Panozzo, D.; Yuksel, C. Stitch Meshing. ACM Trans. Graph. 2018, 37, No. 4, Article No. 130, 1–14. [CrossRef]
- Leaf, J.; Wu, R.; Schweickart, E.; James, D.L.; Marschner, S. Interactive Design of Periodic Yarn-level Cloth Patterns. ACM Trans. Graph. 2018, 37, No. 6, Article No. 202, 1–15. [CrossRef]
- Cirio, G.; Lopez-Moreno, J.; Otaduy, M.A. Yarn-level Cloth Simulation with Sliding Persistent Contacts. IEEE Trans. Vis. Comput. Graph. 2017, 23, No. 2, 1152–1162. [CrossRef] [PubMed]
- Casafranca, J.; Cirio, G.; Rodríguez, A.; Miguel, E.; Otaduy, M.A. Mixing Yarns and Triangles in Cloth Simulation. Comput. Graph. Forum. 2020, 39, No. 2, 101–110. [CrossRef]
- McCann, J.; Albaugh, L.; Narayanan, V.; Grow, A.; Matusik, W.; Mankoff, J.; Hodgins, J. A Compiler for 3D Machine Knitting. ACM Trans. Graph. 2016, v, No. 4, Article No. 49, 1–11. [CrossRef]
- Narayanan, V.; Albaugh, L.; Hodgins, J.; Coros, S.; McCann, J. Automatic Machine Knitting of 3D Meshes. ACM Trans. Graph. 2018, 37, No. 3, Article No. 35, 1–15. [CrossRef]
- Narayanan, V.; Wu, K.; Yuksel, C.; McCann, J. Visual Knitting Machine Programming. ACM Trans. Graph. 2019, 38, No. 4, Article No. 63, 1–13. [CrossRef]
- Lin, J.; Narayanan, V.; McCann, J. Efficient Transfer Planning for Flat Knitting. In Proceedings of the 2nd ACM Symposium on Computational Fabrication, Cambridge, MA, USA, 17–19 June 2018. Article No. 1, pp. 1–7. [Google Scholar]
- Popescu, M.; Rippmann, M.; Van Mele, T.; Block, P. Automated generation of knit patterns for non-developable surfaces. In Humanizing Digital Reality; Springer: Singapore, 2017; pp. 271–284. [Google Scholar]
- Kaspar, A.; Makatura, L.; Matusik, W. Knitting Skeletons: A Computer-Aided Design Tool for Shaping and Patterning of Knitted Garments. In Proceedings of the ACM Symposium on User Interface Software and Technology, New Orleans, LA, USA, 20–23 October 2019; pp. 53–65. [Google Scholar]
- Nader, G.; Quek, Y.H.; Chia, P.Z.; Weeger, O.; Yeung, S.K. KnitKit: A flexible system for machine knitting of customizable textiles. ACM Trans. Graph. 2021, 40, No. 4, Article No. 64, 1–16. [CrossRef]
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations. |
© 2022 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Kapllani, L.; Amanatides, C.; Dion, G.; Breen, D.E. Loop Order Analysis of Weft-Knitted Textiles. Textiles 2022, 2, 275-295. https://doi.org/10.3390/textiles2020015
Kapllani L, Amanatides C, Dion G, Breen DE. Loop Order Analysis of Weft-Knitted Textiles. Textiles. 2022; 2(2):275-295. https://doi.org/10.3390/textiles2020015
Chicago/Turabian StyleKapllani, Levi, Chelsea Amanatides, Genevieve Dion, and David E. Breen. 2022. "Loop Order Analysis of Weft-Knitted Textiles" Textiles 2, no. 2: 275-295. https://doi.org/10.3390/textiles2020015