Skip to main content

International Journal of Interdisciplinary Research

Automatic Segmentation and 3D Printing of A-shaped Manikins using a Bounding Box and Body-feature Points


A novel algorithm for 3D-printing technology was proposed to generate large-scale objects, especially A-shaped manikins or 3D human body scan data. Most of the conventional 3D printers have a finite printing volume, and it is the users’ work to convert the target object into a printable size. In this study, an automatic three-step segmentation strategy was applied to the raw manikin mesh data until the final pieces had a smaller size than the 3D printer’s maximum printing volume, which is generally called “beam length”. Human body feature point information was adopted for fashion and textile researchers to easily specify the desired cutting positions. A simple bounding box, especially orienting bounding box, and modified Boolean operator were proposed to extract the specified segments with computational stability. The proposed method was applied to graphically synthesized manikin data, and 1/8, 1/4, and 1/2 scale manikins were successfully printed, minimizing the amount of support structure.


Three-dimensional (3D) printing or additive manufacturing (ISO, 2015) is definitely one of this era’s hottest keywords. It was initially developed to rapidly generate prototypes of the final product in mechanical engineering and gradually found application in different industries (Ngo et al. 2018). As the initial patents for fused decomposition modeling (Crump, 1992) and selective laser sintering (Deckard, 1989) expired, studies on 3D printing accelerated, especially concerning filament material and printer-control technology. In this context, material scientists and engineers are heavily interested in the former topic. Therefore, composite structures (Wang et al. 2017) have also been studied for fabricating better filaments, in addition to single materials such as plastics (Talataisong et al. 2018), metals (Chen et al. 2019), cement (Perrot et al. 2016), and biomedical tissues (Murphy & Atala, 2014).

By the way, the latter problem becomes more burden to the 3D printer users. Printer control includes preparing 3D data, converting the data into 3D printer-friendly format, and post-processing the final product. First, 3D data can be prepared by graphically synthesizing, or more preferably by reverse engineering. If the target object exists, the user can acquire mesh data by simple 3D scanning. Three-dimensional scanning technology has been widely spread, and even some smartphones support this feature. On the contrary, there are some cases when there is no prototype to scan, and the user has to synthesize the data. Fortunately, there exist many tools to generate 3D mesh data, from professional computer-aided design (CAD) or modeling software such as Maya®, MAX®, Rhinoceros 3D ®, and AutoCAD®, to user-friendly software like SketchUp® and TinkerCAD®. Especially in the apparel industry, 3D human body scanners have been used to acquire human body shape data for several decades. If the manikin data is small enough to fit the 3D printer, printing manikin is easy. The user only has to convert the 3D data into g-code, print the g-code, and remove redundant support structure. Sometimes mechanical or chemical polishing is added to make a smooth surface.

However, manikins, such as garment display or car crash safety dummies, are generally bigger than printers. In this case, the user should have an additional skill to modify the raw manikin data into smaller pieces. The conventional slicing software supports a limited segmentation feature, which operates for simple shapes only. Otherwise, the user can use programming language or tools such as C, C +  + , Python®, or Matlab® to freely manipulate the 3D data. However, it is still a burden to dissect a complex-shaped large object like a manikin to a user-defined size with these tools.

