상세 컨텐츠

본문 제목

glTF - Accessors

멀티미디어/이미지(Image)

by cepiloth 2018. 11. 20. 17:28

본문

728x90
반응형


  • Accessors 객체는 버퍼뷰를 참조하며 이 버퍼뷰의 데이터 유형과 레이아웃을 정의하는 속성을 포함합니다.


데이터 유형 (Data type)


  • accessor 데이터의 유형은 componentType 속성과 type 속성으로 인코딩 되어 있습니다. type 속성의 값은 데이터 요소가 matrices, vectors, scalars 인지 여부를 지정하는 문자열입니다. 예를 들면 값이 "SCALAR" 라면 scalar 값이고, "VEC3" 은 3D 벡터, "MAT4" 은 4 x 4 행렬 입니다.

  • componentType 은 이러한 데이터 요소의 구성 요소로 유형을 지정 합니다.
  • 이것은 GL 상수를 의미하며 5126은 FLOAT, 5123(UNSIGNED_SHORT) 를 의미 합니다.

  • 이러한 속성의 다양한 조합을 사용하여 임의의 데이터 형식을 나타 낼 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  "accessors" : [
    {
      "bufferView" : 0,
      "byteOffset" : 0,
      "componentType" : 5123,
      "count" : 3,
      "type" : "SCALAR",
      "max" : [ 2 ],
      "min" : [ 0 ]
    },
    {
      "bufferView" : 1,
      "byteOffset" : 0,
      "componentType" : 5126,
      "count" : 3,
      "type" : "VEC3",
      "max" : [ 1.0, 1.0, 0.0 ],
      "min" : [ 0.0, 0.0, 0.0 ]
    }
  ],
cs

  • 첫 번째 Accessor 는 인덱스가 포함됨 bufferView 를 가리키며 인덱스를 포함하는 버퍼 데이터 부분을 정의 합니다. type 은 "SCALAR" 이며 componentType 은 5123(UNSIGNED_SHORT)입니다. 즉 인덱스는 부호없는 SHORT 자료형입니다.

  • 두 번째 Accessor 객체는 인덱스 1을 갖는 버퍼뷰를 참조하며, 이는 정점 속성을 포함하는 버퍼 데이터의 부분을 정의합니다. type은 "VEC3" 이며 componentType 은 5126 (FLOAT) 입니다. 따라서 이 접근자는 부동 소수점 구성 요소가 있는 3D 벡터를 나타 냅니다.

데이터 레이아웃 (Data Layout)

  • Accessor 의 추가 속성은 데이터 레이아웃을 열거합니다. count 속성은 구성되는 데이터 요소의 수를 나타 냅니다. 위의 예제에서 접근자의 count 속성은 각각 3 입니다. 삼각형의 3개의 정점과 3개의 정점을 각각 나타냅니다. 각 accessor 는 byteOffset 속성도 있습니다. 

  • 위의 예제에서 각 버퍼 뷰에 대해 하나의 accessor 만 있었기 때문에 두 accessor 모두 byeteoffset 이 0 입니다. 하지만 여러 접근자가 동일한 bufferView를 참조하면 byteOffset은 참조되는 bufferView를 기준으로 Accessor의 데이터가 시작되는 위치로 나타 냅니다.


데이터 정렬 (Data alignment)

  • Accessor 에 의해 참조되는 데이터는 렌더링을 위해 그래픽 카드로 전송되거나 호스트 측에서 애니메이션 또는 스키닝 데이터로 사용될 수 있습니다. 따라서 Accessor 의 데이터는 데이터 유형에 따라 정렬 되어야 합니다.
  • 예를 들면, componentType 이 FLOAT 이면 데이터는 4 바이트 단위로 정렬되어야 합니다. 단일 float 은 4 바이트로 구성되어 있기 때문입니다.
  • Accessor 의 정렬 조건은 해당 버퍼 뷰와 기본 버퍼를 참조합니다. 

  • 특히 정렬 요구 사항은 다음과 같습니다.
  • Accessor 의 byteOffset 은 해당 componentType 의 크기로 나눌 수 있어야 합니다.
  • Accessor 의 byteOffset 과 그것이 참조하는 bufferview 의  byteOffset 의 합은 해당 componentType 의 크기로 나눌 수 있어야 합니다.



데이터 인터리빙


  • 속성들의 데이터는 구조체의 배열 형태로 단일 버퍼뷰에 저장되어 있다. 단일 버퍼뷰는 비주월식 방식으로  데이터의 정점 포지션과 정점 법선을 포함하고 있다.

  • Accessor의 byteOffset은 각 속성에 대한 첫 번째 관련 데이터 엘리먼트의 시작을 정의하고 bufferView는 추가적인 byteStride 속성을 정의 합니다.

  • 바이트 스트라이드는 Accessor 의 한 엘리먼트의 시작과 다음 엘리먼트의 시작 사이의 바이트 수 입니다.


 


  • 바이트 오프셋의 24 이면 위치, 노멀 접근자의 byteOffset 은 각각 12를 의미 합니다.



데이터 콘텐츠 


  • 접근하는 또한 데이터의 내용을 요약하는 min, max 속성도 포합합니다. 접근자에 각 위치로 이동할 최소값과 최대값을 포함하고 있습니다. 




728x90
반응형

관련글 더보기

댓글 영역