WO2023229433A1 - 클러스터링에 기반한 패턴 네스팅 방법 및 장치 - Google Patents

클러스터링에 기반한 패턴 네스팅 방법 및 장치 Download PDF

Info

Publication number
WO2023229433A1
WO2023229433A1 PCT/KR2023/007302 KR2023007302W WO2023229433A1 WO 2023229433 A1 WO2023229433 A1 WO 2023229433A1 KR 2023007302 W KR2023007302 W KR 2023007302W WO 2023229433 A1 WO2023229433 A1 WO 2023229433A1
Authority
WO
WIPO (PCT)
Prior art keywords
pattern
patterns
nesting
processor
fabric
Prior art date
Application number
PCT/KR2023/007302
Other languages
English (en)
French (fr)
Inventor
김재호
김기섭
Original Assignee
(주)클로버추얼패션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)클로버추얼패션 filed Critical (주)클로버추얼패션
Priority claimed from KR1020230068353A external-priority patent/KR20230165727A/ko
Publication of WO2023229433A1 publication Critical patent/WO2023229433A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/12Geometric CAD characterised by design entry means specially adapted for CAD, e.g. graphical user interfaces [GUI] specially adapted for CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/04Constraint-based CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/06Multi-objective optimisation, e.g. Pareto optimisation using simulated annealing [SA], ant colony algorithms or genetic algorithms [GA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2113/00Details relating to the application field
    • G06F2113/12Cloth
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/22Yield analysis or yield optimisation

Definitions

  • the embodiments below relate to pattern nesting methods and devices.
  • Pattern nesting is related to the method of arranging multiple patterns on the fabric on which the pattern will be placed.
  • the goal of pattern nesting may be to maximize fabric use. This is because depending on how multiple patterns are placed on the fabric, the size of the wasted fabric area can vary. Since this is a problem directly related to the amount of fabric required to produce one garment, pattern nesting can be an important technology for cost reduction.
  • the pattern nesting method using clustering creates a pattern pair in which the positional relationship between at least two patterns is determined so that the relative positions of at least two patterns among a plurality of patterns meet a predetermined condition. generating step; Clustering a plurality of patterns based on size information of each of the plurality of patterns; And it may include nesting at least one pattern included in each of the plurality of clusters generated based on the clustering result on the fabric based on a pattern pair and a genetic algorithm.
  • the predetermined condition may include the condition that at least two patterns do not overlap each other and can all be included in the fabric.
  • generating a pattern pair includes generating candidate positions of a second pattern based on a first pattern included in the pattern pair; calculating distances between the first pattern and the second pattern based on the position of the first pattern and the candidate positions of the second pattern; determining the candidate position of the second pattern having the minimum value among the calculated distances as a relative position based on the first pattern; And it may include generating a pattern pair based on the relative position of the determined second pattern.
  • the size information may include at least one of the height and width of the bounding box plus the bounding box area of each of the patterns.
  • the clustering step includes aligning a plurality of patterns based on size information; And it may include clustering the patterns with the largest size among the aligned patterns, starting with the patterns with the largest size according to the size information.
  • the clustering step includes arranging at least one pattern whose position on the fabric is fixed on the fabric; And it may include clustering a plurality of patterns, excluding at least one pattern whose position on the fabric is fixed among the plurality of patterns.
  • the step of nesting on a fabric includes arranging clusters among a plurality of clusters in order of size of patterns included in the clusters; and performing nesting in cluster units based on the alignment result, and may include nesting at least one pattern included in the cluster in a region corresponding to the cluster.
  • the genetic algorithm may include an algorithm for determining an order of arranging at least one pattern included in a cluster in a region corresponding to each of a plurality of clusters.
  • the pattern nesting method may further include a preprocessing step of reducing the mesh complexity of each of the plurality of patterns.
  • the preprocessing step of reducing mesh complexity includes deforming the outline corresponding to each of the patterns; And it may include the step of triangulating polygons included in the pattern whose outline has been modified.
  • the step of deforming the outline may include deforming the outline based on whether the amount of change in the pattern exceeds a threshold when the pattern becomes smaller due to deformation of the outline.
  • the step of transforming the outline includes determining the line as an outline based on whether the amount of change in pattern width exceeds a threshold when integrating a plurality of consecutive outlines into one line. can do.
  • the step of nesting on a fabric includes generating candidate positions of a pattern to be placed based on a plurality of candidate pattern arrangement orders generated by a genetic algorithm; Arranging a pattern to be placed based on whether or not there is overlap between patterns among candidate positions and positioning criteria; and calculating an evaluation score for each of the plurality of candidate pattern arrangement orders based on the arrangement result.
  • whether there is overlap between patterns is determined by whether there is overlap between preprocessed patterns determined by a processor - the preprocessed pattern includes a triangulated pattern - and overlap determined on a pixel basis by using an auxiliary processor. It may include at least one of:
  • the evaluation score may be determined in inverse proportion to the length of one side of the bounding box containing patterns arranged on the fabric.
  • the step of nesting on a fabric includes changing the nesting angle of at least one pattern and placing it on the fabric, and then creating candidate pattern arrangements by placing the patterns on the fabric; And it may include nesting on the fabric based on the evaluation score corresponding to each of the candidate pattern arrangements.
  • the step of changing the folding angle of at least one pattern may include rotating the folding angle of the at least one pattern by 180 degrees and arranging it.
  • a simulation device that performs pattern nesting includes a user interface; Memory; and a processor, wherein the processor generates a pattern pair in which the positional relationship between at least two patterns is determined such that the relative positions of at least two patterns among the plurality of patterns meet predetermined conditions, and the size of each of the plurality of patterns is determined.
  • a plurality of patterns may be clustered based on the information, and at least one pattern included in each of the plurality of clusters generated based on the clustering result may be nested on the fabric based on a pattern pair and a genetic algorithm.
  • the pattern nesting time can be shortened, thereby removing the limit on the number of patterns subject to pattern nesting.
  • the pattern nesting method of the present disclosure can improve the accuracy of pattern nesting by setting the size of the pattern to be the same as the size of the original.
  • FIG. 1 is a flowchart for explaining a pattern nesting method according to an embodiment.
  • Figure 2 is a diagram for explaining a method of determining whether the outline of a pattern is deformed based on the amount of change in the pattern, according to one embodiment.
  • Figure 3 is a diagram for explaining a method of modifying the outline of a pattern according to an embodiment.
  • Figure 4 is a diagram for explaining a method of generating a pattern pair according to an embodiment.
  • Figure 5 is a diagram for explaining a pattern nesting method using a genetic algorithm according to an embodiment.
  • Figure 6 is a diagram for explaining a pattern arrangement method according to one embodiment.
  • FIGS. 7A to 7B are diagrams for explaining a user interface screen for pattern nesting according to an embodiment.
  • Figure 8 is a diagram for explaining pattern nesting results according to a change in the nesting angle of a pattern according to an embodiment.
  • Figure 9 is a block diagram for explaining a simulation device according to various embodiments.
  • first or second may be used to describe various components, but these terms should be understood only for the purpose of distinguishing one component from another component.
  • a first component may be named a second component, and similarly, the second component may also be named a first component.
  • FIG. 1 is a flowchart for explaining a pattern nesting method according to an embodiment.
  • pattern nesting There may be multiple patterns that are the subject of pattern nesting. For example, there may be more than 700 patterns subject to pattern nesting. The more patterns that are the target of pattern nesting, the greater the amount of computation can be. Therefore, in order to perform pattern nesting for many patterns, a method may be needed to reduce the complexity of the mesh included in the pattern and nest the patterns efficiently.
  • the processor 930 may generate (110) a pattern pair in which the positional relationship of at least two patterns among a plurality of patterns is determined.
  • the processor 930 may generate a pattern pair in which the positional relationship between at least two patterns among the plurality of patterns is determined so that the relative positions of at least two patterns satisfy predetermined conditions. .
  • the processor 930 may determine in advance the positional relationship between at least two patterns. For example, the position of pattern B relative to pattern A may be to the right of pattern A.
  • the processor 930 may determine the position of pattern B based on pattern A. In this case, there may be a plurality of candidate locations based on pattern A, and the processor 930 may need to determine whether each candidate location satisfies a predetermined condition. However, if the pattern pair of pattern A and pattern B is predetermined, the processor 930 places pattern A at the predetermined position without the need to repeatedly calculate and determine the positional relationship between pattern A and pattern B each time a nesting simulation is performed. Since pattern B can be placed as a reference, the computational amount of the processor 930 can be greatly reduced.
  • the predetermined condition may include the condition that patterns do not overlap each other within the fabric.
  • the predetermined condition may include conditions that at least two patterns do not overlap each other and that both at least two patterns are included in the fabric.
  • the processor 930 may generate a pattern pair through the following operations.
  • the processor 930 may generate candidate positions for the second pattern based on the first pattern included in the pattern pair. For example, if described with reference to FIG. 4, the positional relationship 1 400, where the second pattern 420 is located at the bottom right with respect to the first pattern 410, is shown, based on the first pattern 410. Positional relationship 2 (401) showing the second pattern 420 located on the right, or positional relationship 3 (402) showing the second pattern 420 located at the upper right with respect to the first pattern 410. This can exist. In FIG. 4, only some candidate positions of the second pattern are shown, and other candidate positions may exist.
  • the processor 930 can arrange the second pattern at a candidate location where the amount of fabric used is minimal by arranging the second pattern based on the first pattern.
  • the processor 930 may calculate distances between the first pattern and the second pattern based on the position of the first pattern and the candidate positions of the second pattern. For example, the processor 930 determines the distance between the first pattern 410 and the second pattern 420 in positional relationship 1 400, and the distance between the first pattern 410 and the second pattern 420 in positional relationship 2 401. The distance between the patterns 420 or the distance between the first pattern 410 and the second pattern 420 in positional relationship 3 402 can be calculated.
  • the processor 930 may determine the candidate position of the second pattern having the minimum value among the calculated distances as a relative position based on the first pattern.
  • the distance between the first pattern and the second pattern may be defined in various ways.
  • the distance may be the x-axis coordinate difference between the first pattern and the second pattern, the y-axis coordinate difference between the first pattern and the second pattern, or the Euclidean distance between the first pattern and the second pattern.
  • the reference point of the pattern may be a point inside the pattern or a point on the outline of the pattern.
  • the processor 930 may generate a pattern pair based on the determined relative position of the second pattern 420. This is because when the relative position of the second pattern 420 is determined based on the first pattern 410, the positional relationship between the first pattern 410 and the second pattern 420 can be determined.
  • the processor 930 may cluster 120 a plurality of patterns based on size information of each of the plurality of patterns.
  • Size information may include information related to the size of the pattern.
  • the size information may include at least one of the bounding box area of each of the patterns, the height of the bounding box, the width of the bounding box, and the sum of the height and width of the bounding box.
  • the processor 930 can sort the plurality of patterns in order of size using size information. When aligning patterns, the processor 930 may use one of the following values: the width of the bounding box, the height of the bounding box, the width of the bounding box, or the sum of the height and width of the bounding box.
  • the processor 930 may align a plurality of patterns based on size information.
  • the processor 930 may cluster the patterns with the largest size among the aligned patterns, starting with the patterns with the largest size according to the size information. For example, if the processor 930 sorts the patterns in order of size based on the height and width of the bounding box, they will be sorted in the order of pattern A, pattern B, pattern C, pattern D, pattern E, and pattern F. You can.
  • the processor 930 may generate cluster 1 including pattern A, pattern B, and pattern C, and then generate cluster 2 including pattern D, pattern E, and pattern F.
  • the sum of the height and width of the bounding boxes of all patterns included in Cluster 1 may be greater than the sum of the height and width of the bounding boxes of each of the patterns included in Cluster 2.
  • the processor 930 may perform pattern nesting on a plurality of patterns in a pattern arrangement order determined using a genetic algorithm.
  • pattern nesting using a genetic algorithm may result in the patterns being distributed at a large distance from each other within the fabric. Therefore, if pattern nesting is performed on a cluster (or group) basis by clustering (or grouping) the patterns that are subject to pattern nesting in order of size, the possibility of the patterns being dispersed over a large distance within the fabric can be reduced. Through this, the area of fabric wasted through pattern nesting can be reduced.
  • the processor 930 may nest at least one pattern included in each of a plurality of clusters generated based on the clustering result on the fabric based on a pattern pair and a genetic algorithm.
  • the processor 930 may determine the arrangement order of the patterns using a genetic algorithm on a cluster basis. If a pattern pair exists among the patterns included in the cluster, the processor 930 may omit the placement position calculation for the patterns corresponding to the pattern pair. However, the processor 930 can calculate the optimal position to place the pattern to be placed according to the arrangement order of the pattern based on the previously placed pattern.
  • the processor 930 may determine a pattern whose position is fixed on the fabric based on a user selection input.
  • the processor 930 may nest at least one pattern whose position on the fabric is fixed among the patterns included in one cluster among the plurality of clusters on the fabric. For example, when described with reference to FIG. 8, the position of the pattern 810 may be fixed.
  • the processor 930 may nest the remaining patterns on the fabric, excluding at least one pattern whose position is fixed in the cluster.
  • the processor 930 may exclude the pattern 810 and arrange the remaining patterns 820, 830, and 840 according to the pattern arrangement order. Since the size of the pattern 820 is larger than the sizes of the other patterns 830 and 840, the processor 930 can place the pattern 820 first.
  • the processor 930 may sort clusters among a plurality of clusters in order of size of patterns included in the clusters.
  • the sizes of the patterns may be determined based on size information of the patterns. Since the cluster was created by clustering the patterns in order of size based on the size information of the patterns, the clusters can be sorted in order of the size of the patterns included in the cluster. Accordingly, the processor 930 can determine the arrangement order of the patterns using a genetic algorithm, starting from clusters containing large-sized patterns, and determine the arrangement positions of the patterns according to the arrangement order. Then, for the patterns included in the next largest cluster, the arrangement order of the patterns can be determined using a genetic algorithm, and the arrangement position of the patterns can be determined according to the arrangement order. Alternatively, the processor 930 according to one embodiment may determine the arrangement position of the pattern after determining the pattern arrangement order of each cluster.
  • the processor 930 performs nesting in cluster units based on the alignment result, and may nest at least one pattern included in the cluster in an area corresponding to the cluster. At the far end, there may be an allocated area for each cluster. And the processor 930 can nest patterns in areas corresponding to each cluster. Since the pattern cannot be placed beyond the area corresponding to the cluster, the processor 930 can find an optimal solution for arranging the pattern within the area corresponding to the cluster.
  • the genetic algorithm may include an algorithm for determining the order of arranging at least one pattern included in a cluster in a region corresponding to each of the plurality of clusters.
  • a method of determining the arrangement order of patterns using a genetic algorithm is explained in detail with reference to FIG. 5.
  • the processor 930 may initialize population (510).
  • the processor 930 may obtain an arbitrary pattern arrangement order through initialize population 510.
  • the processor 930 may generate a plurality of candidate pattern arrangement orders through initialize population 510.
  • the processor 930 may place the pattern on the fabric based on the obtained pattern arrangement order (or candidate pattern arrangement order).
  • the processor 930 may obtain a plurality of candidate pattern sequences using a genetic algorithm for a specific cluster. Additionally, the processor 930 may place at least one pattern included in the cluster in an area corresponding to the cluster according to each of the candidate pattern arrangement orders.
  • the processor 930 may generate candidate positions of a pattern to be placed based on a plurality of candidate pattern arrangement orders generated by a genetic algorithm.
  • the processor 930 may arrange the pattern to be placed based on the position determination criteria and whether or not there is overlap between patterns among candidate positions.
  • the processor 930 can place the patterns according to the pattern arrangement order while checking whether the patterns overlap.
  • the processor 930 may check whether patterns overlap using the Nofit Polygon (NFP) algorithm.
  • the positioning standard may be a standard that minimizes wasted fabric by placing the placement target pattern at a specific candidate location. Accordingly, the processor 930 can place the placement target pattern at a candidate location where wasted fabric is minimized. For example, after placing one pattern, the processor 930 calculates a plurality of candidate positions where the next pattern arranged according to the pattern arrangement order can be located, and then selects the optimal position among the candidate positions as the position position. can be decided.
  • the processor 930 may determine whether there is overlap between preprocessed patterns.
  • the preprocessed pattern may be a pattern with simplified mesh complexity in order to quickly determine whether the patterns overlap. As mesh complexity decreases, the amount of computation required to determine whether patterns overlap can decrease.
  • the processor 930 may modify the outline of the pattern to generate a preprocessed pattern.
  • a method of modifying the outline of a pattern will be described in detail later with reference to FIGS. 2 and 3.
  • the processor 930 may triangulate the polygons included in the pattern whose outline has been modified.
  • the preprocessed pattern may be a triangulated pattern. Accordingly, the processor 930 can determine whether patterns overlap using the Triangle-Triangle intersection algorithm. Since the triangulated pattern includes triangles within the pattern, the processor 930 can determine whether the patterns overlap by determining whether the patterns overlap using the triangles included in the pattern.
  • the auxiliary processor 930 is a device that receives tasks from the processor 930 and performs calculations, and may be a GPU as an example rather than a limitation.
  • the auxiliary processor 930 may determine whether patterns overlap on a pixel basis.
  • the auxiliary processor 930 may obtain a bitmap using off-screen rendering to determine whether patterns overlap on a pixel basis.
  • the co-processor 930 (or processor 930) can use a stencil buffer to limit the memory area used for rendering. The user can determine whether a virtual object is visible in the viewer or is obscured by another object through an occlusion query. You can check whether the object is not visible in the viewer.
  • the processor 930 may arrange the pattern to be placed so as to use less area of the fabric among candidate positions. For example, when placing a pattern to be placed, the processor 930 may determine a candidate position where the 'length' of the fabric used is minimum as the final position. For another example, when a pattern to be placed is placed, the processor 930 may determine a candidate position where the 'width' of the fabric used is minimal as the final position.
  • an evaluation score corresponding to the candidate pattern arrangement order may be calculated (520).
  • the evaluation score may refer to a score for determining whether wasted fabric is minimized due to patterns placed on the fabric according to the candidate pattern arrangement order.
  • the evaluation score may be inversely proportional to the length of one side of the bounding box containing patterns arranged on the fabric based on the candidate pattern arrangement order. For example, the processor 930 may calculate a higher evaluation score as the 'length (height)' of the bounding box is shorter. For another example, the processor 930 may calculate a higher evaluation score as the 'width' of the bounding box is shorter.
  • the processor 930 may determine whether to terminate the genetic algorithm (530) based on the evaluation score. If the evaluation score is above a certain standard, if the predetermined number of genetic algorithm iterations is exceeded, or if the evaluation score is the highest evaluation score, the processor 930 terminates the genetic algorithm and places the pattern on the fabric according to the candidate pattern placement order. The result (570) can be returned. When the evaluation score is below a certain standard, below the predetermined number of genetic algorithm iterations, or when the evaluation score is below the highest evaluation score, the processor 930 may continue to perform the genetic algorithm. The processor 930 may perform selection 540. Selection 540 may refer to the process of selecting parents who mate and recombine to create offspring (off-springs) for the next generation.
  • Selection 540 may include at least one of Roulette Wheel Selection, Stochastic Universal Sampling (SUS), Tournament Selection, and Rank Selection.
  • the processor 930 can perform crossover 550.
  • Crossover (550) may refer to a method of crossing selected chromosomes.
  • the crossover 550 may include at least one of one point crossover, multi point crossover, uniform crossover, cycle crossover, partially matched crossover, and cycle single point crossover.
  • the processor 930 may perform mutation 560.
  • Mutation (560) can refer to a method of changing the value of a gene contained in a chromosome.
  • the processor 930 according to one embodiment may perform steps 510 to 530 again based on genes for which crossover 550 and mutation 560 have been completed.
  • Figure 2 is a diagram for explaining a method of determining whether the outline of a pattern is deformed based on the amount of change in the pattern, according to one embodiment.
  • the processor 930 may perform preprocessing to reduce the mesh complexity of each of the plurality of patterns.
  • the processor 930 may check whether patterns overlap during the process of placing the patterns on the fabric according to the pattern arrangement order. When determining whether there is overlap between patterns, as the mesh complexity of the pattern increases (for example, as the number of polygons included in the pattern increases), the amount of calculation required to determine whether there is overlap may increase. Accordingly, the processor 930 may need to simplify the pattern (e.g., reduce the number of vertices or edges included in the polygon) to determine whether the patterns overlap.
  • the processor 930 may modify the outline of the pattern to reduce mesh complexity.
  • the processor 930 may integrate a plurality of consecutive outlines into one line.
  • the processor 930 may integrate the plurality of outlines 211, 221, and 231 into a new outline 241.
  • the processor 930 may reduce mesh complexity by simplifying the pattern outline.
  • the processor 930 may determine a straight line connecting the points 250 and 280 in the polygon 200 as a new outline. In this case, the lines 210, 220, 230 and the points 260, 270 of the polygon whose outline has been modified may be deleted.
  • the processor 930 may determine whether to transform the outline of the pattern based on whether the amount of change in the pattern exceeds a threshold. For example, if the amount of change in the pattern (e.g., the distance between the new outline and one vertex of the polygon, or the amount of change in the area of the pattern) does not exceed the threshold, the processor 930 selects the point 250 and the vertex 280. The connecting straight line can be determined as the new outline. However, if the amount of change in the pattern exceeds the threshold, the processor 930 may not determine the new outline as the outline of the polygon.
  • the processor 930 may determine a line connecting the points 251 and 281 as a new outline.
  • the pattern eg, polygon 201
  • the processor 930 may determine the corresponding line as a new outline to simplify the pattern.
  • the polygon 201 can be simplified into a square. In the simplified pattern, the dots 261 and 271 and the lines 211, 221 and 231 may be deleted.
  • Figure 3 is a diagram for explaining a method of modifying the outline of a pattern according to an embodiment.
  • the processor 930 may need to determine whether the amount of change in the pattern exceeds a threshold. This is because the processor 930 needs to simplify the patterns to a level that does not affect the accuracy of determining whether or not the patterns overlap. If the size of the pattern is greatly reduced due to the deformation of the outline, which affects the determination of whether the pattern overlaps, the processor 930 cannot use the simplified corresponding pattern to determine whether the pattern overlaps.
  • the processor 930 may calculate the amount of change in the pattern due to the deformation of the outline.
  • the amount of change in the pattern is the amount of change due to the deformation of the outline of the pattern, and may be, for example, the amount of change in the width of the pattern or the distance between the new outline and one vertex.
  • the distance between a new outline and a vertex can be explained with reference to FIG. 3 .
  • the line connecting the points 350 and 370 in the figure 300 may be a new outline 340.
  • the distance between the corresponding outline 340 and the point 360 may be the amount of change 390 in the pattern.
  • the processor 930 may determine whether the amount of change 390 in the pattern exceeds a threshold.
  • the processor 930 may generate a new outline in which the amount of change in the pattern becomes larger. For example, the processor 930 may generate a line connecting the points 351 and 381 in the shape 301 as a new outline 341. The distance between the corresponding outline 341 and the point 361 may be the amount of change 391 in the pattern. If the change amount 391 of the pattern exceeds the threshold, the processor 930 may determine the previous outline 340 as the new outline of the pattern. However, if the amount of change 391 in the pattern does not exceed the threshold, the processor 930 can generate a new outline, calculate the amount of change in the pattern, and determine whether it exceeds the threshold. The processor 930 can repeat the above process to generate an optimal outline that simplifies the pattern without affecting the determination of whether the pattern overlaps.
  • Figure 4 is a diagram for explaining a method of generating a pattern pair according to an embodiment. Since the method for generating pattern pairs has been specifically described above in FIG. 1, detailed description is omitted in this drawing.
  • Figure 5 is a diagram for explaining a pattern nesting method using a genetic algorithm according to an embodiment. Since the pattern nesting method using a genetic algorithm has been described in detail in FIG. 1, detailed description is omitted in this figure.
  • Figure 6 is a diagram for explaining a pattern arrangement method according to one embodiment.
  • the placement target pattern group 610 may include a plurality of patterns that are the target of pattern nesting.
  • the placement target pattern group 610 may include pattern 1, pattern 3, pattern 4, pattern 5, pattern 0, and pattern 2.
  • the deployment target pattern group may be divided into a plurality of clusters.
  • cluster 1 (621) may include pattern 1, pattern 3, and pattern 4, and cluster 2 (622) may include pattern 5, pattern 0, and pattern 3.
  • the pattern arrangement order of the patterns included in the cluster may be determined based on a genetic algorithm. Accordingly, the processor 930 may arrange the patterns included in cluster 1 621 in the order of pattern 1, pattern 3, and pattern 4 according to the pattern arrangement order.
  • the processor 930 may place pattern 1 (611) at position 630 on the fabric. And the processor 930 can arrange pattern 3 (612) based on pattern 1 (611). The processor 930 may generate a plurality of candidate positions 651, 652, 653, and 654 based on pattern 1 (611). The processor 930 may previously generate a pattern pair including a positional relationship between one pattern and another pattern. Accordingly, when generating candidate positions, the processor 930 may generate selected candidate positions using the positional relationship included in the pre-generated pattern pair.
  • the processor 930 may determine whether patterns overlap and place pattern 3 612 at a location that uses less area of the fabric. When the processor 930 places a pattern at each of the candidate positions, if the pattern deviates from the fabric or overlaps an existing pattern, the processor 930 may not place the pattern at the candidate position. And among the remaining candidate positions, the processor 930 can place the pattern at a position that uses the least area of the fabric.
  • the candidate location 653 may be a location that uses less area of the fabric. In this case, the processor 930 may place pattern 3 (612) at the candidate location (653). After placing pattern 3 (612), pattern 4 (613) of the processor 930 can be placed.
  • the processor 930 may calculate a candidate position by considering the relationship with at least one previously placed pattern. For example, in order to place pattern 4 (613), the processor 930 calculates a candidate position by considering the positional relationship between pattern 4 (613) and the previously placed pattern 1 (611) and pattern 3 (612). You can. The processor 930 may calculate the candidate positions 671, 672, 673, 674, 675, and 676 of pattern 4 (613). Since the candidate positions 671, 672, 673, and 676 are outside the area of the fabric, the processor 930 may not place the pattern at the corresponding candidate positions. Pattern 4 (613) can be placed in the candidate position (674) that uses the least amount of fabric area among the candidate positions (674) and candidate positions (675). When placing a pattern at the candidate position 675, the length of the fabric used is longer than the candidate position 674, so the processor 930 can place pattern 4 (613) at the candidate position 674.
  • the processor 930 can place Pattern 5, Pattern 0, and Pattern 3 included in the next cluster, Cluster 2 (622), on the fabric. Based on the genetic algorithm, the arrangement order of the patterns may be determined as pattern 5, pattern 0, and pattern 3. Accordingly, the processor 930 can determine the position of the newly arranged pattern by determining whether there is overlap between the previously arranged patterns and the newly arranged pattern. For example, the processor 930 determines pattern 5 based on the positional relationship between pattern 1 (611) and pattern 5, the positional relationship between pattern 3 (612) and pattern 5, and the positional relationship between pattern 4 (613) and pattern 5. The placement location can be determined.
  • FIGS. 7A to 7B are diagrams for explaining a user interface screen for pattern nesting according to an embodiment.
  • Figure 7a may be a user interface screen for pattern nesting.
  • the user interface screen may include a pattern nesting result window 710 and a parameter input window related to pattern nesting.
  • the parameter input window related to pattern nesting can include the number of copied patterns (730), color (740), folding angle change pattern (750), space between patterns (760), unit (770), and fabric size (780). there is.
  • the input window is only an example and other parameters may be included or some parameters may be omitted.
  • the number of copied patterns 730 may mean the number of copies of the pattern. For example, if the number of copied patterns is 1, only one pattern may be displayed in the pattern nesting result window 710. If the number of copied patterns is 2, the copied patterns may be displayed one by one in the pattern nesting result window 710. The case where the number of copied patterns is 2 is shown in FIG. 7B. In Figure 7b, the number of copied patterns (791) is set to 2. If the number of copied patterns is 3, two copied patterns may be displayed in the pattern nesting result window 710. Depending on the change in the value of the number of copied patterns 730, the processor 930 can perform optimal pattern nesting on the fabric, including the copied patterns. And the processor 930 can output the pattern nesting result to the pattern nesting result window 710.
  • the color 740 may be an object related to the color of the pattern.
  • the folding angle change pattern 750 may include whether to display a pattern with a changed folding angle.
  • the numbering angle change pattern 750 is 2
  • one pattern and a pattern in which the numbering angle of the corresponding pattern is rotated by 180 degrees may be displayed in the pattern nesting result window 710.
  • FIG. 7B the angle change pattern 750 is indicated as 2.
  • the processor 930 may perform optimal pattern nesting on the fabric based on the pattern with a changed folding angle. And the processor 930 can output the pattern nesting result to the pattern nesting result window 710.
  • the space between patterns 760 may refer to the minimum gap between patterns nested on the fabric.
  • Unit 770 may refer to a unit representing the length of the fabric.
  • Fabric size 780 may represent the horizontal and vertical lengths of the fabric.
  • Figure 8 is a diagram for explaining pattern nesting results according to a change in the nesting angle of a pattern according to an embodiment.
  • the processor 930 may change the angle of at least one pattern and place it on the fabric, and then place another pattern on the fabric, thereby creating candidate pattern arrangements.
  • the processor 930 may rotate the angle of at least one pattern by 180 degrees to arrange it.
  • the processor 930 may rotate the angle of the pattern 820 by 180 degrees.
  • the rotation angle may mean an angle rotated using the vertical direction of the fabric as a baseline. If the pattern 820 is rotated by 180 degrees, it can be placed on the fabric like the pattern 821. Since the position of the pattern 820 has changed, there may be a need to change the positions of other patterns 810, 830, and 840 arranged on the fabric 800. Accordingly, the processor 930 can arrange other patterns according to the pattern 821 like the fabric 801.
  • the processor 930 may generate candidate pattern arrangements for disposing other patterns 810, 830, and 840 on the fabric. And the processor 930 may calculate an evaluation score corresponding to each candidate pattern arrangement. Processor 930 may determine final pattern nesting based on the evaluation scores. For example, the processor 930 may arrange patterns 811, 831, and 841 on the fabric 801 according to the candidate pattern arrangement with the highest evaluation score.
  • a pattern with a predetermined arrangement position may exist.
  • the processor 930 may determine the placement position of a specific pattern on the fabric based on user input. In this case, patterns with fixed placement positions may be excluded from clustering. Below, a method of performing clustering excluding patterns whose placement positions are predetermined will be described.
  • the processor 930 may place at least one pattern whose position on the fabric is fixed on the fabric. For example, the processor 930 may place a pattern 810 with a fixed position on the fabric 800.
  • the processor 930 may perform clustering among a plurality of patterns, excluding at least one pattern whose position on the fabric is fixed. For example, the processor 930 may cluster the patterns 820, 830, and 840 other than the pattern 810 whose placement position is fixed. And according to the clustering result, the processor 930 may perform pattern nesting for each cluster.
  • Figure 9 is a block diagram for explaining a simulation device according to various embodiments.
  • the simulation device 900 may be a server.
  • the simulation device 900 according to another embodiment may be a user terminal (eg, mobile device, desktop, laptop, personal computer, etc.).
  • the simulation device 900 may include a user interface 910, a processor 930, a display 950, and a memory 970.
  • User interface 910, processor 930, display 950, and memory 970 may be connected to each other through a communication bus 905.
  • the user interface 910 may receive user input for each of the pattern nesting-related parameters.
  • the display 950 may display the pattern nesting results generated by the processor 930.
  • the memory 970 may store the generated pattern nesting results. In addition, the memory 970 can store various information generated during the processing of the processor 930 described above. In addition, the memory 970 can store various data and programs. Memory 970 may include volatile memory or non-volatile memory. The memory 970 may be equipped with a high-capacity storage medium such as a hard disk to store various data.
  • the processor 930 may perform at least one method or an algorithm corresponding to at least one method described above with reference to FIGS. 1 to 8 .
  • the processor 930 may be a data processing device implemented in hardware that has a circuit with a physical structure for executing desired operations.
  • the intended operations may include code or instructions included in the program.
  • the processor 930 may be comprised of, for example, a Central Processing Unit (CPU), a Graphics Processing Unit (GPU), or a Neural Network Processing Unit (NPU).
  • CPU Central Processing Unit
  • GPU Graphics Processing Unit
  • NPU Neural Network Processing Unit
  • the simulation device 900 implemented in hardware includes a microprocessor, a central processing unit, a processor core, a multi-core processor, and a multiprocessor ( multiprocessor), ASIC (Application-Specific Integrated Circuit), and FPGA (Field Programmable Gate Array).
  • the processor 930 can execute a program and control the simulation device 900.
  • Program code executed by the processor 930 may be stored in the memory 970.
  • the method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer-readable medium.
  • the computer-readable medium may include program instructions, data files, data structures, etc., singly or in combination.
  • Program instructions recorded on the medium may be specially designed and configured for the embodiment or may be known and available to those skilled in the art of computer software.
  • Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic media such as floptical disks.
  • program instructions include machine language code, such as that produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter, etc.
  • the hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.
  • Software may include a computer program, code, instructions, or a combination of one or more of these, which may configure a processing unit to operate as desired, or may be processed independently or collectively. You can command the device.
  • Software and/or data may be used on any type of machine, component, physical device, virtual equipment, computer storage medium or device to be interpreted by or to provide instructions or data to a processing device. It can be embodied permanently or temporarily.
  • Software may be distributed over networked computer systems and stored or executed in a distributed manner.
  • Software and data may be stored on one or more computer-readable recording media.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Analysis (AREA)
  • Genetics & Genomics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Architecture (AREA)
  • Evolutionary Biology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Image Generation (AREA)

Abstract

일 실시예에 따르면 패턴 네스팅 방법은 복수의 패턴들 중 적어도 2개 패턴의 상대적 위치가 미리 결정된 조건을 충족하도록 상기 적어도 2개 패턴 사이의 위치 관계가 결정된 패턴쌍을 생성하는 단계; 상기 복수의 패턴들 각각의 크기 정보에 기초하여 상기 복수의 패턴들을 클러스터링하는 단계; 및 상기 클러스터링 결과에 기초하여 생성된 복수의 클러스터들 각각에 포함된 적어도 하나의 패턴을 상기 패턴쌍 및 유전 알고리즘에 기초하여 원단에 네스팅하는 단계를 포함할 수 있다.

Description

클러스터링에 기반한 패턴 네스팅 방법 및 장치
아래 실시예들은 패턴 네스팅 방법 및 장치들에 관한 것이다.
패턴 네스팅이랑 패턴이 배치될 원단(fabric) 상에 복수의 패턴들을 배치하는 방법과 관련이 있다. 패턴 네스팅의 목표는 원단 이용의 극대화일 수 있다. 복수의 패턴들을 원단에 어떻게 배치하느냐에 따라서, 낭비되는 원단의 영역 크기가 달라질 수 있기 때문이다. 이는 하나의 의상을 제작하는데 소요되는 원단량과 직결되는 문제이므로, 패턴 네스팅은 원가 절감을 위해 중요한 기술일 수 있다.
컴퓨팅 기술 및 패턴 네스팅 알고리즘의 발달로 인하여, 시뮬레이션 프로그램을 통해 컴퓨팅 장치가 패턴 네스팅을 자동으로 수행하는 연구 및 기술 개발이 활발한 추세이다.
전술한 배경기술은 발명자가 본원의 개시 내용을 도출하는 과정에서 보유하거나 습득한 것으로서, 반드시 본 출원 전에 일반 공중에 공개된 공지기술이라고 할 수는 없다.
일 실시예에 따르면, 클러스터링을 이용한 패턴 네스팅 방법은 복수의 패턴들 중 적어도 2개 패턴의 상대적 위치가 미리 결정된 조건을 충족하도록 적어도 2개 패턴 사이의 위치 관계가 결정된 패턴쌍(pattern pair)을 생성하는 단계; 복수의 패턴들 각각의 크기 정보에 기초하여 복수의 패턴들을 클러스터링(clustering)하는 단계; 및 클러스터링 결과에 기초하여 생성된 복수의 클러스터들 각각에 포함된 적어도 하나의 패턴을 패턴쌍 및 유전 알고리즘에 기초하여 원단에 네스팅(nesting)하는 단계를 포함할 수 있다.
일 실시예에 따르면, 미리 결정된 조건은 적어도 2개의 패턴이 서로 중첩되지 않고, 원단에 모두 포함될 수 있는 조건을 포함할 수 있다.
일 실시예에 따르면, 패턴쌍을 생성하는 단계는 패턴쌍에 포함된 제1 패턴을 기준으로 제2 패턴의 후보 위치들을 생성하는 단계; 제1 패턴의 위치와 제2 패턴의 후보 위치들을 기준으로 제1 패턴과 제2 패턴의 거리들을 산출하는 단계; 산출된 거리들 중 최솟값을 가지는 제2 패턴의 후보 위치를 제1 패턴을 기준으로 하는 상대적 위치로 결정하는 단계; 및 결정된 제2 패턴의 상대적 위치를 기준으로 패턴쌍을 생성하는 단계를 포함할 수 있다.
일 실시예에 따르면, 크기 정보는 바운딩 박스의 높이와 너비를 더한 값 및 패턴들 각각의 바운딩 박스 넓이 중 적어도 하나를 포함할 수 있다.
일 실시예에 따르면, 클러스터링 하는 단계는 크기 정보에 기초하여 복수의 패턴들을 정렬하는 단계; 및 정렬된 패턴들 중에서 크기 정보에 따라 크기가 큰 패턴들부터 클러스터링하는 단계를 포함할 수 있다.
일 실시예에 따르면, 클러스터링하는 단계는 원단에서 위치가 고정된 적어도 하나의 패턴을 원단에 배치시키는 단계; 및 복수의 패턴들 중 원단에서 위치가 고정된 적어도 하나의 패턴을 제외하고 복수의 패턴들을 클러스터링하는 단계를 포함할 수 있다.
일 실시예에 따르면, 원단에 네스팅하는 단계는 복수의 클러스터들 중 클러스터에 포함된 패턴들의 크기 순으로 클러스터들을 정렬하는 단계; 및 정렬 결과에 기초하여 클러스터 단위로 네스팅을 수행하며, 클러스터에 대응하는 영역에서 클러스터에 포함된 적어도 하나의 패턴을 네스팅하는 단계를 포함할 수 있다.
일 실시예에 따르면, 유전 알고리즘은 복수의 클러스터들 각각에 대응하는 영역에 클러스터에 포함된 적어도 하나의 패턴을 배치하는 순서를 결정하기 위한 알고리즘을 포함할 수 있다.
일 실시예에 따르면, 패턴 네스팅 방법은 복수의 패턴들 각각의 메쉬 복잡도를 감소시키는 전처리 단계를 더 포함할 수 있다.
일 실시예에 따르면, 메쉬 복잡도를 감소시키는 전처리 단계는 패턴들 각각에 대응하는 외곽선을 변형시키는 단계; 및 외곽선이 변형된 패턴에 포함된 폴리곤들을 삼각화(triangulation)시키는 단계를 포함할 수 있다.
일 실시예에 따르면, 외곽선을 변형시키는 단계는 외곽선의 변형으로 패턴이 작아지는 경우, 패턴의 변화량이 임계값을 초과하는지 여부에 기초하여 외곽선을 변형시키는 단계를 포함할 수 있다.
일 실시예에 따르면, 외곽선을 변형시키는 단계는 연속된 복수의 외곽선들을 하나의 선으로 통합할 경우, 패턴 넓이의 변화량이 임계값을 초과하는지 여부에 기초하여, 선을 외곽선으로 결정하는 단계를 포함할 수 있다.
일 실시예에 따르면, 원단에 네스팅하는 단계는 유전 알고리즘에 의해 생성된 복수의 후보 패턴 배치 순서들에 기초하여 배치 대상이 된 패턴의 후보 위치들을 생성하는 단계; 후보 위치들 중 패턴 간의 중첩 여부 및 위치 결정 기준에 기초하여 배치 대상이 된 패턴을 배치하는 단계; 및 배치 결과에 기초하여 복수의 후보 패턴 배치 순서들 각각의 평가 점수를 산출하는 단계를 포함할 수 있다.
일 실시예에 따르면, 패턴 간의 중첩 여부는 프로세서를 통해 판단된 전처리된 패턴-상기 전처리된 패턴은 삼각화된 패턴을 포함하는- 간의 중첩 여부 및 보조 프로세서를 이용하여 픽셀 단위를 기준으로 판단된 중첩 여부 중 적어도 하나를 포함할 수 있다.
일 실시예에 따르면, 평가 점수는 원단에 배치된 패턴들을 포함하는 바운딩 박스의 일 측의 길이와 반비례하여 결정될 수 있다.
일 실시예에 따르면, 원단에 네스팅하는 단계는 적어도 하나의 패턴의 식서 각도를 변경하여 원단에 배치한 후, 패턴들을 원단에 배치함으로써 후보 패턴 배치들을 생성하는 단계; 및 후보 패턴 배치들 각각에 대응하는 평가 점수에 기초하여 원단에 네스팅하는 단계를 포함할 수 있다.
일 실시예에 따르면, 적어도 하나의 패턴의 식서 각도를 변경하는 단계는 적어도 하나의 패턴의 식서 각도를 180도 회전하여 배치하는 단계를 포함할 수 있다.
다른 일 실시예에 따르면 패턴 네스팅을 수행하는 시뮬레이션 장치는 사용자 인터페이스; 메모리; 및 프로세서를 포함하고, 프로세서는 복수의 패턴들 중 적어도 2개 패턴의 상대적 위치가 미리 결정된 조건을 충족하도록 적어도 2개 패턴 사이의 위치 관계가 결정된 패턴쌍을 생성하고, 복수의 패턴들 각각의 크기 정보에 기초하여 복수의 패턴들을 클러스터링하고, 그리고 클러스터링 결과에 기초하여 생성된 복수의 클러스터들 각각에 포함된 적어도 하나의 패턴을 패턴쌍 및 유전 알고리즘에 기초하여 원단에 네스팅할 수 있다.
일 측에 따르면, 프로세서인 CPU 뿐만 아니라 보조 프로세서인 GPU를 추가로 사용함으로써, 패턴 네스팅 시간을 단축시키고, 이를 통해 패턴 네스팅의 대상이 되는 패턴의 개수에 제한이 사라질 수 있다.
일 측에 따르면, 본 개시의 패턴 네스팅 방법을 이용하여, 특정 패턴의 위치를 고정시킨 상태에서 다른 패턴들을 네스팅시킬 수 있다.
일 측에 따르면, 본 개시의 패턴 네스팅 방법을 이용하여, 패턴마다 회전 가능한 식서 각도를 조절한 상태에서, 다른 패턴들을 네스팅시킬 수 있다.
일 측에 따르면, 본 개시의 패턴 네스팅 방법은 패턴의 크기를 원본의 크기와 동일하게 설정함으로써, 패턴 네스팅의 정확도를 향상시킬 수 있다.
도 1은 일 실시예에 따른 패턴 네스팅 방법을 설명하기 위한 순서도이다.
도2는 일 실시예에 따른 패턴의 변화량에 기초하여 패턴의 외곽선 변형 여부를 판단하는 방법을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 패턴의 외곽선 변형 방법을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 패턴쌍이 생성되는 방법을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 유전 알고리즘을 이용한 패턴 네스팅 방법을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 패턴 배치 방법을 설명하기 위한 도면이다.
도 7a 내지 도7b는 일 실시예에 따른 패턴 네스팅을 위한 사용자 인터페이스 화면을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 패턴의 식서 각도 변경에 따른 패턴 네스팅 결과를 설명하기 위한 도면이다.
도 9는 다양한 실시예에 따른 시뮬레이션 장치를 설명하기 위한 블록도이다.
본 명세서에서 개시되어 있는 특정한 구조적 또는 기능적 설명들은 단지 기술적 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 실시예들은 다양한 다른 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
제1 또는 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 이해되어야 한다. 예를 들어 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~간에"와 "바로~간에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일 실시예에 따른 패턴 네스팅 방법을 설명하기 위한 순서도이다.
패턴 네스팅의 대상이 되는 패턴들은 복수개 존재할 수 있다. 예를 들어, 패턴 네스팅의 대상이 되는 패턴들은 700개 이상일 수 있다. 패턴 네스팅의 대상이 되는 패턴들이 많을수록 연산량이 많아질 수 있다. 따라서, 많은 패턴들에 대한 패턴 네스팅을 수행하기 위하여, 패턴에 포함된 메쉬 복잡도를 감소시키고, 효율적으로 패턴을 네스팅하는 방법이 필요할 수 있다.
이하에서는 효율적인 패턴 네스팅 방법에 대한 구체적인 설명이 개시된다.
일 실시예에 따른 프로세서(930)는 복수의 패턴들 중 적어도 2개 패턴의 위치 관계가 결정된 패턴쌍을 생성(110)할 수 있다. 일 실시예에 따른 프로세서(930)는 복수의 패턴들 중 적어도 2개 패턴의 상대적 위치가 미리 결정된 조건을 충족하도록 적어도 2개 패턴 사이의 위치 관계가 결정된 패턴쌍(pattern pair)을 생성할 수 있다. 프로세서(930)는 적어도 2개 패턴 사이의 위치 관계를 미리 결정할 수 있다. 예를 들어, 패턴A에 대한 패턴B의 위치는 패턴A를 기준으로 우측일 수 있다. 위치 관계가 미리 결정된 패턴쌍을 사전에 생성함으로써, 패턴 배치 순서에 따라 패턴을 배치할 때, 최적의 패턴 배치 위치를 결정하기 위하여 필요한 연산량이 감소될 수 있다. 예를 들어, 패턴A, 패턴B, 패턴C를 순차적으로 원단에 배치할 때, 패턴A를 배치한 후, 프로세서(930)는 패턴A를 기준으로 패턴B의 위치를 결정할 수 있다. 이 경우, 패턴A를 기준으로 복수의 후보 위치들이 존재할 수 있고, 프로세서(930)는 각각의 후보 위치들이 미리 결정된 조건을 충족하는지 판단해야 할 수 있다. 하지만 패턴A, 패턴B의 패턴쌍이 미리 결정된 경우, 프로세서(930)는 네스팅 시뮬레이션을 할 때마다 패턴A 및 패턴B의 위치 관계를 반복적으로 연산하여 판단할 필요 없이, 미리 결정된 위치에 패턴A를 기준으로 패턴B를 배치하면 되므로, 프로세서(930)의 연산량이 크게 감소할 수 있다. 미리 결정된 조건은 원단 내에서 패턴이 서로 중첩되지 않는 조건을 포함할 수 있다. 미리 결정된 조건은 적어도 2개의 패턴이 서로 중첩되지 않고, 적어도 2개의 패턴이 모두 원단에 포함되는 조건을 포함할 수 있다.
일 실시예에 따른 프로세서(930)는 이하의 동작들을 통해 패턴쌍을 생성할 수 있다. 일 실시예에 따른 프로세서(930)는 패턴쌍에 포함된 제1 패턴을 기준으로 제2 패턴의 후보 위치들을 생성할 수 있다. 예를 들어, 도 4를 참조하여 설명하면, 제1 패턴(410)을 기준으로 우측 하단에 위치하는 제2 패턴(420)이 도시된 위치 관계1(400), 제1 패턴(410)을 기준으로 우측에 위치하는 제2 패턴(420)이 도시된 위치 관계2(401) 또는 제1 패턴(410)을 기준으로 우측 상단에 위치하는 제2 패턴(420)이 도시된 위치 관계3(402)이 존재할 수 있다. 도 4에서는 제2 패턴의 일부 후보 위치만 도시되어 있을 뿐 다른 후보 위치가 더 존재할 수 있다. 일 실시예에 따른 프로세서(930)는 제1 패턴을 기준으로 제2 패턴을 배치함으로써, 사용되는 원단의 양이 최소가 되는 후보 위치에 제2 패턴을 배치하 할 수 있다. 또는, 일 실시예에 따른 프로세서(930)는 제1 패턴의 위치와 제2 패턴의 후보 위치들을 기준으로 제1 패턴과 제2 패턴 사이의 거리들을 산출할 수 있다. 예를 들어, 프로세서(930)는 위치 관계1(400)에서의 제1 패턴(410)과 제2 패턴(420) 사이 거리, 위치 관계2(401)에서의 제1 패턴(410)과 제2 패턴(420) 사이 거리 또는 위치 관계3(402)에서의 제1 패턴(410)과 제2 패턴(420) 사이 거리를 산출할 수 있다. 일 실시예에 따른 프로세서(930)는 산출된 거리들 중 최솟값을 가지는 제2 패턴의 후보 위치를 제1 패턴을 기준으로 하는 상대적 위치로 결정할 수 있다. 본 개시에서 제1 패턴과 제2 패턴 사이 거리는 다양하게 정의될 수 있다. 예를 들어, 거리는 제1 패턴과 제2 패턴의 x축 좌표 차이, 제1 패턴과 제2 패턴의 y축 좌표 차이 또는 제1 패턴과 제2 패턴의 유클리디안 거리일 수 있다. 거리를 산출하기 위하여 패턴의 기준점이 되는 점은 패턴의 내부에 존재하는 점이 될 수도 있고, 패턴의 외곽선 상에 존재하는 점이 될 수도 있다. 일 실시예에 따른 프로세서(930)는 결정된 제2 패턴(420)의 상대적 위치를 기준으로 패턴쌍을 생성할 수 있다. 그 이유는 제1 패턴(410)을 기준으로 제2 패턴(420)의 상대적 위치가 결정되는 경우, 제1 패턴(410)과 제2 패턴(420) 사이의 위치 관계가 결정될 수 있기 때문이다.
일 실시예에 따른 프로세서(930)는 복수의 패턴들 각각의 크기 정보에 기초하여 복수의 패턴들을 클러스터링(120)할 수 있다. 크기 정보는 패턴의 크기와 관련된 정보를 포함할 수 있다. 크기 정보는 패턴들 각각의 바운딩 박스 넓이, 바운딩 박스의 높이, 바운딩 박스의 너비 및 바운딩 박스의 높이와 너비를 더한 값 중 적어도 하나를 포함할 수 있다. 프로세서(930)는 크기 정보를 이용하여 복수의 패턴들을 크기 순으로 정렬할 수 있다. 패턴들을 정렬할 때 프로세서(930)는 바운딩 박스의 넓이, 바운딩 박스의 높이, 바운딩 박스의 너비 또는 바운딩 박스의 높이와 너비를 더한 값 중 하나를 사용할 수 있다. 일 실시예에 따른 프로세서(930)는 크기 정보에 기초하여 복수의 패턴들을 정렬할 수 있다. 프로세서(930)는 정렬된 패턴들 중에서 크기 정보에 따라 크기가 큰 패턴들부터 클러스터링할 수 있다. 예를 들어, 프로세서(930)가 바운딩 박스의 높이와 너비를 더한 값을 기준으로 패턴을 크기순으로 정렬하면, 패턴A, 패턴B, 패턴C, 패턴D, 패턴E, 패턴 F 순으로 정렬될 수 있다. 프로세서(930)는 패턴A, 패턴B, 패턴C를 포함하는 클러스터1을 생성한 후, 패턴D, 패턴E, 패턴 F를 포함하는 클러스터2를 생성할 수 있다. 클러스터1에 포함된 모든 패턴들 각각의 바운딩 박스의 높이와 너비를 더한 값은 클러스터2에 포함된 패턴들 각각의 바운딩 박스의 높이와 너비를 더한 값보다 클 수 있다.
일 실시예에 따른 프로세서(930)는 복수의 패턴들을 대상으로 유전 알고리즘을 사용하여 결정된 패턴 배치 순서로 패턴 네스팅을 수행할 수 있다. 하지만 패턴의 개수가 증가할수록 유전 알고리즘에 의한 패턴 네스팅은 패턴들이 원단 내에서 서로 많은 거리를 두고 떨어진 상태로 분산될 가능성이 존재할 수 있다. 따라서, 패턴 네스팅 대상이 되는 패턴들을 크기 순으로 클러스터링(또는 그룹화)하여 클러스터(또는 그룹) 단위로 패턴 네스팅을 수행하면 패턴들이 원단 내에서 많은 거리를 두고 분산될 가능성이 낮아질 수 있다. 이를 통해, 패턴 네스팅을 통해 낭비되는 원단의 영역이 감소될 수 있다.
일 실시예에 따른 프로세서(930)는 클러스터링 결과에 기초하여 생성된 복수의 클러스터들 각각에 포함된 적어도 하나의 패턴을 패턴쌍 및 유전 알고리즘에 기초하여 원단에 네스팅(130)할 수 있다.
일 실시예에 따른 프로세서(930)는 클러스터 단위로 유전 알고리즘을 이용하여 패턴의 배치 순서를 결정할 수 있다. 프로세서(930)는 클러스터에 포함된 패턴들 중 패턴쌍이 존재하는 경우, 해당 패턴쌍에 대응하는 패턴들에 대해서는 배치 위치 연산을 생략할 수 있다. 하지만 프로세서(930)는 이전에 배치된 패턴을 기준으로 패턴의 배치 순서에 따라 배치 대상이 되는 패턴을 배치할 최적의 위치를 연산할 수 있다.
클러스터에 포함된 패턴들 중 원단에서 위치가 고정된 패턴이 적어도 하나 존재할 수 있다. 일 실시예에 따른 프로세서(930)는 사용자 선택 입력에 기초하여 원단에서 위치가 고정된 패턴을 결정할 수 있다. 일 실시예에 따른 프로세서(930)는 복수의 클러스터들 중 하나의 클러스터에 포함된 패턴들 중 원단에서 위치가 고정된 적어도 하나의 패턴을 원단에 네스팅할 수 있다. 예를 들어, 도 8을 참조하여 설명하면 패턴(810)의 위치가 고정될 수 있다. 일 실시예에 따른 프로세서(930)는 클러스터에서 위치가 고정된 적어도 하나의 패턴을 제외하고 나머지 패턴을 원단에 네스팅할 수 있다. 예를 들어, 프로세서(930)는 패턴(810)을 제외하고 나머지 패턴들(820, 830, 840)을 패턴 배치 순서에 따라 배치할 수 있다. 패턴(820)의 크기가 다른 패턴(830, 840)의 크기보다 크므로 프로세서(930)는 패턴(820)부터 먼저 배치할 수 있다.
일 실시예에 따른 프로세서(930)는 복수의 클러스터들 중 클러스터에 포함된 패턴들의 크기 순으로 클러스터를 정렬할 수 있다. 패턴들의 크기는 패턴들의 크기 정보에 기초하여 결정될 수 있다. 클러스터는 패턴들의 크기 정보에 기초하여 패턴들의 크기 순으로 클러스터링함으로써 생성되었으므로, 클러스터에 포함된 패턴들의 크기 순으로 클러스터를 정렬할 수 있다. 따라서, 프로세서(930)는 크기가 큰 패턴들을 포함하는 클러스터부터 유전 알고리즘을 이용하여 패턴의 배치 순서를 결정하고, 배치 순서에 따라 패턴의 배치 위치를 결정할 수 있다. 그리고 그 다음으로 큰 클러스터에 포함된 패턴들에 대하여 유전 알고리즘을 이용하여 패턴의 배치 순서를 결정하고, 배치 순서에 따라 패턴의 배치 위치를 결정할 수 있다. 또는 일 실시예에 따른 프로세서(930)는 클러스터들 각각의 패턴 배치 순서를 모두 결정한 후, 패턴의 배치 위치를 결정할 수 있다.
일 실시예에 따른 프로세서(930)는 정렬 결과에 기초하여 클러스터 단위로 네스팅을 수행하며, 클러스터에 대응하는 영역에서 클러스터에 포함된 적어도 하나의 패턴을 네스팅할 수 있다. 원단에서 클러스터마다 할당된 영역이 존재할 수 있다. 그리고 프로세서(930)는 각 클러스터에 대응하는 영역에 패턴을 네스팅할 수 있다. 클러스터에 대응하는 영역을 초과하여 패턴을 배치할 수 없으므로, 프로세서(930)는 클러스터에 대응하는 영역 내에서 패턴을 배치할 수 있는 최적해를 찾을 수 있다.
유전 알고리즘은 복수의 클러스터들 각각에 대응하는 영역에 클러스터에 포함된 적어도 하나의 패턴을 배치하는 순서를 결정하기 위한 알고리즘을 포함할 수 있다. 유전 알고리즘을 이용하여 패턴의 배치 순서를 결정하는 방법은 도 5를 참조하여 구체적으로 설명된다. 프로세서(930)는 initialize population(510)을 할 수 있다. 프로세서(930)는 initialize population(510)을 통해 임의의 패턴 배치 순서를 획득할 수 있다. 예를 들어, 프로세서(930)는 initialize population(510)을 통해 복수의 후보 패턴 배치 순서들을 생성할 수 있다. 그리고 프로세서(930)는 획득한 패턴 배치 순서(또는 후보 패턴 배치 순서)에 기초하여 패턴을 원단에 배치할 수 있다. 예를 들어, 프로세서(930)가 특정 클러스터에 대하여 유전 알고리즘을 이용하여 복수의 후보 패턴 순서들을 획득할 수 있다. 그리고 프로세서(930)는 클러스터에 대응하는 영역에 클러스터에 포함된 적어도 하나의 패턴을 후보 패턴 배치 순서들 각각에 따라 배치할 수 있다.
일 실시예에 따른 프로세서(930)는 유전 알고리즘에 의해 생성된 복수의 후보 패턴 배치 순서들에 기초하여 배치 대상이 된 패턴의 후보 위치들을 생성할 수 있다. 그리고 프로세서(930)는 후보 위치들 중 패턴 간의 중첩 여부 및 위치 결정 기준에 기초하여 상기 배치 대상이 된 패턴을 배치할 수 있다. 이 과정에서 프로세서(930)는 패턴 중첩 여부를 검사하면서 패턴 배치 순서에 따라 패턴을 배치할 수 있다. 예를 들어, 프로세서(930)는 NFP(Nofit Polygon) 알고리즘을 이용하여 패턴의 중첩 여부를 검사할 수 있다. 위치 결정 기준은 배치 대상 패턴이 특정 후보 위치에 배치됨으로써 낭비되는 원단이 최소화되는 기준일 수 있다. 따라서, 프로세서(930)는 낭비되는 원단이 최소화되는 후보 위치에 배치 대상 패턴을 배치할 수 있다. 예를 들어, 프로세서(930)는 하나의 패턴을 배치한 후, 패턴 배치 순서에 따라 배치되는 다음 패턴이 올 수 있는 복수의 후보 위치들을 산출한 후, 해당 후보 위치들 중에서 최적의 위치를 배치 위치로 결정할 수 있다.
배치해야 하는 패턴이 복수개 존재하는 경우, 후보 패턴 배치 순서에 따라 패턴의 중첩 여부를 판하면서 패턴들을 배치하는 과정에서 많은 연산량이 소모될 수 있다. 따라서, 많은 연산량을 빠르게 처리할 필요가 존재할 수 있다. 일 실시예에 따른 프로세서(930)는 전처리된 패턴 간의 중첩 여부를 판단할 수 있다. 전처리된 패턴은 패턴의 중첩 여부를 신속하게 판단하기 위하여 메쉬 복잡도가 단순화된 패턴일 수 있다. 메쉬 복잡도가 낮아질수록 패턴의 중첩 여부를 판단하는데 소요되는 연산량은 감소할 수 있다.
일 실시예에 따른 프로세서(930)는 전처리된 패턴을 생성하기 위하여 패턴의 외곽선을 변형할 수 있다. 패턴의 외곽선을 변형하는 방법은 도 2 내지 도 3을 참조하여 구체적으로 후술된다. 그리고 프로세서(930)는 외곽선이 변형된 패턴에 포함된 폴리곤들을 삼각화시킬 수 있다. 전처리된 패턴은 삼각화된 패턴일 수 있다. 따라서, 프로세서(930)는 Triangle-Triangle intersection 알고리즘을 이용하여 패턴의 중첩 여부를 판단할 수 있다. 삼각화된 패턴은 패턴 내에 삼각형들을 포함하고 있으므로, 프로세서(930)는 패턴 내에 포함된 삼각형들을 이용한 중첩 여부를 판단함으로써 패턴의 중첩 여부를 판단할 수 있다. 하지만 프로세서(930)만으로 패턴의 중첩 여부를 연산하는 경우 시간이 오래 걸릴 수 있으므로, 프로세서(930)는 보조 프로세서(930)를 추가로 이용함으로써 중첩 여부 판단에 소요되는 시간을 단축시킬 수 있다. 보조 프로세서(930)는 프로세서(930)로부터 작업을 할당 받아 연산을 수행하는 장치로서, 제한이 아닌 예로서 GPU가 될 수 있다. 보조 프로세서(930)는 픽셀 단위로 패턴의 중첩 여부를 판단할 수 있다. 제한이 아닌 예로서, 픽셀 단위로 패턴의 중첩 여부를 판단하기 위하여 보조 프로세서(930)는 off-screen rendering을 이용하여 비트맵(bitmap)을 획득할 수 있다. 또한, 보조 프로세서(930)(또는 프로세서(930)는 렌더링에 사용되는 메모리 영역을 제한하기 위한 stencil buffer를 이용할 수 있다. 사용자는 occlusion query를 통해 가상의 객체가 뷰어에서 보이는지 또는 다른 객체에 가려서 해당 객체가 뷰어에서 안보이는지 여부를 확인할 수 있다.
일 실시예에 따른 프로세서(930)는 후보 위치들 중 원단의 영역을 적게 사용하도록 배치 대상이 된 패턴을 배치할 수 있다. 예를 들어, 프로세서(930)는 배치 대상이 된 패턴을 배치할 경우, 사용되는 원단의 '길이'가 최소가 되는 후보 위치를 최종 위치로 결정할 수 있다. 또 다른 예를 들어, 프로세서(930)는 배치 대상이 된 패턴이 배치될 경우, 사용되는 원단의 '폭'이 최소가 되는 후보 위치를 최종 위치로 결정할 수 있다.
일 실시예에 따른 프로세서(930)가 후보 패턴 배치 순서에 따라 클러스터에 포함된 모든 패턴들을 배치한 경우, 후보 패턴 배치 순서에 대응하는 평가 점수를 산출(520)할 수 있다. 평가 점수는 후보 패턴 배치 순서에 따라 원단에 배치된 패턴들로 인하여 낭비되는 원단이 최소화되는지 여부를 판단하기 위한 점수를 의미할 수 있다. 평가 점수는 후보 패턴 배치 순서에 기초하여 원단에 배치된 패턴들을 포함하는 바운딩 박스의 일 측의 길이와 반비례할 수 있다. 예를 들어, 프로세서(930)는 바운딩 박스의 '길이(높이)'가 짧을수록 평가 점수를 높게 산출할 수 있다. 다른 예를 들어, 프로세서(930)는 바운딩 박스의 '폭'이 짧을수록 평가 점수를 높게 산출할 수 있다.
일 실시예에 따른 프로세서(930)는 평가 점수에 기초하여 유전 알고리즘 종료 여부(530)를 결정할 수 있다. 평가 점수가 일정 기준 이상인 경우, 미리 결정된 유전 알고리즘 반복 횟수를 초과한 경우 또는 평가 점수가 가장 높은 평가 점수인 경우, 프로세서(930)는 유전 알고리즘을 종료하고 후보 패턴 배치 순서에 따라 원단에 패턴이 배치된 결과(570)를 반환할 수 있다. 평가 점수가 일정 기준 이하인 경우, 미리 결정된 유전 알고리즘 반복 횟수 이하인 경우 또는 평가 점수가 최고 평가 점수보다 낮은 경우, 프로세서(930)는 유전 알고리즘을 계속 진행할 수 있다. 프로세서(930)는 selection(540)을 수행할 수 있다. Selection(540)은 다음 세대를 위한 자손(off-springs)을 만들기 위해 교미하고 재결합하는 부모를 선택하는 과정을 의미할 수 있다. 예를 들어, Selection(540)은 Roulette Wheel Selection, Stochastic Universal Sampling(SUS), Tournament Selection 및 Rank Selection중 적어도 하나를 포함할 수 있다. 그리고 프로세서(930)는 Crossover(550)를 수행할 수 있다. Crossover(550)는 선택된 염색체들을 교차시키는 방법을 의미할 수 있다. 예를 들어, Crossover(550)는 one point crossover, multi point crossover, uniform crossover, cycle crossover, Partially matched crossover 및 Cycle Single Point crossover 중 적어도 하나를 포함할 수 있다. 일 실시예에 따른 프로세서(930)는 Mutation(560)을 수행할 수 있다. Mutation(560)은 염색체에 포함된 유전자 값을 변경하는 방법을 의미할 수 있다. 일 실시예에 따른 프로세서(930)는 Crossover(550)와 Mutation(560)이 완료된 유전자에 기초하여 다시 단계(510) 내지 단계(530)를 수행할 수 있다.
도2는 일 실시예에 따른 패턴의 변화량에 기초하여 패턴의 외곽선 변형 여부를 판단하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 프로세서(930)는 복수의 패턴들 각각의 메쉬 복잡도를 감소시키는 전처리를 할 수 있다. 프로세서(930)는 패턴 배치 순서에 따라 패턴을 원단에 배치하는 과정에서 패턴 간의 중첩 여부를 검사할 수 있다. 패턴 간의 중첩 여부를 판단함에 있어 패턴의 메쉬 복잡도가 증가할수록(예를 들어, 패턴에 포함된 폴리곤들이 많을수록) 중첩 여부 판단에 소요되는 연산량은 증가할 수 있다. 따라서, 프로세서(930)는 패턴의 중첩 여부 판단을 위하여 패턴을 단순화(예, 폴리곤에 포함된 정점 또는 간선의 수 감소)시킬 필요가 존재할 수 있다.
일 실시예에 따른 프로세서(930)는 메쉬 복잡도를 감소시키기 위하여 패턴의 외곽선을 변형할 수 있다. 일 실시예에 따른 프로세서(930)는 연속된 복수의 외곽선들을 하나의 선으로 통합할 수 있다. 예를 들어, 프로세서(930)는 복수의 외곽선들(211, 221, 231)을 새로운 외곽선(241)로 통합할 수 있다. 프로세서(930)는 패턴 외곽선을 단순화시킴으로써 메쉬 복잡도를 감소시킬 수 있다. 예를 들어, 프로세서(930)는 다각형(200)에서 점(250)과 점(280)을 연결하는 직선을 새로운 외곽선으로 결정할 수 있다. 이 경우, 외곽선이 변형된 다각형은 선들(210, 220, 230) 및 점들(260, 270)이 삭제될 수 있다. 하지만 점(250)과 정점(280)을 연결하는 직선을 새로운 외곽선으로 결정하는 경우, 외곽선의 변형으로 패턴(예, 다각형(200))이 작아질 수 있다. 프로세서(930)는 패턴이 작아지는 경우, 패턴의 변화량이 임계값을 초과하는지 여부에 기초하여 패턴의 외곽선을 변형시킬지 여부를 결정할 수 있다. 예를 들어, 패턴의 변화량(예, 새로운 외곽선과 다각형의 일 정점 사이 거리, 또는 패턴의 넓이 변화량)이 임계값을 초과하지 않는 경우, 프로세서(930)는 점(250)과 정점(280)을 연결하는 직선을 새로운 외곽선으로 결정할 수 있다. 하지만 패턴의 변화량이 임계값을 초과하는 경우, 프로세서(930)는 해당 새로운 외곽선을 다각형의 외각선으로 결정하지 않을 수 있다.
패턴의 외곽선의 변형으로 패턴이 커지는 경우도 존재할 수 있다. 예를 들어, 다각형(201)에서 프로세서(930)는 점(251)과 점(281)을 연결하는 선을 새로운 외곽선으로 결정할 수 있다. 이 경우, 패턴(예, 다각형(201))이 커질 수 있다. 패턴이 커지는 경우, 패턴이 커지더라도 패턴 중첩 여부 판단에 영향을 미치지 않으므로, 프로세서(930)는 패턴을 단순화시키기 위하여 해당 선을 새로운 외곽선으로 결정할 수 있다. 예를 들어, 점(251)과 점(281)을 연결하는 선을 새로운 외곽선으로 결정하는 경우, 다각형(201)은 사각형으로 단순화될 수 있다. 단순화된 패턴에서는 점들(261, 271) 및 선들(211, 221, 231)이 삭제될 수 있다.
도 3은 일 실시예에 따른 패턴의 외곽선 변형 방법을 설명하기 위한 도면이다.
외곽선의 변형으로 패턴이 작아지는 경우, 프로세서(930)는 패턴의 변화량이 임계값을 초과하는지 여부를 판단할 필요가 존재할 수 있다. 프로세서(930)는 패턴 간의 중첩 여부 판단의 정확도에 영향을 미치지 않는 수준에서 패턴을 단순화할 필요가 존재하기 때문이다. 외곽선의 변형으로 패턴의 크기가 크게 감소되어 패턴의 중첩 여부 판단에 영향을 미치는 경우, 프로세서(930)는 단순화된 해당 패턴을 중첩 여부 판단에 사용할 수 없다.
일 실시예에 따른 프로세서(930)는 외곽선의 변형으로 인한 패턴의 변화량을 산출할 수 있다. 패턴의 변화량은 패턴의 외곽선 변형으로 인한 변화량으로서, 예를 들어, 패턴 넓이 변화량, 새로운 외곽선과 일 정점 사이 거리 등일 수 있다. 도 3을 참조하여 새로운 외곽선과 일 정점 사이 거리가 설명될 수 있다. 도형(300)에서 점(350)과 점 (370)을 연결하는 선이 새로운 외곽선(340)일 수 있다. 해당 외곽선(340)과 점(360) 사이 거리는 패턴의 변화량(390)일 수 있다. 프로세서(930)는 패턴의 변화량(390)이 임계값을 초과하는지 여부를 판단할 수 있다. 초과하지 않는다면, 프로세서(930)는 패턴의 변화량이 더 커지는 새로운 외곽선을 생성할 수 있다. 예를 들어, 프로세서(930)는 도형(301)에서 점(351)과 점(381)을 연결하는 선을 새로운 외곽선(341)으로 생성할 수 있다. 해당 외곽선(341)과 점 (361)사이 거리는 패턴의 변화량(391)일 수 있다. 만약 패턴의 변화량(391)이 임계값을 초과하는 경우, 프로세서(930)는 이전 외곽선(340)을 패턴의 새로운 외곽선으로 결정할 수 있다. 하지만 패턴의 변화량(391)이 임계값을 초과하지 않는 경우, 프로세서(930)는 새로운 외곽선을 생성하여 패턴의 변화량을 산출하고 임계값 초과 여부를 판단할 수 있다. 프로세서(930)는 이상의 과정을 반복하여, 패턴 중첩 여부 판단에 영향을 주지 않으면서 패턴을 단순화시키는 최적의 외곽선을 생성할 수 있다.
도 4는 일 실시예에 따른 패턴쌍이 생성되는 방법을 설명하기 위한 도면이다. 패턴쌍이 생성되는 방법은 도 1에서 구체적으로 전술하였으므로 본 도면에서 구체적인 설명은 생략된다.
도 5는 일 실시예에 따른 유전 알고리즘을 이용한 패턴 네스팅 방법을 설명하기 위한 도면이다. 유전 알고리즘을 이용한 패턴 네스팅 방법은 도 1에서 구체적으로 전술하였으므로 본 도면에서 구체적인 설명은 생략된다.
도 6은 일 실시예에 따른 패턴 배치 방법을 설명하기 위한 도면이다.
패턴 네스팅의 대상이 되는 복수의 패턴들을 포함하는 배치 대상 패턴 그룹(610)이 존재할 수 있다. 배치 대상 패턴 그룹(610)은 패턴1, 패턴3, 패턴4, 패턴5, 패턴0, 패턴2를 포함할 수 있다. 배치 대상 패턴 그룹은 복수의 클러스터들로 나누어질 수 있다. 예를 들어, 클러스터1(621)은 패턴1, 패턴3, 패턴4를 포함하고, 클러스터2(622)는 패턴5, 패턴0, 패턴3를 포함할 수 있다. 클러스터에 포함된 패턴들은 유전 알고리즘에 기초하여 패턴 배치 순서가 결정될 수 있다. 따라서, 프로세서(930)는 패턴 배치 순서에 따라 클러스터1(621)에 포함된 패턴들을 패턴1, 패턴3, 패턴4 순으로 배치할 수 있다.
프로세서(930)는 원단에 패턴1(611)을 위치(630)에 배치할 수 있다. 그리고 프로세서(930)는 패턴1(611)을 기준으로 패턴3(612)를 배치할 수 있다. 프로세서(930)는 패턴1(611)을 기준으로 복수의 후보 위치들(651, 652, 653, 654)을 생성할 수 있다. 프로세서(930)는 일 패턴과 다른 패턴 간의 위치 관계를 포함하는 패턴쌍을 미리 생성해 놓을 수 있다. 따라서 프로세서(930)는 후보 위치들을 생성하는 경우, 미리 생성된 패턴쌍에 포함된 위치 관계를 이용하여 선별된 후보 위치들을 생성할 수도 있다.
일 실시예에 따른 프로세서(930)는 패턴 간의 중첩 여부를 판단하면서 원단의 영역을 적게 사용하도록 하는 위치에 패턴3(612)을 배치할 수 있다. 프로세서(930)는 후보 위치들 각각에 패턴을 위치시켰을 때, 패턴이 원단을 벗어나거나, 기존 패턴과 중첩되는 경우, 해당 후보 위치에 패턴을 배치하지 않을 수 있다. 그리고 나머지 후보 위치들 중에서 프로세서(930)는 원단의 영역을 가장 적게 사용하는 위치에 패턴을 배치할 수 있다. 예를 들어, 후보 위치(653)는 원단의 영역을 적게 사용하도록 하는 위치일 수 있다. 이 경우, 프로세서(930)는 패턴3(612)을 후보 위치(653)에 배치할 수 있다. 패턴3(612)을 배치한 후, 프로세서(930) 패턴4(613)를 배치할 수 있다. 프로세서(930)는 새로운 패턴을 배치하기 위하여 기존에 배치된 적어도 하나의 패턴과의 관계를 고려하여 후보 위치를 산출할 수 있다. 예를 들어, 패턴4(613)를 배치하기 위하여 프로세서(930)는 패턴4(613)와 기존에 배치된 패턴1(611) 및 패턴3(612) 사이 위치 관계를 고려하여 후보 위치를 산출할 수 있다. 프로세서(930)는 패턴4(613)의 후보 위치들(671, 672, 673, 674, 675, 676)을 산출할 수 있다. 후보 위치들(671, 672, 673, 676)은 원단의 영역을 벗어나므로 프로세서(930)는 해당 후보 위치에 패턴을 배치시키지 않을 수 있다. 후보 위치(674)와 후보 위치(675) 중에서 원단의 영역을 가장 적게 사용하는 후보 위치(674)에 패턴4(613)를 배치시킬 수 있다. 후보 위치(675)에 패턴을 배치시킬 경우, 사용되는 원단의 길이가 후보 위치(674)보다 길어지므로 프로세서(930)는 후보 위치(674)에 패턴4(613)을 배치시킬 수 있다.
다음으로, 프로세서(930)는 다음 클러스터인 클러스터2(622)에 포함된 패턴5, 패턴0, 패턴3를 원단에 배치할 수 있다. 유전 알고리즘에 기초하여 패턴의 배치 순서는 패턴5, 패턴0, 패턴3으로 결정되어 있을 수 있다. 따라서 프로세서(930)는 기존에 배치되었던 패턴들과 새롭게 배치될 패턴 간의 중첩 여부를 판단하여 새롭게 배치될 패턴의 위치를 결정할 수 있다. 예를 들어, 프로세서(930)는 패턴1(611)과 패턴5 사이 위치 관계, 패턴3(612)과 패턴5 사이 위치 관계 및 패턴4(613)과 패턴5 사이의 위치 관계에 기초하여 패턴5의 배치 위치를 결정할 수 있다.
도 7a 내지 도7b는 일 실시예에 따른 패턴 네스팅을 위한 사용자 인터페이스 화면을 설명하기 위한 도면이다.
도 7a는 패턴 네스팅을 위한 사용자 인터페이스 화면일 수 있다. 사용자 인터페이스 화면에는 패턴 네스팅 결과창(710) 및 패턴 네스팅과 관련된 파라미터 입력창이 존재할 수 있다. 패턴 네스팅과 관련된 파라미터 입력창에는 복사된 패턴수(730), 색상(740), 식서 각도 변경 패턴(750), 패턴 사이 여백(760), 단위(770), 원단 크기(780)가 포함될 수 있다. 입력창은 예시일 뿐 다른 파라미터가 더 포함될 수도 있고 일부 파라미터가 생략될 수도 있다.
복사된 패턴수(730)는 패턴의 복사 개수를 의미할 수 있다. 예를 들어, 복사된 패턴수가 1인 경우, 1개의 패턴들만 패턴 네스팅 결과창(710)에 표시될 수 있다. 복사된 패턴수가 2인 경우, 복사된 패턴들이 1개씩 패턴 네스팅 결과창(710)에 표시될 수 있다. 복사된 패턴수가2인 경우는 도 7b에 도시되어 있다. 도 7b에서 복사된 패턴수(791)는 2로 설정되어 있다. 복사된 패턴수가 3인 경우, 복사된 패턴들이 2개씩 패턴 네스팅 결과창(710)에 표시될 수 있다. 복사된 패턴수(730)의 값 변화에 따라, 프로세서(930)는 복사된 패턴들까지 포함하여, 원단에 최적 패턴 네스팅을 수행할 수 있다. 그리고 프로세서(930)는 패턴 네스팅 결과를 패턴 네스팅 결과창(710)에 출력할 수 있다.
색상(740)은 패턴의 색상 설저오가 관련된 오브젝트일 수 있다.
식서 각도 변경 패턴(750)은 식서 각도가 변경된 패턴의 표시 여부를 포함할 수 있다. 식서 각도 변경 패턴(750)이 2인 경우, 일 패턴과 해당 패턴의 식서 각도를 180도 회전한 패턴이 패턴 네스팅 결과창(710)에 표시될 수 있다. 식서 각도 변경 패턴(750)이 2인 경우는 도 7b에 도시되어 있다. 도 7b에서는 식서 각도 변경 패턴(750)이 2로 표시되어 있다. 식서 각도 변경 패턴(750)의 값 변화에 따라, 프로세서(930)는 식서 각도가 변경된 패턴에 기초하여 원단에 최적 패턴 네스팅을 수행할 수 있다. 그리고 프로세서(930)는 패턴 네스팅 결과를 패턴 네스팅 결과창(710)에 출력할 수 있다.
패턴 사이 여백(760)은 원단에 네스팅된 패턴 사이의 최소 간격을 의미할 수 있다.
단위(770)는 원단의 길이를 나타내는 단위를 의미할 수 있다.
원단 크기(780)는 원단의 가로 길이 및 세로 길이를 나타낼 수 있다.
도 8은 일 실시예에 따른 패턴의 식서 각도 변경에 따른 패턴 네스팅 결과를 설명하기 위한 도면이다.
일 실시예에 따른 프로세서(930)는 적어도 하나의 패턴의 식서 각도를 변경하여 원단에 배치한 후, 다른 패턴을 원단에 배치함으로써 후보 패턴 배치들을 생성할 수 있다. 일 실시예에 따른 프로세서(930)는 적어도 하나의 패턴의 식서 각도를 180도 회전하여 배치할 수 있다. 예를 들어, 프로세서(930)는 패턴(820)의 식서 각도를 180도 회전시킬 수 있다. 식서 각도는 원단의 세로 방향을 기준선으로 하여 회전된 각도를 의미할 수 있다. 패턴(820)의 식서 각도를 180도 회전시키면 패턴(821)처럼 원단에 배치될 수 있다. 패턴(820)의 위치가 변경되었으므로 원단(800)에 배치된 다른 패턴들(810, 830, 840)의 위치가 변경될 필요가 존재할 수 있다. 따라서 프로세서(930)는 패턴(821)에 따라 다른 패턴들을 원단(801)처럼 배치할 수 있다. 프로세서(930)는 패턴(821)을 원단에 배치한 후, 다른 패턴들(810, 830, 840)을 원단에 배치할 수 있는 후보 패턴 배치들을 생성할 수 있다. 그리고 프로세서(930)는 후보 패턴 배치들 각각에 대응하는 평가 점수를 산출할 수 있다. 프로세서(930)는 평가 점수들에 기초하여 최종 패턴 네스팅을 결정할 수 있다. 예를 들어, 프로세서(930)는 가장 높은 평가 점수를 가지는 후보 패턴 배치에 따라 패턴들을 원단(801)에 배치된 패턴들(811, 831, 841)처럼 배치할 수 있다.
프로세서(930)가 클러스터링을 수행하는 과정에서, 배치 위치가 미리 결정된 패턴이 존재할 수 있다. 예를 들어, 프로세서(930)는 사용자 입력에 기초하여, 원단에서 특정 패턴의 배치 위치를 결정할 수 있다. 이 경우, 배치 위치가 고정된 패턴은 클러스터링에서 제외될 수 있다. 이하에서는 배치 위치가 미리 결정된 패턴을 제외하고 클러스터링을 수행하는 방법이 설명된다. 일 실시예에 따른 프로세서(930)는 원단에서 위치가 고정된 적어도 하나의 패턴을 원단에 배치할 수 있다. 예를 들어, 프로세서(930)는 위치가 고정된 패턴(810)을 원단(800)에 배치할 수 있다. 일 실시예에 따른 프로세서(930)는 복수의 패턴들 중 원단에서 위치가 고정된 적어도 하나의 패턴을 제외하고 클러스터링할 수 있다. 예를 들어, 프로세서(930)는 배치 위치가 고정된 패턴(810)을 제외한 다른 패턴들(820, 830, 840)을 클러스터링할 수 있다. 그리고 클러스터링 결과에 따라, 프로세서(930)는 각각의 클러스터에 대하여 패턴 네스팅을 수행할 수 있다.
도 9는 다양한 실시예에 따른 시뮬레이션 장치를 설명하기 위한 블록도이다.
일 실시예에 따른 시뮬레이션 장치(900)는 서버일 수 있다. 다른 일 실시예에 따른 시뮬레이션 장치(900)는 사용자 단말(예, 모바일 장치, 데스크탑, 랩탑, 개인용 컴퓨터 등)일 수도 있다. 도9를 참조하면, 일 실시예에 따른 시뮬레이션 장치(900)는 사용자 인터페이스(910), 프로세서(930), 디스플레이(950), 및 메모리(970)를 포함할 수 있다. 사용자 인터페이스(910), 프로세서(930), 디스플레이(950), 및 메모리(970)는 통신 버스(905)를 통해 서로 연결될 수 있다.
사용자 인터페이스(910)는 패턴 네스팅 관련 파라미터들 각각에 대한 사용자 입력을 수신할 수 있다.
디스플레이(950)는 프로세서(930)에 의해 생성된 패턴 네스팅 결과를 표시할 수 있다.
메모리(970)는 생성된 패턴 네스팅 결과를 저장할 수 있다. 이 밖에도, 메모리(970)는 상술한 프로세서(930)의 처리 과정에서 생성되는 다양한 정보들을 저장할 수 있다. 이 밖에도, 메모리(970)는 각종 데이터와 프로그램 등을 저장할 수 있다. 메모리(970)는 휘발성 메모리 또는 비휘발성 메모리를 포함할 수 있다. 메모리(970)는 하드 디스크 등과 같은 대용량 저장 매체를 구비하여 각종 데이터를 저장할 수 있다.
또한, 프로세서(930)는 도 1 내지 도 8를 통해 전술한 적어도 하나의 방법 또는 적어도 하나의 방법에 대응되는 알고리즘을 수행할 수 있다. 프로세서(930)는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다. 프로세서(930)는 예를 들어, CPU(Central Processing Unit), GPU(Graphics Processing Unit), 또는 NPU(Neural network Processing Unit)으로 구성될 수 있다. 예를 들어, 하드웨어로 구현된 시뮬레이션 장치(900)는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
프로세서(930)는 프로그램을 실행하고, 시뮬레이션 장치(900)를 제어할 수 있다. 프로세서(930)에 의하여 실행되는 프로그램 코드는 메모리(970)에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.

Claims (19)

  1. 클러스터링을 이용한 패턴 네스팅 방법에 있어서,
    복수의 패턴들 중 적어도 2개 패턴의 상대적 위치가 미리 결정된 조건을 충족하도록 상기 적어도 2개 패턴 사이의 위치 관계가 결정된 패턴쌍(pattern pair)을 생성하는 단계;
    상기 복수의 패턴들 각각의 크기 정보에 기초하여 상기 복수의 패턴들을 클러스터링(clustering)하는 단계; 및
    상기 클러스터링 결과에 기초하여 생성된 복수의 클러스터들 각각에 포함된 적어도 하나의 패턴을 상기 패턴쌍 및 유전 알고리즘에 기초하여 원단에 네스팅(nesting)하는 단계
    를 포함하는,
    패턴 네스팅 방법.
  2. 제1항에 있어서,
    상기 미리 결정된 조건은
    상기 적어도 2개의 패턴이 서로 중첩되지 않고, 상기 원단에 모두 포함될 수 있는 조건을 포함하는,
    패턴 네스팅 방법.
  3. 제1항에 있어서,
    상기 패턴쌍을 생성하는 단계는
    상기 패턴쌍에 포함된 제1 패턴을 기준으로 제2 패턴의 후보 위치들을 생성하는 단계;
    상기 제1 패턴의 위치와 상기 제2 패턴의 후보 위치들을 기준으로 상기 제1 패턴과 상기 제2 패턴의 거리들을 산출하는 단계;
    상기 산출된 거리들 중 최솟값을 가지는 상기 제2 패턴의 후보 위치를 상기 제1 패턴을 기준으로 하는 상대적 위치로 결정하는 단계; 및
    상기 결정된 상기 제2 패턴의 상대적 위치를 기준으로 상기 패턴쌍을 생성하는 단계;
    를 포함하는,
    패턴 네스팅 방법.
  4. 제1항에 있어서,
    상기 크기 정보는
    상기 패턴들 각각의 바운딩 박스의 높이와 너비를 더한 값들 및 상기 패턴들 각각의 바운딩 박스 넓이들 중 적어도 하나를 포함하는,
    패턴 네스팅 방법.
  5. 제1항에 있어서,
    상기 클러스터링 하는 단계는
    상기 크기 정보에 기초하여 상기 복수의 패턴들을 정렬하는 단계; 및
    상기 정렬된 패턴들 중에서 상기 크기 정보에 따라 크기가 큰 패턴들부터 클러스터링하는 단계
    를 포함하는,
    패턴 네스팅 방법.
  6. 제1항에 있어서,
    상기 클러스터링하는 단계는
    상기 원단에서 위치가 고정된 적어도 하나의 패턴을 상기 원단에 배치시키는 단계; 및
    상기 복수의 패턴들 중 상기 원단에서 위치가 고정된 적어도 하나의 패턴을 제외하고 상기 복수의 패턴들을 클러스터링하는 단계
    를 포함하는,
    패턴 네스팅 방법.
  7. 제1항에 있어서,
    상기 원단에 네스팅하는 단계는
    상기 복수의 클러스터들 중 클러스터에 포함된 패턴들의 크기 순으로 상기 클러스터들을 정렬하는 단계; 및
    상기 정렬 결과에 기초하여 클러스터 단위로 네스팅을 수행하며, 클러스터에 대응하는 영역에서 상기 클러스터에 포함된 상기 적어도 하나의 패턴을 네스팅하는 단계
    를 포함하는,
    패턴 네스팅 방법.
  8. 제1항에 있어서,
    상기 유전 알고리즘은
    상기 복수의 클러스터들 각각에 대응하는 영역에 클러스터에 포함된 상기 적어도 하나의 패턴을 배치하는 순서를 결정하기 위한 알고리즘을 포함하는,
    패턴 네스팅 방법.
  9. 제1항에 있어서,
    복수의 패턴들 각각의 메쉬 복잡도를 감소시키는 전처리 단계;
    를 더 포함하는,
    패턴 네스팅 방법.
  10. 제9항에 있어서,
    상기 메쉬 복잡도를 감소시키는 전처리 단계는
    상기 패턴들 각각에 대응하는 외곽선을 변형시키는 단계; 및
    상기 외곽선이 변형된 패턴에 포함된 폴리곤들을 삼각화(triangulation)시키는 단계;
    를 포함하는,
    패턴 네스팅 방법.
  11. 제10항에 있어서,
    상기 외곽선을 변형시키는 단계는
    외곽선의 변형으로 패턴이 작아지는 경우, 상기 패턴의 변화량이 임계값을 초과하는지 여부에 기초하여 외곽선을 변형시키는 단계
    를 포함하는,
    패턴 네스팅 방법.
  12. 제10항에 있어서,
    상기 외곽선을 변형시키는 단계는
    연속된 복수의 외곽선들을 하나의 선으로 통합할 경우, 상기 패턴 넓이의 변화량이 임계값을 초과하는지 여부에 기초하여, 상기 선을 외곽선으로 결정하는 단계
    를 포함하는,
    패턴 네스팅 방법.
  13. 제1항에 있어서,
    상기 원단에 네스팅하는 단계는
    상기 유전 알고리즘에 의해 생성된 복수의 후보 패턴 배치 순서들에 기초하여 배치 대상이 된 패턴의 후보 위치들을 생성하는 단계;
    상기 후보 위치들 중 패턴 간의 중첩 여부 및 위치 결정 기준에 기초하여 상기 배치 대상이 된 패턴을 배치하는 단계; 및
    상기 배치 결과에 기초하여 상기 복수의 후보 패턴 배치 순서들 각각의 평가 점수를 산출하는 단계;
    를 포함하는,
    패턴 네스팅 방법.
  14. 제13항에 있어서,
    상기 패턴 간의 중첩 여부는
    프로세서를 통해 판단된 전처리된 패턴-상기 전처리된 패턴은 삼각화된 패턴을 포함하는- 간의 중첩 여부 및
    보조 프로세서를 이용하여 픽셀 단위를 기준으로 판단된 중첩 여부
    중 적어도 하나를 포함하는,
    패턴 네스팅 방법.
  15. 제13항에 있어서,
    상기 평가 점수는
    상기 원단에 배치된 패턴들을 포함하는 바운딩 박스의 일 측의 길이와 반비례하여 결정되는
    패턴 네스팅 방법.
  16. 제1항에 있어서,
    상기 원단에 네스팅하는 단계는
    적어도 하나의 패턴의 식서 각도를 변경하여 상기 원단에 배치한 후, 상기 패턴들을 상기 원단에 배치함으로써 후보 패턴 배치들을 생성하는 단계; 및
    상기 후보 패턴 배치들 각각에 대응하는 평가 점수에 기초하여 상기 원단에 네스팅하는 단계
    를 포함하는,
    패턴 네스팅 방법.
  17. 제16항에 있어서,
    상기 적어도 하나의 패턴의 식서 각도를 변경하는 단계는
    상기 적어도 하나의 패턴의 식서 각도를 180도 회전하여 배치하는 단계를 포함하는,
    패턴 네스팅 방법.
  18. 하드웨어와 결합되어 제1항의 방법을 실행시키기 위하여 컴퓨터로 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
  19. 패턴 네스팅을 수행하는 시뮬레이션 장치는
    사용자 인터페이스;
    메모리; 및
    프로세서;
    를 포함하고,
    상기 프로세서는
    복수의 패턴들 중 적어도 2개 패턴의 상대적 위치가 미리 결정된 조건을 충족하도록 상기 적어도 2개 패턴 사이의 위치 관계가 결정된 패턴쌍을 생성하고,
    상기 복수의 패턴들 각각의 크기 정보에 기초하여 상기 복수의 패턴들을 클러스터링하고, 그리고
    상기 클러스터링 결과에 기초하여 생성된 복수의 클러스터들 각각에 포함된 적어도 하나의 패턴을 상기 패턴쌍 및 유전 알고리즘에 기초하여 원단에 네스팅하는,
    시뮬레이션 장치.
PCT/KR2023/007302 2022-05-27 2023-05-26 클러스터링에 기반한 패턴 네스팅 방법 및 장치 WO2023229433A1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
KR20220065655 2022-05-27
KR10-2022-0065655 2022-05-27
KR20220066445 2022-05-31
KR10-2022-0066445 2022-05-31
KR1020230068353A KR20230165727A (ko) 2022-05-27 2023-05-26 클러스터링에 기반한 패턴 네스팅 방법 및 장치
KR10-2023-0068353 2023-05-26

Publications (1)

Publication Number Publication Date
WO2023229433A1 true WO2023229433A1 (ko) 2023-11-30

Family

ID=88919805

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2023/007302 WO2023229433A1 (ko) 2022-05-27 2023-05-26 클러스터링에 기반한 패턴 네스팅 방법 및 장치

Country Status (1)

Country Link
WO (1) WO2023229433A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060015208A1 (en) * 2002-12-31 2006-01-19 Reyes Infografica S.L. Computer-assisted method for designing garments
KR20090110776A (ko) * 2008-04-18 2009-10-22 한국전자통신연구원 저복잡도 3차원 메쉬 압축 장치 및 방법
US20190100030A1 (en) * 2017-10-04 2019-04-04 Electronics For Imaging, Inc. Fabric printing on nested patterns, and associated print systems and products thereof
KR102173900B1 (ko) * 2019-07-11 2020-11-04 호전실업 주식회사 의복 디자인 생성 방법 및 시스템과 이를 위한 통합 애플리케이션 프로그램
KR20210080556A (ko) * 2018-11-16 2021-06-30 더 노스 훼이스 어패럴 코오포레이션 절단 등록을 위한 시스템 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060015208A1 (en) * 2002-12-31 2006-01-19 Reyes Infografica S.L. Computer-assisted method for designing garments
KR20090110776A (ko) * 2008-04-18 2009-10-22 한국전자통신연구원 저복잡도 3차원 메쉬 압축 장치 및 방법
US20190100030A1 (en) * 2017-10-04 2019-04-04 Electronics For Imaging, Inc. Fabric printing on nested patterns, and associated print systems and products thereof
KR20210080556A (ko) * 2018-11-16 2021-06-30 더 노스 훼이스 어패럴 코오포레이션 절단 등록을 위한 시스템 및 방법
KR102173900B1 (ko) * 2019-07-11 2020-11-04 호전실업 주식회사 의복 디자인 생성 방법 및 시스템과 이를 위한 통합 애플리케이션 프로그램

Similar Documents

Publication Publication Date Title
US10692271B1 (en) Robust ray-triangle intersection
EP0457445B1 (en) Automatic layout of network topology
WO2010137822A2 (ko) 레이 트레이싱 코어 및 이를 포함하는 레이 트레이싱 칩
WO2009093836A2 (en) Method, medium, and system for compressing and decoding mesh data in three-dimensional mesh model
CN107193923B (zh) 一种二维地理空间快速矢量叠加的方法及系统
JPH01131963A (ja) 形態接続構成自動作成システム
WO2015119325A1 (ko) 지형 렌더링 방법
CN102393826B (zh) 一种基于多核并行处理的柔性场景连续碰撞检测方法
WO2022055099A1 (ko) 이상 탐지 방법 및 이를 위한 장치
WO2023229433A1 (ko) 클러스터링에 기반한 패턴 네스팅 방법 및 장치
WO2021187833A1 (ko) 배너 이미지 자동 생성 방법 및 장치, 컴퓨터 판독 가능한 저장 매체
WO2019231162A1 (ko) 이미지 분할 방법 및 장치
CN112734900B (zh) 阴影贴图的烘焙方法、装置、设备及计算机可读存储介质
Garai et al. A distributed hierarchical genetic algorithm for efficient optimization and pattern matching
JPH0962850A (ja) 線対称図形整形装置及び任意の数の対称軸の全てについて線対称な図形を生成する方法
WO2019194482A1 (ko) 국부 이진 패턴 분류 및 선형 매핑을 이용한 초해상화 방법
WO2022131531A1 (ko) 동적 장면에 대한 집중도 기반의 레이 트레이싱 방법 및 장치
WO2022015059A1 (ko) 생산라인 최적화 시뮬레이터 및 이를 이용한 생산라인 최적화 시뮬레이션 방법
CN112489057B (zh) 交通标志数据处理方法、电子装置和存储介质
WO2023068817A1 (ko) 렌더링 결과 테스트 방법 및 장치
CN111177874A (zh) 一种利用gpu快速设计航路网络拓扑结构的方法
WO2022164031A1 (ko) 고차원 다항식 회귀를 이용한 문자열 검출 방법 및 시스템
CN111460670A (zh) 一种基于cuda平台的大规模人群疏散模拟计算方法
WO2024019336A1 (ko) 디자인 이미지 클러스터링 방법 및 장치
WO2023214608A1 (ko) 양자 회로 시뮬레이션 하드웨어

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23812207

Country of ref document: EP

Kind code of ref document: A1