Body Measurement

Overview

Overview Image

A software system has been developed that can analyze three-dimensional (3D) human body scan data. A neutral 3D model data structure as well as a data conversion software were designed to input and output various 3D data. An integrated development environment (IDE) was made for interactive as well as intuitive measurement process. Users can define custom landmarks and measurement items using a simple script language without having to modify the software. In addition to the general 3D geometry analysis functions, some special functions have also been developed to find some important landmarks such as crotch or axilla points accurately. Measured results were visualized in many ways to facilitate the analysis process.

Download

Download Image Download Image

Running the Program

Body Data Converter

Execute the SNU_BC.exe file in the folder where the program is located.

Body Measurement

1. Execute the SNU_BM.exe file in the folder where the program is located.
2. Login to your account. Login Image

Layout

Layout Image

1. Script Editor: This area is where you edit the script language.
2. Compiler Message: This area displays various execution and compile messages.
3. 2D/3D View: Human body model is displayed in 3D/various cross-section is displayed in 2D.
4. Section/Landmark/Size List: This is the area where various cross-section/landmark/size measurement result is displayed as a list after executing the script.

Basic Function

Human Body Scan Data Conversion

1. Execute the SNU_BC.exe file. Converter Program Image 2. Click , select the data to be converted. Converter Program Image 3. If the conversion is successful, a ubm file with the same file name is created in the folder where the data is located. Converter Program Image

Saving data to the server

1. After executing SNU_BM.exe, click [File]-[Remote File Manager...]. Remote File Manager Image 2. Click , open the data(Universal Body Model file(.ubm)/Body Measurement Script file(.bms)/Excel Data File(.csv)) to upload. Remote File Manager Image 3. If the upload is successful, it appears in the list, and you can rename or delete the file. Remote File Manager Image

Specify Body Data

1. Click [File]-[Specify Body Data] or Body Icon. Specify Body Data Image 2. Select the body data you want to measure from the list, Click . Specify Body Data Image

Load Main Script

1. Click [File]-[Load Main Script] or Load Icon. Load Script Image 2. Select the script corresponding to the body data from the list, Click . Load Script Image

Save Script

1. Click [File]-[Save Script] or Save Icon, press the shortcut ctrl + s. Save Script Image 2. Select a file to save from the list or enter a new file name, Click . Save Script Image

Run Script

1. Click [Analysis]-[Run Script] or Run Icon, press F9 key. Run Script Image 2. When the execution is completed successfully, various execution and compile messages are displayed in the Compiler Message area. Model and measurement elements are visualized in the 2D/3D View area, and the measurement result is displayed in the Section/Landmark/Size list area. Run Script Image

Show Results

1. Click [Analysis]-[Show Results] or Show Results Icon. Show Results Image 2. The result of the measurement by the script can be checked by the pop-up like the above, and it can be saved as a .csv file. Show Results Image

Save Landmark List

1. Click [Analysis]-[Save Landmark List]. Save Landmark Image 2. The three-dimensional coordinates of the landmark measured by the script are automatically saved in the program folder as [human body data file name]_Landmark.csv file. Save Landmark Image

Data Visualization

Data Visualization Image

When the script execution is normally completed, the human body model, the landmark, and the measurement path are displayed in a 3D shape, and the measured section/landmark/size is provided as a list. Various functions are visually provided for landmark, size measurement and analysis.

3D View

3D View Image 3D View Image

Section/Landmark/Size List Visualization

Data Visualization Image

2D View

2D View Image

Scripting

Script Editor

Script Editor Image

Command Syntax

Command type


Command,Parameter,Parameter...

General Command

Command Parameter Explanation
// Single line comment processing.
Exit Stop at current location.
Execute file_name Run the script file.
Set variable,equation Assign an equation to a variable.

Geometric Operators

