3차원 인체 스캔 데이터를 분석할 수 있는 소프트웨어 시스템으로 3D 스캐너로부터 얻은 다양한 스캔 데이터를 변환하여 사용할 수 있습니다. 직관적인 인체 측정 프로세스를 위해 통합 개발 환경으로 만들어졌으며, 사용자는 소프트웨어를 수정하는 번거로움없이 간단한 스크립트 언어를 사용하여 랜드마크 및 측정 항목을 정의하고 측정할 수 있습니다. 측정 결과를 시각화하여 분석이 용이합니다. 또한 겨드랑이와 같이 찾기 어려우나 인체 측정에 꼭 필요한 랜드마크를 쉽게 찾는 등 특수 기능들을 활용하여 더욱 편리하게 인체 측정 작업을 수행할 수 있습니다.
1. Script Editor: 스크립트 언어를 작성하는 영역입니다.
2. Compiler Message:컨파일 메시지가 나타나는 영역입니다.
3. 2D/3D View: 2D 단면과 3D 인체 데이터가 시각화되는 영역입니다.
4. Section/Landmark/Size List:스크립트 실행으로 측정된 단면/랜드마크/사이즈의 결과가 표시되는 영역입니다.
스크립트 실행이 정상적으로 완료되면 인체 모델, 단면, 랜드마크 및 측정 경로가 3D 형태로 표시되고, 측정된 단면/랜드마크/사이즈가 목록으로 제공됩니다.랜드마크, 사이즈 측정 및 분석을 위해 다양한 시각화 기능이 제공됩니다.
명령어 | 파라메터 | 설명 |
---|---|---|
// | 한 줄 주석 처리 | |
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로 얻은 메쉬의 부피를 계산 |