Body Measurement

개요

Overview Image

3차원 인체 스캔 데이터를 분석할 수 있는 소프트웨어 시스템으로 3D 스캐너로부터 얻은 다양한 스캔 데이터를 변환하여 사용할 수 있습니다. 직관적인 인체 측정 프로세스를 위해 통합 개발 환경으로 만들어졌으며, 사용자는 소프트웨어를 수정하는 번거로움없이 간단한 스크립트 언어를 사용하여 랜드마크 및 측정 항목을 정의하고 측정할 수 있습니다. 측정 결과를 시각화하여 분석이 용이합니다. 또한 겨드랑이와 같이 찾기 어려우나 인체 측정에 꼭 필요한 랜드마크를 쉽게 찾는 등 특수 기능들을 활용하여 더욱 편리하게 인체 측정 작업을 수행할 수 있습니다.

다운로드

Download Image Download Image

프로그램 실행

인체 데이터 변환

프로그램이 설치된 폴더 안에 SNU_BC.exe 파일을 실행하세요.

인체 측정

1. 프로그램이 설치된 폴더 안에 SNU_BM.exe 파일을 실행하세요.
2. 로그인하세요. Login Image

레이아웃

Layout Image

1. Script Editor: 스크립트 언어를 작성하는 영역입니다.
2. Compiler Message:컨파일 메시지가 나타나는 영역입니다.
3. 2D/3D View: 2D 단면과 3D 인체 데이터가 시각화되는 영역입니다.
4. Section/Landmark/Size List:스크립트 실행으로 측정된 단면/랜드마크/사이즈의 결과가 표시되는 영역입니다.

주요 기능

인체 스캔 데이터 변환

1. SNU_BC.exe 실행하세요. Converter Program Image 2. 를 클릭하고, 변환하고자 하는 인체 스캔 데이터를 선택하세요. Converter Program Image 3. 변환이 성공하면, 인체 스캔 데이터가 있던 동일 폴더에 동일한 이름의 ubm 파일이 생성됩니다. Converter Program Image

서버에 데이터 저장

1. SNU_BM.exe 파일을 실행하고, [File]-[Remote File Manager...] 클릭하세요. Remote File Manager Image 2. 를 클릭하고, 업로드를 원하는 데이터(Universal Body Model file(.ubm)/Body Measurement Script file(.bms)/Excel Data File(.csv))를 선택하세요. Remote File Manager Image 3. 업로드가 성공하면, 업로드한 파일이 목록에 나타나며 파일의 이름을 변경하거나 삭제할 수 있습니다. Remote File Manager Image

인체 데이터 불러오기

1. [File]-[Specify Body Data] 또는 Body Icon 클릭하세요. Specify Body Data Image 2. 목록에서 측정을 원하는 인체 데이터를 선택하고, 를 클릭하세요. Specify Body Data Image

스크립트 불러오기

1. [File]-[Load Main Script] 또는 Load Icon 클릭하세요. Load Script Image 2. 불러온 인체 데이터에 맞는 스크립트를 선택하고, 를 클릭하세요. Load Script Image

스크립트 저장하기

1. [File]-[Save Script] 또는 Save Icon를 클릭하거나, 단축키 ctrl + s를 누르세요. Save Script Image 2. 목록에서 덮어 쓸 파일을 선택하거나 새 파일 이름을 입력하고, 를 클릭하세요. Save Script Image

스크립트 실행

1. [Analysis]-[Run Script] 또는 Run Icon를 클릭하거나, F9 키를 누르세요. Run Script Image 2. 실행이 성공적으로 완료되면 컴파일러 메시지 영역에 다양한 컴파일 메시지가 표시되며, 2D/3D 뷰 영역에 인체 모델 및 측정 요소가 시각화되며, 단면/랜드마크/사이즈 목록 영역에 측정 결과가 표시됩니다. Run Script Image

결과 보기

1. [Analysis]-[Show Results] 또는 Show Results Icon를 클릭하세요. Show Results Image 2. 측정한 결과를 아래와 같은 팝업창에서 확인 가능하며, csv 파일로 저장할 수 있습니다. Show Results Image

랜드마크 목록 저장

1. [Analysis]-[Save Landmark List]를 클릭하세요. Save Landmark Image 2. 측정된 랜드마크의 3차원 좌표들이 [인체 데이터 파일명]_Landmark.csv 파일로 저장됩니다. Save Landmark Image

인체 데이터 시각화

Data Visualization Image

스크립트 실행이 정상적으로 완료되면 인체 모델, 단면, 랜드마크 및 측정 경로가 3D 형태로 표시되고, 측정된 단면/랜드마크/사이즈가 목록으로 제공됩니다.랜드마크, 사이즈 측정 및 분석을 위해 다양한 시각화 기능이 제공됩니다.

3D 뷰

3D View Image 3D View Image