Command Parameter Explanation
Centering X or YZ or XYZ etc. Move the center of the model to the center of the coordinate axis.
Move x,y,z(value) Move the model by the value along the x,y,z axis.
RotateX/Y/Z angle(degree) Rotate model by angle about X/Y/Z axis.
Scale ratio Zoom in or out of model by ratio.
GetSize After measuring the size of the model, save it in Width, Height, Depth, Top, Bottom internal variables.
GetDistance variable,p1,p2 Calculate the distance between p1 and p2, and save the result in a variable
point.x/y/z Refer to x/y/z coordinates of the point.
SetHeightRange variable,min ratio,
max ratio
Specify the y-axis range (Height * minimum ratio ~ Height * maximum ratio) based on height.
variable.min/max Refer to min/max value of variable specified by range
SetRegion region_name,center1,normal_vector1,
center2,normal_vector2,...
Set Region with intersection of upper planes defined by center and normal vector.
SetSearchRange range_name,upper_point,lower_point
FULL
Specify a hexahedral search range between two points.
FULL specifies all range.
UnionRegion region_name,region1,region2,... Specify a new region with the union of several regions.
DeleteRegion region1,region2,... Delete the specified region.
RemoveRegion region1,region2,... Actually remove the element in the specified region.
SetSearchRegion region1,region2,... Limit search range to specified region.
SetPoint point_name,[x y z]
point_name,point
Create point in x,y,z coordinates(recognized as a landmark if * is prefixed to the point_name).
SetPointDivide point_name,p1,p2,m,n Create a point internally dividing between two points by m:n.
GetDirection point_name,p1,p2 Create a point with the coordinates of the direction vector from p1 to p2
SetPointInverse point_name,point Create a new point with the opposite vector of points.
RotatePoint point,x_angle,y_angle,z_angle Rotate the specified point by an angle relative to the x,y,z axes.
MovePoint point,dx,dy,dz Moves the specified point by dx, dy, dz.
GetNormal point_name,point,X/Y/Z Create a new point with the specified point rotated 90 degrees counterclockwise with relative to the X/Y/Z axis.
GetSection section_name,point,normal_vector Create a cross section where the plane consisting of point and normal vector intersects the model.
GetSectionRegion section_name,point,normal_vector,
region
Create a cross section where the plane consisting of point and normal vector intersects the model within the specified region.
GetSection3P section_name,p1,p2,p3 Create a cross section where the plane consisting of 3 points intersects the model.
section.width/height/girth Refer to the width/height/girth of the section.
SetPlane plane_name,point,normal_vector Create a plane consisting of point and normal vector.
DivideSection section,plane,section_name1,
section_name2
Section is divided into a plane to save the section in the normal vector direction to 1 and the opposite direction to 2.
GetFarthestPoint point_name,section,p1,p2 Obtain the point farthest from the line segment with two points as end points among the points on the section.
GetFarthestPointSil point_name,Front/Side,p1,p2 Obtain the point farthest from the line segment with two points as end points among the points on the front/side silhouette.
GetSectionIntersection point_name,section1,section2,
MaxX/Y/Z or MinX/Y/Z
Find the point that matches the condition from the intersections of sections 1 and 2.
GetSectionDividePoint point_name,section,p1,p2,m,n,
MaxX/Y/Z or MinX/Y/Z
Internalize the point between points 1 and 2 in m: n and obtain a point that matches the condition.
GetSectionCenter point_name,section_name Adds the center of the specified section as a point name.
GetSectionByGirth section_name,region_name,
MAX/MIN,HeightRange
section_name,region_name,
MAX/MIN,landmark1,landmark2
Find the longest/shortest circumference in the HeightRange range (or between two landmarks relative to the y axis) within the specified region and save it as a section name.
GetConvexHull section1,Section2,... Create a convex hull enclosing each section.
GetMaxPeak2D point_name,section,X/Y Find the point with the largest X/Y coordinate in the plane projected on the plane.
GetMinPeak2D point_name,section,X/Y Find the point with the smallest X/Y coordinate in the plane projected on the plane.
SortSection2D section_name,X/Y Align points on 2D section based on X/Y coordinates.
SetPeakSearchThreshold equation When searching for a peak, if the X/Y coordinate value difference is larger than the equation, it is not regarded as a continuous point.
SetClosedPathThreshold equation When searching for a closed path, points that are farther apart from the equation are not considered continuous points.
SetSectionSearchStep equation Specify the interval to find the section of GetSectionByGirth. As the number increases, the search speed increases.

