주석 작업
주석 작업
개요
Frame.io의 주석은 색상, 좌표 및 크기가 포함된 직렬화된 그리기 오브젝트의 JSON blob으로 표현됩니다. blob에서는 바깥쪽 경계 쌍을 제외한 모든 따옴표가 슬래시로 이스케이프 처리됩니다(예: \"key\":\"value\"). arrow, rect, line의 세 가지 기본 도형과 자유형 그리기가 있습니다. 자유형 그리기는 이 가이드의 범위를 벗어나지만 직렬화된 좌표 데이터의 동일한 기본 원칙을 따릅니다.
좌표계
모든 도형은 좌측 상단이 원점인 데카르트 좌표계에 배치되며, 각 축의 배율은 0에서 1 사이입니다.
기본 도형 데이터
모든 도형은 좌표와 스타일 데이터의 조합을 통해 위 평면에 배치됩니다. 각 도형은 몇 가지 공통 속성을 공유하지만, 좌표계를 다루는 방식은 조금씩 다릅니다.
거리/너비/높이에 대한 모든 속성은 주 좌표 눈금과 동일한 0~1 배율을 사용하지만, 일반적으로는 해당 도형의 원점을 기준으로 측정됩니다.
즉, 비디오가 640x480 뷰포트에 표시되는 경우 x=1은 해당 컨텍스트에서 절대적인 640px와 같습니다. 이를 통해 주석은 화면 크기, 해상도 및 컨텍스트가 변경되더라도 상대적인 위치를 유지하면서 매끄럽게 확장 또는 축소될 수 있습니다. 참고: rect의 원점은 그리기 원점과 관계없이 항상 도형의 좌측 상단 모서리입니다.
공통 속성
| 특성 | 설명 |
|---|---|
tool | arrow, rect, 또는 line. 어떤 도형이 생성되는지 나타냅니다. |
color | 해당 도형의 6자리 16진수 색상 코드입니다. |
size | 도형 선의 픽셀 크기입니다. 화살표의 경우, 선의 끝부분 너비는 프로그램적으로 결정되므로 이 값은 선의 시작 부분에만 적용됩니다. |
화살표
| 특성 | 설명 |
|---|---|
x | 화살표 원점의 x 좌표. |
y | 화살표 원점의 y 좌표. |
w | 화살표 원점을 기준으로 시작부터 끝까지 화살표의 y축 위치 차이. |
h | 화살표 원점을 기준으로 시작부터 끝까지 화살표의 x축 위치 차이. |
직사각형
| 특성 | 설명 |
|---|---|
x | 직사각형 좌측 상단 모서리의 x 좌표. |
y | 직사각형 좌측 상단 모서리의 y 좌표. |
w | 좌측 상단 직사각형 원점을 기준으로 한 직사각형의 너비. |
h | 좌측 상단 직사각형 원점을 기준으로 한 직사각형의 높이. |
ix | 직사각형의 x 도면 원점. (필수 아님). |
iy | 직사각형의 y 도면 원점. (필수 아님). |
radius | 직사각형 모서리의 둥근 반경. 반드시 양수여야 합니다. 150을 초과하는 값은 시각적으로 구별되지 않습니다. |
선
| 특성 | 설명 |
|---|---|
x1 | 선 원점의 x 좌표. |
y1 | 선 원점의 y 좌표. |
x2 | 선 종점(끝점)의 x 좌표. 이미지 평면의 절대값. |
y2 | 선 종점의 y 좌표. 이미지 평면의 절대값. |
간단한 예시: 좌표 평면
{"annotation": "[{\"tool\":\"line\",\"color\":\"#E74A3C\",\"size\":3,\"x1\":0.0028530670470756064,\"y1\":0.012680297987002695,\"x2\":0.9964336661911555,\"y2\":0.9903312727849104},{\"tool\":\"line\",\"color\":\"#34A3DB\",\"size\":3,\"x1\":0.004992867332382311,\"y1\":0.98779521318751,\"x2\":0.9942938659058488,\"y2\":0.012680297987002695}]}
1 { 2 "annotation": [ 3 { 4 "tool": "line", 5 "color": "#E74A3C", 6 "size": 3, 7 "x1": 0.0028530670470756064, 8 "y1": 0.012680297987002695, 9 "x2": 0.9964336661911555, 10 "y2": 0.9903312727849104 11 }, 12 { 13 "tool": "line", 14 "color": "#34A3DB", 15 "size": 3, 16 "x1": 0.004992867332382311, 17 "y1": 0.98779521318751, 18 "x2": 0.9942938659058488, 19 "y2": 0.012680297987002695 20 } 21 ] 22 }
분류
1 { 2 "tool":"line", 3 "color":"#34A3DB", 4 "size":3, 5 "x1":0.004992867332382311, 6 "y1":0.98779521318751, 7 "x2":0.9942938659058488, 8 "y2":0.012680297987002695 9 }
1 { 2 "tool":"line", 3 "color":"#E74A3C", 4 "size":3, 5 "x1":0.0028530670470756064, 6 "y1":0.012680297987002695, 7 "x2":0.9964336661911555, 8 "y2":0.9903312727849104 9 }
복잡한 예시: 다수의 직사각형
{"annotation": "[{\"tool\":\"rect\",\"color\":\"#34A3DB\",\"size\":3,\"x\":0.008426966292134831,\"y\":0.02663337494798169,\"w\":0.0702247191011236,\"h\":0.10986267166042447,\"ix\":0.008426966292134831,\"iy\":0.02663337494798169,\"radius\":8},{\"tool\":\"rect\",\"color\":\"#1ABCA1\",\"size\":3,\"x\":0.8932584269662921,\"y\":0.0449438202247191,\"w\":0.08895131086142327,\"h\":0.35122763212650854,\"ix\":0.8932584269662921,\"iy\":0.0449438202247191,\"radius\":8},{\"tool\":\"rect\",\"color\":\"#E67422\",\"size\":3,\"x\":0.023408239700374533,\"y\":0.7873491468997087,\"w\":0.1254681647940075,\"h\":0.2047440699126093,\"ix\":0.023408239700374533,\"iy\":0.7873491468997087,\"radius\":8},{\"tool\":\"rect\",\"color\":\"#E74A3C\",\"size\":3,\"x\":0.6919475655430711,\"y\":0.5409904286308781,\"w\":0.29868913857677903,\"h\":0.4427798585101955,\"ix\":0.6919475655430711,\"iy\":0.5409904286308781,\"radius\":8},{\"tool\":\"arrow\",\"color\":\"#E74A3C\",\"size\":3,\"x\":0.25374531835205993,\"y\":0.23137744486059092,\"w\":0.24250936329588013,\"h\":0}]}"
1 { 2 "annotation": [ 3 { 4 "tool": "rect", 5 "color": "#34A3DB", 6 "size": 3, 7 "x": 0.008426966292134831, 8 "y": 0.02663337494798169, 9 "w": 0.0702247191011236, 10 "h": 0.10986267166042447, 11 "ix": 0.008426966292134831, 12 "iy": 0.02663337494798169, 13 "radius": 8 14 }, 15 { 16 "tool": "rect", 17 "color": "#1ABCA1", 18 "size": 3, 19 "x": 0.8932584269662921, 20 "y": 0.0449438202247191, 21 "w": 0.08895131086142327, 22 "h": 0.35122763212650854, 23 "ix": 0.8932584269662921, 24 "iy": 0.0449438202247191, 25 "radius": 8 26 }, 27 { 28 "tool": "rect", 29 "color": "#E67422", 30 "size": 3, 31 "x": 0.023408239700374533, 32 "y": 0.7873491468997087, 33 "w": 0.1254681647940075, 34 "h": 0.2047440699126093, 35 "ix": 0.023408239700374533, 36 "iy": 0.7873491468997087, 37 "radius": 8 38 }, 39 { 40 "tool": "rect", 41 "color": "#E74A3C", 42 "size": 3, 43 "x": 0.6919475655430711, 44 "y": 0.5409904286308781, 45 "w": 0.29868913857677903, 46 "h": 0.4427798585101955, 47 "ix": 0.6919475655430711, 48 "iy": 0.5409904286308781, 49 "radius": 8 50 }, 51 { 52 "tool": "arrow", 53 "color": "#E74A3C", 54 "size": 3, 55 "x": 0.25374531835205993, 56 "y": 0.23137744486059092, 57 "w": 0.24250936329588013, 58 "h": 0 59 } 60 ] 61 }
분류
이 모든 것을 염두에 두고, 주석 좌표계에 대한 보다 명확한 이해를 돕기 위해 위 이미지의 각 요소를 배치해 보는 것이 유용합니다. 이 예시에서 각 사각형의 size 및 radius는 Frame.io UI 기본값을 따릅니다.
파란색 직사각형
1 { 2 "tool":"rect", 3 "color":"#34A3DB", 4 "size":3, 5 "x":0.008426966292134831, 6 "y":0.02663337494798169, 7 "w":0.0702247191011236, 8 "h":0.10986267166042447, 9 "ix":0.008426966292134831, 10 "iy":0.02663337494798169, 11 "radius":8 12 }
녹색 직사각형
1 { 2 "tool":"rect", 3 "color":"#1ABCA1", 4 "size":3, 5 "x":0.8932584269662921, 6 "y":0.0449438202247191, 7 "w":0.08895131086142327, 8 "h":0.35122763212650854, 9 "ix":0.8932584269662921, 10 "iy":0.0449438202247191, 11 "radius":8 12 }
빨간색 직사각형
1 { 2 "tool":"rect", 3 "color":"#E74A3C", 4 "size":3, 5 "x":0.6919475655430711, 6 "y":0.5409904286308781, 7 "w":0.29868913857677903, 8 "h":0.4427798585101955, 9 "ix":0.6919475655430711, 10 "iy":0.5409904286308781, 11 "radius":8 12 }
주황색 직사각형
1 { 2 "tool":"rect", 3 "color":"#E67422", 4 "size":3, 5 "x":0.023408239700374533, 6 "y":0.7873491468997087, 7 "w":0.1254681647940075, 8 "h":0.2047440699126093, 9 "ix":0.023408239700374533, 10 "iy":0.7873491468997087, 11 "radius":8 12 }
빨간색 화살표
1 { 2 "tool":"arrow", 3 "color":"#E74A3C", 4 "size":3, 5 "x":0.25374531835205993, 6 "y":0.23137744486059092, 7 "w":0.24250936329588013, 8 "h":0 9 }