단면/랜드마크/사이즈 목록 시각화

Data Visualization Image

2D 뷰

2D View Image

스크립트 작성

스크립트 에디터

Script Editor Image

명령어 구문

명령어 어법


Command,Parameter,Parameter...

일반 명령어

명령어 파라메터 설명
// 한 줄 주석 처리
Exit 현 위치에서 스크립트 실행 중지
Execute file_name 스크립트 파일 실행
Set variable,equation 수식을 변수로 지정

기하학 명령어

명령어 파라메터 설명
Centering X or YZ or XYZ etc. 인체 모델을 좌표 중심으로 이동
Move x,y,z(value) 인체 모델을 x,y,z값만큼 이동
RotateX/Y/Z angle(degree) X/Y/Z/축을 기준으로 각도만큼 회전
Scale ratio 모델 크키를 비율만큼 조정
GetSize 모델의 경계를 측정하고, Width, Height, Depth, Top, Bottom 내부 변수에 저장
GetDistance variable,p1,p2 p1과 p2 사이에 거리를 측정하고, 그 결과를 변수로 저장
point.x/y/z 포인트의 x/y/z 좌표를 참조
SetHeightRange variable,min ratio,
max ratio
키를 기준으로 y축의 범위(키 * 최소 비율 ~ 키 * 최고 비율) 지정
variable.min/max 범위로 지정된 변수의 min/max값 참조
SetRegion region_name,center1,normal_vector1,
center2,normal_vector2,...
중심점과 법선 벡터로 이루어진 단면들의 교집합으로 영역을 설정
SetSearchRange range_name,upper_point,lower_point
FULL
두 점 사이의 직육면체 공간을 검색 범위로 지정
FULL 모든 범위로 영역을 지정
UnionRegion region_name,region1,region2,... 여러 영역들의 합집합으로 새 영역을 지정
DeleteRegion region1,region2,... 지정된 영역을 삭제
RemoveRegion region1,region2,... 지정된 영역의 인체 데이터를 삭제
SetSearchRegion region1,region2,... 특정 영역으로 검색 범위를 제한
SetPoint point_name,[x y z]
point_name,point
x,y,z 좌표의 점 생성(*를 점이름 앞에 붙이면 랜드마크로 인식)
SetPointDivide point_name,p1,p2,m,n p1, p2 점을 m:n으로 내분하는 점을 생성
GetDirection point_name,p1,p2 p1에서 p2로 향하는 방향 벡터 생성
SetPointInverse point_name,point 반대 방향 벡터 생성
RotatePoint point,x_angle,y_angle,z_angle 방향 벡터를 X/Y/Z 축에서 각도만큼 회전
MovePoint point,dx,dy,dz 점을 dx, dy, dz만큼 이동
GetNormal point_name,point,X/Y/Z X/Y/Z 축을 기준으로 방향 벡터를 시계방향으로 90도 회전한 법선 벡터를 생성
GetSection section_name,point,normal_vector 점과 법선 벡터로 이루어진 평면과 만나는 인체 모델의 단면을 생성
GetSectionRegion section_name,point,normal_vector,
region
지정된 영역 내에서 점과 법선 벡터로 이루어진 평면과 만나는 인체 모델의 단면을 생성
GetSection3P section_name,p1,p2,p3 세 점으로 이루어진 평면과 만나는 인체 모델의 단면을 생성
section.width/height/girth 단면의 너비/높이/둘레를 참조
SetPlane plane_name,point,normal_vector 점과 법선 벡터로 이루어진 평면을 생성
DivideSection section,plane,section_name1,
section_name2
지정된 단면을 평면으로 나누어 단면1과 2로 지정
GetFarthestPoint point_name,section,p1,p2 p1과 p2를 끝점으로 하는 직선과 단면에 속하는 점들 중에서 가장 먼 점을 지정
GetFarthestPointSil point_name,Front/Side,p1,p2 p1과 p2를 끝점으로 하는 직선과 인체 모델의 앞/옆 실루엣을 이루는 점들 중에서 가장 먼 점을 지정
GetSectionIntersection point_name,section1,section2,
MaxX/Y/Z or MinX/Y/Z
단면 1과 2의 교차점 중 조건에 맞는 점을 지정
GetSectionDividePoint point_name,section,p1,p2,m,n,
MaxX/Y/Z or MinX/Y/Z
단면에서 점1과 2를 m:n으로 내분하는 점과 조건에 맞는 점을 지정
GetSectionCenter point_name,section_name 단면의 중심점을 찾아 저장
GetSectionByGirth section_name,region_name,
MAX/MIN,HeightRange
section_name,region_name,
MAX/MIN,landmark1,landmark2
특정 영역 내 높이 범위(또는 두 점의 y좌표 범위)에서 둘레가 가장 큰/작은 찾고 단면으로 지정
GetConvexHull section1,Section2,... 각각 단면의 Convex Hull를 구함
GetMaxPeak2D point_name,section,X/Y 평면 위에 투영된 점들 중 X/Y로 가장 큰 값을 찾아 점으로 지정
GetMinPeak2D point_name,section,X/Y 평면 위에 투영된 점들 중 X/Y로 가장 작은 값을 찾아 점으로 지정
SortSection2D section_name,X/Y X/Y 좌표를 기준으로 2차원 단면에서 점들을 배열
SetPeakSearchThreshold equation 피크를 검색할 때, 좌표값의 차이가 수식보다 크면 검색에서 제외
SetClosedPathThreshold equation 닫힌 경로를 탐색할 때, 좌표값의 차이가 수식보다 크면 연속된 점으로 간주하지 않음.
SetSectionSearchStep equation GetSectionByGirth 검색 간격을 지정. 수가 증가하면 검색 속도 증가

측정 명령어

명령어 파라메터 설명
GetMaxX/Y/ZPoint point_name,section
point_name,range_variable
point_name,section,range_variable
단면이나 높이 범위에서 X/Y/Z 좌표가 가장 큰 점을 저장(*를 점이름 앞에 붙이면, 랜드마크로 인식)
GetMinX/Y/ZPoint point_name,section
point_name,range_variable
point_name,section,range_variable
단면이나 높이 범위에서 X/Y/Z 좌표가 가장 작은 점을 저장(*를 점이름 앞에 붙이면, 랜드마크로 인식)
SetResult result_name,equation 결과 목록에 수식을 저장
SetLandmark landmark_name,point 점을 랜드마크로 지정
SetHeightResult result_name,p1
result_name,p1,p2
바닥으로부터 p1의 높이를 구함.
p1, p2 사이 높이 차(Y 좌표 차이)
SetWidthResult result_name,p1,p2 p1, p2 사이 너비 차(X 좌표 차이)
SetDepthResult result_name,p1,p2 p1, p2 사이 깊이 차(Z 좌표 차이)
SetDistanceResult result_name,p1,p2 p1, p2 사이 직선 거리
SetSectionPath result_name,section 단면의 Convex Hull를 계산
SetPathResult3 result_name,p1,p2,p3,Max/Min 3점을 지나는 Max/Min의 Convex Hull를 구하고, 그 경로를 3D 뷰에 표시
SetPathResult2 result_name,p1,p2,Front/Side/Top,
Max/Min/Front/Back/Left/Right/Up/Down
2점을 지나고 조건을 만족하는 Convex Hull를 구하고, 그 경로를 2D 뷰에 표시
SetSubPathResult result_name,path_name,p1,p2 지정된 경로 중 두 점 사이 경로를 새롭게 구함.
SubdividePath path_name,segment_length 지정된 경로를 부드럽게 수정
SetAngleResult result_name,p1,p2,p3,Front/Side/Top p1에서 p2로 향하는 벡터와 p3 방향 벡터 사이의 각도를 측정
SetSplinePathResult result_name,p1,p2,p3,...,pn 3점 이상이고 p1과 pn이 같으면, 닫힌 경로로 간주하고 길이를 구함.
SetPointByCompass point_name,p1,p2,v1,CW/CCW p1의 v1 방향으로 수직인 벡터를 기준으로 p2를 시계/반시계 방향으로 회전하면 인체와 만다는 점을 구함.

특수 명령어

명령어 파라메터 설명
FindVertex point_name,section_name 지정된 단면에서 머리마루점을 찾음.
FindCrotch point_name 인체 모델의 앞 실루엣에서 샅점을 찾음.
FindArmpit left_armpit,right_armpit 인체 모델의 앞 실루엣에서 겨드랑이점을 찾음.
LoadLandmark 인체 데이터와 동일한 이름의 txt 파일로부터 랜드마크의 좌표를 불러옴.
LoadCSVLandmark 인체 데이터와 동일한 이름의 csv 파일로부터 랜드마크의 좌표를 불러옴.
MoveLandmark landmark_name,dm 랜드마크를 dm만큼 이동하여 인체 모델에서 가장 가까운 점을 찾음.
SaveLandmark 측정된 랜드마크들을 모델 데이터와 동일한 이름의 csv 파일로 저장
SaveResult 측정된 결과를 모델 데이터와 동일한 이름의 csv 파일로 저장
LoadTable table_name,file_name 스크립트 폴더 내의 파일로부터 테이블을 불러옴.
GetSectionsFromTable table_name,ID(CURR_BODY) 불러온 테이블에서 ID를 검색하여 높이 정보로부터 단면을 얻음.
SaveRegionAsMSH region_name 인체 데이터명_영역명.msh 파일로 영역의 인체 데이터를 메쉬로 저장
CalculateVolume mesh_name SaveRegionAsMSH로 얻은 메쉬의 부피를 계산

스크립트 예시