Measurement Operators

Command Parameter Explanation
GetMaxX/Y/ZPoint point_name,section
point_name,range_variable
point_name,section,range_variable
Save the point with the largest value of X/Y/Z coordinates within a section or Height Range. (If * is prefixed to the point name, it is recognized as a landmark.)
GetMinX/Y/ZPoint point_name,section
point_name,range_variable
point_name,section,range_variable
Save the point with the smallest value of X/Y/Z coordinates within a section or Height Range. (If * is prefixed to the point name, it is recognized as a landmark.)
SetResult result_name,equation Add equation value to Result List.
SetLandmark landmark_name,point Define a point as a new landmark.
SetHeightResult result_name,p1
result_name,p1,p2
Height from floor to p1.
Height(Y coordinate difference) between p1 and p2.
SetWidthResult result_name,p1,p2 Width(X coordinate difference) between p1 and p2.
SetDepthResult result_name,p1,p2 Depth(Z coordinate difference) between p1 and p2.
SetDistanceResult result_name,p1,p2 Line length between p1 and p2.
SetSectionPath result_name,section Calculate the length of a convex hull of a section as a path.
SetPathResult3 result_name,p1,p2,p3,Max/Min Save the long/short path of the convex hull passing through three points as a result and display it as a path.
SetPathResult2 result_name,p1,p2,Front/Side/Top,
Max/Min/Front/Back/Left/Right/Up/Down
Save a long/short path cut to a section connecting two points on the front/side/top and display the path. You can select whether to use the front, back, left, right, top, or bottom.
SetSubPathResult result_name,path_name,p1,p2 Creates a new Path from p1 to p2 in the specified Path and adds it to the result.
SubdividePath path_name,segment_length Smooth the path by dividing it into shorter lengths.
SetAngleResult result_name,p1,p2,p3,Front/Side/Top Find angles and add paths when looking at the angles between points 1 and 2 and the point(vector) 3 in Front/Side/Top.
SetSplinePathResult result_name,p1,p2,p3,...,pn If there are three or more points and p1 and pn are the same, calculate the length by considering closed path.
SetPointByCompass point_name,p1,p2,v1,CW/CCW p2 is rotated perpendicular to v1 with respect to p1 to obtain a point where it meets the human body. Direction is clockwise/ counterclockwise.

Special Operators

Command Parameter Explanation
FindVertex point_name,section_name Find Vertex landmark at the specified section.
FindCrotch point_name Seeking Crotch landmark from front silhouette.
FindArmpit left_armpit,right_armpit Seeking Armfit landmark from front silhouette.
LoadLandmark Load landmark coordinates of .txt file with the same name as the human body data file.
LoadCSVLandmark Load landmark coordinates of .csv file with the same name as the human body data file.
MoveLandmark landmark_name,dm Move the landmark by dm and find the nearest human body surface point.
SaveLandmark Save the coordinates of the measured landmark as a .csv file with the same name as the human body data file.
SaveResult Save the current measurement data as a .csv file with the same body file name.
LoadTable table_name,file_name Load table from file into script folder.
GetSectionsFromTable table_name,ID(CURR_BODY) Create sections by loading the height information and section name from the specified ID of the table.
SaveRegionAsMSH region_name Save region as body file_region name.msh.
CalculateVolume mesh_name Calculate the volume of the mesh generated by SaveRegionAsMSH.

Script Example