Therefore, we attempted to develop a 3D-printing technique optimized for human manikins in this study. Especially, the new method should satisfy the following conditions.

  • [condition #1] degree of freedom: The final manikin generally has a whole body shape, but sometimes partial segments like the bodice may be needed. It should be able for the user to specify desired body parts from the raw manikin data.

  • [condition #2] ease of implementation: The method should be numerically simple and easy to implement in any programming language (C/C +  + /Python) or tools (Matlab).

  • [condition #3] aesthetics: It is preferred to make the final printed parts symmetric for visual quality (Luo et al. 2012).

  • [condition #4] printer size constraint: The method should consider the maximum printing volume.

  • [condition #5] minimization of the support structure: The method should minimize the support structure to reduce filament wastage and surface ruggedness.

  • [condition #6] numerical efficiency: The calculation speed should be as fast as possible.

  • [condition #7] geometric stability: The method should generate a geometrically valid (manifold) model, which has a closed-volume.

This paper combined several multi-disciplinary techniques. First of all, feature points were used to satisfy condition #1. Feature points and bone/joint information were automatically generated from the manikin shape based on our previous method (Sul & Kang, 2010) in advance. Also, a simple 3D box, also known as a bounding box, was used to meet conditions #2–#7. We found that applying the conventional Boolean operation to a B-rep mesh data yielded a non-manifold (not-closed-volume) model, leading to 3D printing failure. Therefore a new modified Boolean operation was devised to meet conditions #6 and #7. “Literature review” section summarizes related previous researches, with a brief introduction to our previous work. “Experimental” and “Modeling” section shows the experimental and algorithmic details. Our method was applied to the 3D printing of manikins with three different scales. The results are shown and discussed in “Results and discussion” section.

Literature review

Automatic segmentation of a large-scale object for 3D printing

Additive manufacturing of large-scale prototypes is needed in various areas, such as 3D-printed houses for fast construction (Bos et al. 2016), dummies for car-safety testing (Boström et al. 2000), human organs for biomedical applications (Thielen & Delbressine, 2016), and manikins for the apparel industry (Nayak & Padhye, 2017). Because most conventional 3D printers do not support large-scale printing features, the user should decompose raw mesh data into smaller parts using 3D CAD or modeling tools. Several researchers already tackled this printer control issue; MIT’s “Chopper” algorithm was the pioneer in slicing large objects (Luo et al. 2012). It decomposes a big model into 3D-printable sizes considering printing volume (called as “beam length” in this article), connector feasibility, finite element method-based structural soundness, and even esthetics such as user guidance or model symmetry (Luo et al. 2012) as objective functions. Several other approaches followed in the footsteps of this algorithm, including “Q-CHOPPER” (Nicholson, 2016), “Dapper” (Chen et al. 2015), and “PackMerger” (Vanek et al. 2014).

Although these slicing algorithms are versatile and highly efficient, they also have several cons, such as calculation speed and complex data structure. For example, the “Chopper” algorithm partitions a target object with a cutting plane of infinite size and generates a binary space partition (BSP) structure for each trial. The problem is that it seeks a local optimum with no prior knowledge of object geometry. Therefore, the algorithm starts segmentation from the bottom layer. Thus, the two parts acquired by slicing are again partitioned using another cut plane until the part size is smaller than the beam length. In this way, one BSP tree is finally acquired. This process is repeated, varying the vertical position by 0.5 intervals and the normal vector of the slicing plane in 129 directions. This results in 300,000 candidate BSP trees, depending on the object size (Nicholson, 2016). Finally, the most optimal BSP tree is chosen by applying object functions. Although the problem size is big, previous methods showed a relatively good performance using the parallelization technique. For example, the “Chopper” algorithm requires 2.3 min to decompose “human” data with 4706 vertices into 8 parts (refer to Figure 18). Another disadvantage of the currently available 3D-printing algorithms is related to the slicing plane. A plane with infinite size can cut an object in an undesired shape. Let us assume that the user wants to cut manikin data vertically into upper and lower parts and put the slicing plane around the waist. However, the slicing plane would cut not only the bodice but also the two arms simultaneously.

Minimization of the support structure

3D printing is composed of continuous stacking of polymeric resins layer by layer, similarly to the Hanoi tower puzzle. If the new disk is smaller than the lower disk, there will be no wastage. The opposite case is known as an “overhang” structure, which needs “supports” to maintain the whole structure during solidification. It is also possible to use PVA-based water-soluble support (Duran et al. 2015). In other cases, the support structure leads to waste of filament and undesirable surface artifacts. It is probably the main bottleneck for the industrialization of 3D printing. Many teams have tacked this issue. The simplest method is to find optical printing direction, reducing the total amount of support structure. (Ezair et al. 2015) proposed GPU-based evaluation algorithm which can predict the optical printing direction. The other approach is changing the shape of supports to Y- or tree-shape (Vanek et al. 2014), bridge (Shen et al. 2016), honeycomb (Lu et al. 2014), and unit-cell (Vaidya & Anand, 2016). The support structure can also exist inside the object, especially when it is a hollow one. Medial axis transform (Zhang et al. 2015) and skin-frame structure (Wang et al. 2013) were also adopted to minimize the internal support structure. These works give successful results and can be used in any geometry, especially when the target object’s shape cannot be modified. However, a better way would be to convert the original shape into a support-free one. (Demir et al. 2018) decomposed the object into convex shapes reducing the filament usage to about 65 vol% for some geometry. (Wei et al. 2017) reduced the filament usage to 65~83 vol % by using the skeletal approach. Both methods showed a good result in a reasonable time (15~55 seconds). However, the segmentation is affected by the geometry and cannot be controlled by the user. The human body can have various sizes, and these methods cannot generate consistent results. The other method is to decompose the original object into a group of simple shapes whose upper layer always had a smaller area than its lower one, like the Hanoi-tower. For example, (Wang et al. 2017) have chosen the so-called genus-zero topology, such as cone, pyramid, ellipses, and sphere. However, their method reduced the filament amount to 53~76 vol% but needed considerable time (18~60 minutes). This paper used a similar approach, except that the computation time was much reduced.

Our previous works

The proposed method’s validity was tested in our previous work (Kim & Sul, 2018). Initially, a three-dimensional box of unit size was created in CAD software. Its size, position, and orientation were changed to fit the specific body part. 1/8 scale of human manikin data was loaded, and then the Boolean operator was applied between the box and the manikin data. This process was repeated until a total of 20 segments were acquired. The printing direction was found by rotating each segment and measuring the filament needed from the g-code. All the operation was done manually, and the result showed that the amount of support structure dropped from 63.6 vol% into 1.7 vol%. This research aims to automatize our previous work using simple architecture so that non-professional end-users may easily apply our method use in their application.

Note that feature points are an essential part of our method. They specify the region where the Boolean operation is needed. It does not matter if they are input manually or automatically. Our team devised an automatic feature point detection algorithm in our previous work (Sul & Kang, 2010), and it was used again in this work. It loads the manikin or human body data with an “A”-pose and finds hundreds of cross-sections of the data. By assessing the number of closed curves, feature points could be found.


Manikin data

A graphically synthesized body was used to minimize possible numerical error. The body data (“Masha” at was bought online in Wavefront.OBJ format. It contained 6,960 vertices and 13,672 triangular mesh elements, with a vertical size of 171.3 cm. The initial pose of the manikin was assumed to be A-shaped to facilitate the following feature-point-extraction process. Throughout this study, all 3D data (including raw manikin mesh) was displayed using our homemade MS-Windows-based program, using C +  + language with the Embacadero C +  + Builder XE5 compiler.

3D printer

Fused-deposition modeling (FDM)-type printer (Sindoh DP-202, Korea) was used with poly(lactic acid) (PLA) filaments in this study (Fig. 1a). The printer’s bundled software (3DWOX) was used to generate the g-code (Fig. 1b) by keeping the default options unchanged except for the build-plate generation option being turned off and the support structure being turned on to a zig-zag pattern in the necessary positions. The maximum printable size was 200 × 200 × 189 mm3. The printed parts’ weight was measured thrice using an electronic balance (HS1100A, Hansung Corporation, Korea; max precision 0.01 g) before and after removing the support structure. The theoretical amount of the support structure was calculated by the bundle-slicing software during g-code generation.

Fig. 1
figure 1

FDM-type 3D printer and its g-code generation software used in this study. a Picture of 3D printing for bodice fragment; b screenshot of slicing software



The following concepts are used throughout this study.

  • Decomposing, partitioning, and segmenting: These terms have the same meaning and represent the conversion of a big object into a group of smaller ones (Demir et al. 2018; Jadoon et al. 2018; Nicholson, 2016).

  • Boundary-representation (B-rep) and Constructive Solid Geometry (CSG): There are mainly two ways of describing 3D objects in CAD or computer graphics. Most commercial CAD tools, such as AutoCAD®, Rhinoceros 3D®, SketchUp®, and so on, use the B-rep method with which a 3D shape is described with vertices, edges, and faces. It is straightforward and intuitive but may contain minute error coming from floating-point round-off error. The other method, CSG, was devised to generate exact or errorless objects, especially for mechanical engineering. It does not describe the target shape directly. Instead, it uses union, intersection, or difference operations between the given simple shapes such as cubes or boxes. CATIA, SolidWorks, and TinkerCAD® are examples of CSG type CAD tools.

  • 6 body-parts and segments: Our algorithm uses 3 steps to decompose the input manikin mesh into smaller pieces. In the first step, the whole-body manikin was decomposed into head, bodice, arms, and legs, which collectively represent “6 body parts”. The second (“V-CUT”) and third (“PIE-CUT”) step segmented the 6 body parts again into smaller sizes so that they could fit the 3D printer. These pieces were designated as “segments”.

  • V-CUT and PIE-CUT: The processes by which the 6 body parts are partitioned into segments are designated as V-CUT or PIE-CUT. The former partitions the object in a vertical direction (along with manikin’s height), while the latter partitions in the horizontal direction like cake-cutting or pie-cutting (Stromquist, 1980).

  • Slicing: This term refers to the generation of g-codes from the cross-section curve of segments in 3D printing (Wang et al. 2015), using software such as Simplfy3D®, Ultimaker Cura®, Autodesk Netfabb®, and PrusaSlicer (former Slic3r).

  • Beam length: This term refers to the shortest axis length of the printing volume of the 3D printer, originally defined by Luo and co-workers (Luo et al. 2012). The final 3D printed segment’s size in its longest axis direction should be smaller than the given beam length.

  • Body feature points: This term refers to some characteristic points on the human body surface (ISO, 2017). In the study, they also include bones and joint points (Sul & Kang, 2010). Bone points are those with a non-zero degree of freedom, while a joint is the center position of two bone points and does not have skeletal deformation.

Bounding box and eigenvectors

The bounding box is defined as the smallest closed volume that encloses the target shape (Teschner et al. 2005). Among the several types of bounding boxes shown in Fig. 2, the oriented bounding box (OBB; Fig. 2b) was chosen for vertical slicing (V-CUT). Additionally, pie-shaped boxes were used for horizontal slicing (PIE-CUT).

Fig. 2
figure 2

Examples of 2D bounding boxes. a Axis-aligned bounding box (AABB); b orienting bounding box (OBB); c k-DOP

The support for input manikin mesh data with l vertices and m faces can be expressed as shown in Eq. (1), where <  > means a vector list and pi, fm, and nm are the position vectors of vertices, face information, and face normal vector, respectively.


Solving Eq. (2) and (3) yields eigenvectors (v1, v2, and v3) corresponding to mesh A via principal component analysis (PCA) or modal analysis (Kim & Sul, 2018; Pentland & Williams, 1989).

$${\mathbf{p}}_{i} \cdot {\mathbf{p}}_{j} = \left[ {\begin{array}{*{20}c} {{\mathbf{p}}_{i,x} \cdot {\mathbf{p}}_{j,x} } & {{\mathbf{p}}_{i,x} \cdot {\mathbf{p}}_{j,x} } & {{\mathbf{p}}_{i,x} \cdot {\mathbf{p}}_{j,x} } \\ {{\mathbf{p}}_{i,y} \cdot {\mathbf{p}}_{j,y} } & {{\mathbf{p}}_{i,y} \cdot {\mathbf{p}}_{j,y} } & {{\mathbf{p}}_{i,y} \cdot {\mathbf{p}}_{j,y} } \\ {{\mathbf{p}}_{i,z} \cdot {\mathbf{p}}_{j,z} } & {{\mathbf{p}}_{i,z} \cdot {\mathbf{p}}_{j,z} } & {{\mathbf{p}}_{i,z} \cdot {\mathbf{p}}_{j,z} } \\ \end{array} } \right]$$
$$\left( {{\mathbf{p}}_{i} \cdot {\mathbf{p}}_{j} } \right) \cdot {\mathbf{v}} = \lambda {\mathbf{v}}$$

These eigenvectors represent the local axis of each OBB. Meanwhile, the OBB size is controlled by span values along each eigenvector. For example, span values ( ψ1,min, ψ 1,max) with respect to v1 can be calculated as shown in Eqs. (4) and (5). Therefore, each OBB can be described with a triple set, (v1, ψ1,min, ψ 1,max), (v2, ψ2,min, ψ 2,max), or (v3, ψ3,min, ψ 3,max), which needs only 15 real numbers. AABB has the same data structure, except that the three vectors (v1, v2, and v3) coincide with the global axes. Figure 3 shows an example of eigenvector evaluation using Mathematica software.

$${\uppsi }_{1,\min } = \min \left( {\left\langle {{\mathbf{v}}_{1} \cdot {\mathbf{p}}_{i} } \right\rangle } \right)$$
$${\uppsi }_{1,\max } = \max \left( {\left\langle {{\mathbf{v}}_{1} \cdot {\mathbf{p}}_{i} } \right\rangle } \right)$$
Fig. 3
figure 3

Example of PCA-based principal axes finding for the left arm using Mathematica® software

Boolean operation

Our slicing strategy is based on constructive solid geometry (CSG), which results in another shape from two given objects by Boolean operations such as union, intersection, or difference. The intersection operator was mainly used in this study to extract specific body parts from raw manikin data. FinalMesh® Boolean API in dynamic link library format (PelikanSoftwareKft., 2020) was chosen for the Boolean operation engine.

Three-step slicing

Decomposition into 6 body parts

To make the main slicing procedures (V-CUT and PIE-CUT) easier, raw manikin data was decomposed into 6 body parts, using feature-point information. A temporary bounding volume, i.e., AABB of bodice cross-sectional curves, was prepared in advance. Using Boolean operations between the raw manikin mesh and temporary volume (Fig. 4a), the bodice part, as well as the other 5 parts (head, arms, and legs) were acquired (Fig. 4b). Note that different object colors throughout the paper were intentionally used to show that Boolean operations were successfully conducted.

Fig. 4.
figure 4

6-segment preparation. a boolean operation of the raw manikin and temporary bodice bounding volume, b extracted bodice segment and the other 5 body segments


If the object is relatively small (for example, 1/8 scale manikin), it can be decomposed using only vertical-direction slicing of the 6-parts. The V-CUT operation was realized by preparing several stacked OBBs around each of the 6 parts. The number and size of the OBBs were controlled using the beam length Lb. Herein, we define Lb as the least value among the 3D printer’s maximum printable x-, y-, and z-dimensions (Luo et al. 2012). Without further feature-point information, the considered OBBs exhibited an equal vertical size, and the number of OBBs (Ns) was set as shown in Eq. (6),

$$N_{s} = 1 + floor\left( {\frac{{\left\| {{\text{OBBS}}} \right\|z}}{{L_{b} }}} \right),$$

where function floor(x) returns the maximum integer smaller than xx and OBBSZ represents the OBB size of mesh S with respect to the global z-axis.

Consider that a printer (for example, the Sindoh DP-202 printer used in this study) has an Lb of 18.0 cm while the vertical size of the object is 65.0 cm; in this case, if the V-CUT needs 4 OBBs, the vertical size of each OBB would be 65.0/4 = 16.25 cm, as illustrated in Fig. 5a and b.

Fig. 5
figure 5

Example of V-CUT and PIE-CUT operations with equal-interval spacing (note that the bodice part from Fig. 4b was used again). a Target object and V-CUT OBBs, b PIE-CUT result, c Target object and PIE-CUT OBBs, d PIE-CUT result


If the object is relatively larger than the printing volume, additional slicing is required in the horizontal direction. The OBBs of the V-CUT mesh (shown as wireframes in Fig. 6b) were dissected into several pie pieces in the circular direction to yield PIE-CUT OBBs (Fig. 5c). The number of pies was controlled so that the largest dimension of these PIE-CUT OBBs is smaller than Lb. After the Boolean operation, V-CUT meshes were converted to PIE-CUT shapes (Fig. 5d).

Fig. 6
figure 6

Illustration of feature/bone/joint points (modified from (Sul & Kang, 2010)). a 1st features, b 2nd features, c bone/joint points, d skeletal structure

Body-feature-point extraction

Based on our previous study, feature points and bone/joint points were extracted to specify the bounding boxes’ size and position (Sul & Kang, 2010). Table 1 shows the nomenclature of the extracted points. Figure 6 show the 1st and 2nd feature points and bone/joint points for our manikin mesh data. The 1st feature points (Fig. 6a) can be directly found from the mesh surface, such as hand tip, crotch, head tip, and so on. Meanwhile, the 2nd feature points (Fig. 6b) are indirectly found from the 1st feature points and the bone/joint points. Bone/joint points (Fig. 6c) compose the skeleton structure (Fig. 6d) inside the manikin body, while two kinds of feature points lie on the manikin mesh surface.

Table 1 Nomenclature of feature, bone, and joint points (

Results and discussion

Modified Boolean operator

Theoretically, a Boolean operation should always generate a closed-volume mesh. However, we observed that this was not the case, as illustrated in Fig. 7a and b. Note that the bottom faces of both thighs are missing. Such non-closed volumes, also known as non-manifold models in CAD, are detrimental to successful 3D printing. This is due to the incompatibility between the two mesh display methods, boundary representation (B-rep) and CSG. Most graphics or CAD engines display data using the B-rep method, which expresses shapes by vertex, edge, and face information. Meanwhile, the Boolean operation is essential for objects with CSG, in which objects are defined parametrically. Autodesk TinkerCAD® is one particular CSG-type modeling software. In Fig. 8, a Boolean operation between the parametric shapes, “cone” (Fig. 8a) and “box” (Fig. 8b), generated closed volume in any operand order (Fig. 8c and d). These objects were again exported to B-rep data in Wavefront®.OBJ format, as shown in Fig. 8e and f. Boolean operator was applied using commercial software (FinalMesh®) afterward; however, this operation failed sometimes (Fig. 8h). We call this phenomenon the “CSG/B-rep incompatibility problem.” To resolve this problem, we propose a modified Boolean operator, as shown in Fig. 9. The basic idea is that when any face of mesh B meets any face of mesh A, it is lifted by a certain distance θ. As a high value of θ can affect the operation result, it was fixed at 10–5 cm in this study.

Fig. 7
figure 7

Example of Boolean operation failure (None/20 cm) a upper and b lower view before modification and c lower view after modification. Note that the object in b is not closed

Fig. 8
figure 8

Results of CSG and B-rep operation. (Upper row means results of a typical CSG operation, generated by TinkerCAD®. Lower row shows erroneous results of Boolean operation for B-rept objects, generated by FinalMesh®. Note that the object in h is not closed.)

Fig. 9
figure 9

Pseudocode of the modified Boolean operation

Verification of the proposed method using bodice slicing

The manikin data (Fig. 4a) was segmented using the 3 steps described in “Modeling” section and the modified Boolean operator. Figure 10a ~ d show equal-interval slicing results when the manikin bodice ‘s vertical size was 67.8 cm, and Lb was 50, 30, 20, and 15 cm. It shows that our bounding-box-based approach can successfully partition large objects. Meanwhile, erroneous slicing can occur if the bounding box’s size is not accurate (Fig. 11a). In Fig. 11b, the toes were unintentionally segmented due to the large length of the OBB. The same result can occur if a cutting plane of infinite size is used.

Fig. 10
figure 10

Effects of different slicing methods (Upper and middle row mean result of equal-interval and non-equal slicing respectively, with respect to beam length. Lower row shows hybrid of both methods. Each figure legend represents “feature points”/”beam length”). a None/50 cm, b None/30 cm, c None/20 cm, d None/15 cm, e PelvisJ/∞, f WaistJ/∞, g LBottomBreastF/∞, h RNippleF/∞, i PelvisJ + WaistJ + LBottomBreastF + RNippleF/∞, j BreastJ + WaistJ/∞, and k BreastJ + WaistJ/15 cm

Fig. 11
figure 11

Effect of bounding boxes with redundant lengths. a: box positions, b: resultant segments. Note that toes were cut erroneously

Our method can also generate non-equal-interval slicing. The user can easily change the size of the existing OBB simply by changing its min/max span values. This can be done more easily using feature/bone/joint positions, as shown in Fig. 12. The same method was used on the manikin bodice data, using the feature-point information in Fig. 6. Figure 10e ~ h show the results of feature-point-based non-equal-interval slicing at Lb = ∞ (In the actual implementation, a large number such as 100 cm was used instead of infinity). In Fig. 10e ~ h, only a single feature point was used to change the size of the OBB; multiple feature points can also be used on a single OBB as shown in Fig. 10i and j, in which 4 feature points (PelvisJ, WaistJ, LBottomBreastF, and RNippleF) and 2 points (BreastJ and WaistJ) were used at Lb = ∞. Furthermore, the two kinds of slicing can be conducted simultaneously. Figure 10k used the same feature-point constraint as Fig. 10j, while Lb = 15 cm. It can be clearly seen that the three parts of Fig. 10j were segmented again with equal spacing while maintaining the original dashed slicing line around BreastJ and WasitJ. Figure 13 quantitatively compares equal-interval slicing and feature-point-based slicing. Figure 13b and c are similar to Fig. 10j and k, respectively, while Fig. 13a depicts equal-interval slicing at Lb = 12 cm. It is to be noted that Fig. 13a and c contain the same number of parts (8), but with different sizes. Figure 13 implies that the user can have many degrees of freedom in slicing manikin data using the proposed method.

Fig. 12
figure 12

Example of OBB resizing in a left-arm segment. a Original OBB for upper arm, b reduced OBB with respect to LBicepB bone point, and c extended OBB with respect to LHandTipJ joint point

Fig. 13
figure 13

Comparison of equal-interval slicing and feature-point-based slicing. Note that a and b have the same number of objects. a None/12 cm, b BreastJ + WaistJ/100 cm, and c BreastJ + WaistJ/15 cm

Slicing of A-posed whole-body manikin

In “Verification of the proposed method using bodice slicing” section, our method was verified by slicing the bodice part. In this section, we shall describe the segmentation and 3D printing of whole-body manikin data. Figure 14a shows the results of equal-interval slicing at Lb = 18 cm. In Fig. 14b, the resultant parts have three PIE-CUTs for each layer, but the number of pies can vary depending on the Lb value. Although the manikin’s original size was 173.1 cm, only 1/8, 1/4, and 1/2 scales were actually printed to conserve printing time. And then, each segment was glued to make a final manikin. The left-hand side and right-hand side figures of Fig. 14c show the results of V-CUT and PIE-CUT operations, respectively. A scale bar with dimensions of 5.0 × 2.5 cm2 is inserted in Fig. 14a ~ c to show clearly the printed parts’ actual size.

Fig. 14
figure 14

Screenshot of the final 3D-printed manikins. a V-CUT simulation (left) and 1/8 scale printed result (right) without any post-processing, b PIE-CUT simulation (left) and 1/8 scale printed result (right) without any post-processing, c from left to right, 1/2, 1/4, and 1/8 scale glued manikins from V-CUT and 1/8, 1/4, and 1/2 scale ones from PIE-CUT, respectively

Figure 14c–h also show that there were few support structures in the final product. On the contrary, in our previous study, in which slicing was done manually using commercial 3D mesh operation software, 1/8 scale manikin printing resulted in 63.6% (Fig. 15a) of waste (Kim & Sul, 2018). We defined “filament waste ratio (Rss)” due to the support structure in 3D printing using Eq. (7) for quantitative comparison.

Fig. 15.
figure 15

3D printing of 1/8 scale manikin without proper slicing (Kim & Sul, 2018)

$${{\varvec{R}}}_{ss}\left(\text{\%}\right)=\frac{{W}_{0}-{W}_{1} \left(g\right)}{{W}_{1} \left(g\right)}\times 100\left(\text{\%}\right)=\frac{\text{Weight of support structure} \left(g\right)}{\text{Weight of manikin} \left(g\right)}\times 100\left(\text{\%}\right)$$

Here, W0 and W1 are the total weights of 3D-printed parts before/after support-structure removal, respectively. Figure 16 shows the Rss values of V-CUT and PIE-CUT results; filament wastage was less than 1.0% in V-CUT and 4.0% in PIE-CUT. This means that our method is more environmentally friendly as it reduces the amount of plastic wastage. It should be noted that the experimental PIE-CUT values are greater than the theoretical values, while V-CUT results showed the opposite tendency. As more slicing was done, there were no significant changes in the inner and outer support structures’ total volume. However, two new boundary faces are created beside the slicing line, which can be thought to be a filament wastage source. In most 3D-printer-slicing software, unlike the outer surface, the support structure’s inner surface can be controlled or reduced to preserve the input object’s shape. This fact can be easily verified using commercial slicing software. Figure 17 shows a cube of 5 × 5 × 5 cm3, and its 1, 2, or 3 times sliced objects in the x-axis direction were converted to g-code. Although the four objects have the same volume, the amount of filament needed for 3D printing varied at 11.96, 13.31, 14.66, and 16.01 m. Several studies attempted to predict the optimal printing direction or support-structure-fill pattern to reduce the amount of total filament required (Ezair et al. 2015; Jiang et al. 2018; Wang et al. 2013, 2017), but few studies focused on the effect of slicing in 3D printing. We shall focus on this aspect in the near future.

Fig. 16
figure 16

Quantitative measurement of Rss for two kinds of slicing. a V-CUT and b PIE-CUT

Fig. 17
figure 17

Effect of slicing on filament amount (image generated by Sindoh® 3D WOX slicing software). a Original cube 5 × 5 × 5 cm3, b 1-time sliced cube, c 2-times sliced cube, and d 3-times sliced cube. Left: Original mesh, Right: Cross-sectional view of g-code, where green dashed grids mean inner support structure and red/yellow line means surface layer

The overall calculation speed is also important to users. Our method processes input mesh data in only 2 passes (V-CUT and PIE-CUT), unlike the 300,000 passes described in previous studies (Nicholson, 2016). Using the proposed approach, it took only ~ 6 s to generate the parts shown in Fig. 14a and b on an MS Windows 10® based PC (AMD Ryzen® 7 2700 × 3.70 GHz 8-core processor), as shown in Table 2. Figure 18 shows a flowchart of the proposed method.

Table 2 Measurement of calculation speed
Fig. 18
figure 18

Flowchart of the overall procedure

The proposed method is versatile for most 3D-scanned human body data or graphically generated manikin mesh data. However, it is limited by its condition that the pose should be a standard A-pose. The reason for imposing this limitation on the manikin pose was that the human-feature point-detection algorithm could work only with A-pose data. If the feature/bone/joint-point information can be input manually or using other methods, our algorithm can be used on manikins of arbitrary poses.

Furthermore, our method successfully reduced filament waste by slicing raw data. As shown in Table 3, it took several days to print a half-size manikin. Therefore, converting raw mesh data to a shell structure is expected to reduce the inner support structure.

Table 3 Amount of filament length and time required for 3D printing (unit means millimeter/hour:minute)


In summary, an optimized slicing algorithm was proposed for manikins with Boolean operations between the input manikin mesh data and bounding boxes. The bounding box can easily specify the region to print. The bounding boxes’ size and directions were automatically calculated using body feature/bone/joint information by PCA. Using this simple box-based geometry, the proposed method can be easily adopted in user-friendly open-source tools like Python, MATLAB, etc. Nevertheless, the B-rep based mesh data and CSG-based Boolean operation belong to a different category, and their combination resulted in erroneous cutting. The numerical round-off error frequently occurred when the two operand meshes have the same plane. We designated this phenomenon the “CSG/B-rep incompatibility problem” and it was resolved by modifying the Boolean operator. Once the bounding boxes and modified Boolean operators were ready, a manikin’s actual slicing operation was carried out in 3 steps. The initial A-pose manikin was decomposed into 6 segments, viz. the head, bodice, arms, and legs. Each segment was then processed by V-CUT and PIE-CUT operations if the decomposed segment was bigger than the predefined printer size (beam length). The size of the OBBs could be controlled by equal-interval or non-equal-interval slicing, depending on the beam length. Besides, the user can specify the slicing position freely with feature-point information using the proposed approach. The proposed method was successfully applied on a bodice segment and whole-body mesh data, and it was found that filament waste could be reduced to less than 4.0%. These operations could be carried out in only a few seconds on a personal computer as the proposed method processes the whole manikin data only twice, unlike previously described methods. However, the total filament amount and printing time were too large, even for a half-size manikin. Making the manikin volume into a shell-like structure could decrease the amount of internal structure. Also, the input manikin could have only an A-shape due to automatic feature-point detection. In our future studies, we shall work toward making this approach more generalized.

Availability of data and materials

The datasets used and analyzed during the current study are available from the corresponding author on reasonable request.


Download references


The authors are grateful to former graduate student Ms. Ji Young Jeong for her dedicated participation in project management. Also, this work was supported by the National Research Foundation of Korea (NRF) grant funded by the Korean government (MSIT) (No. 2019R1F1A1040883)


This work was supported by the National Research Foundation of Korea (NRF) grant funded by the Korea government (MSIT) (No. 2019R1F1A1040883).

Author information

Authors and Affiliations



JYJ conducted experiments and analyzed the results with SC and IHS. SC collected literature and developed theoretical models. IHS developed programming source codes. All authors read and approved the final manuscript.

Corresponding author

Correspondence to In Hwan Sul.

Ethics declarations

Competing interests

The authors declare that they have no competing interests.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article's Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article's Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Jung, J.Y., Chee, S. & Sul, I.H. Automatic Segmentation and 3D Printing of A-shaped Manikins using a Bounding Box and Body-feature Points. Fash Text 8, 13 (2021).

Download citation

  • Received:

  • Accepted:

  • Published:

  • DOI: