glTF 메모

8837 단어 glTFtech
최근에glTF의 변환기를 썼는데 제가 정리해 드릴게요.
내용은 비망록일 뿐이니 탓하지 마세요.

📌 형식 정보

  • 공식.
  • glTF tutorial
  • 일본어 라벨
  • 📌 공구.

  • glTF Validator
  • glTF Viewer
  • 📌 나르다

  • Blender(exporter)
  • Blender(importer)
  • 📌 컨버터

  • COLLADA2GLTF
  • 📌 기타


  • JsonGridglTF 내용을 보기 쉬운 JSON 뷰어

  • GltfBrowser - 이것은glTF 내용을 분석할 수 있는 뷰어입니다. 공식 샘플 데이터를 간단하게 확인할 수 있습니다. 내장된 3D 뷰어는 매우 편리합니다
  • 📌 빠른 참조


    glTF의 공식 홈페이지에는 블러셔 패널이 있고 일본어 버전이 공개됐다. 이 블러셔 패널은 이해하기 쉽지만 입문 느낌 때문에 참고 정보가 부족하다. 공식 홈페이지에는 완전한 규격이 있어 참조할 수 있다.참고로 편하게 누르고 싶어서 만들었어요.
    glTF2_QuickRef_jp
    pdf판과 최신판은 다음과 같습니다.
  • mebiusbox/gltf
  • jpg 형식
  • pdf 형식
  • 📌 애니메이션

  • 노드만 지원하는 TRS 및 모델 무게
  • 앞으로도 다른 매개 변수(예를 들어 소재)에 대응할 수 있을 것 같다
  • 행렬 애니메이션이 지원되지 않음
  • 재료 관련 디자인은 아직 정형화되지 않았다
  • 📌 accessor, bufferView, buffer


    glTF를 처리하는 데 있어서 이 세 가지가 중요하다. 최종 데이터accessorsbufferViews의 배열 사이즈가 커진다. 교차 형식을 잘 사용하면 bufferViews의 수량을 억제할 수 있지만 성공적인 시도는 하지 못했다.

    buffer


    이진 데이터.

    bufferView


    어느 위치에서 어느 크기로 매핑되는지 지정하는 buffer를 참조합니다. 참조된 데이터는 정점 데이터용(ELMENT BUFRFER), 드로잉 로프 참조(ELMENT ARRAY BUFFER), 교차 데이터를 처리하는 정책도 지정할 수 있습니다.

    accessor


    하나bufferView를 참조하여 그 중 얼마나 많은 요소가 저장되었는지 지정하십시오. 예를 들어componentTypeVEC3,type5126,count100,bufferView에서 지정한 위치에는 100개의 3차원 벡터의 부동 데이터가 구성되어 있습니다.

    📌 스킨 애니메이션


    glTF의 간단한 모형에 대한 해설이 많기 때문에 피부 애니메이션에 대한 이야기를 정리해 보겠습니다.

    정점 데이터에 연결 인덱스와 무게 값 포함

    primitiveattributes에는 커넥터 색인JOINTS과 무게WEIGHTS가 필요합니다.하나의 정점 데이터에 같은 의미 데이터를 여러 개 추가할 수 있습니다. 이것은 의미 이름 뒤에 색인을 추가해서 지정한 것입니다. 예를 들어 JOINTSWEIGHTS 등입니다. 참고로 JOINTS_0WEIGHTS_0 등 무늬 좌표는색상도 지정할 수 있습니다. 인터페이스 인덱스와 무게 값은 인덱스입니다. 4개의 데이터가 있습니다.glTF에서 각각 지정할 수 있는 형식은 제한되어 있습니다.
    semantics
    지정할 수 있는 유형
    JOINTS
    5121 (UNSIGNED BYTE), 5123 (UNSIGNED SHORT)
    WEIGHTS
    5126 (FLOAT), 5121 (UNSIGNED BYTE) normalized, 5123 (UNSIGNED SHORT) normalized
    일반적으로TEXCOORD_0COLOR_0,JOINTSUNSIGNED SHORT입니다.

    skins

    WEIGHTS에 뼈 구조를 기술했다. 반귀속 행렬FLOAT, 이음매 배열skins, 뼈 구조의 뿌리 노드inverseBindMatrices를 설정했다.
    "skins": [{
        "inverseBindMatrices": (index of accessors),
        "joints" : [ (index of nodes)...],
        "skeleton": (index of nodes)
    }]
    
    이 데이터는 joints부터 skeleton까지 인용되었다.
    "nodes": [{
      "mesh": (index of meshes),
      "skin": (index of skins)
      ...
    }]
    

    animations

    nodeskinanimations가 있다.
    "animations": [{
      "channels": [...],
      "samplers": [...]
    }]
    
    channels에서 애니메이션 대상samplers과 적용되는 애니메이션 관건 정보channels를 지정한다. target에서 대상 노드의 값을 수정하는 종류를 지정한다.
    {
      "channels": [{
        "target": {
          "node": (index of nodes),
          "path": "translation", "rotation", "scale" or "weights"
        },
        "sampler": (index of samplers")
      }]
    }
    
    samplers에서 애니메이션의 관건 정보를 지정합니다.target에서 관건 프레임 시간(초), node에서 관건 프레임 값을 지정하고path에서 삽입 방법을 지정합니다.
    {
      "samplers": [{
        "input": (index of accessors),
        "output": (index of accessors),
        "interpolation": "LINEAR", "STEP" or "CUBICSPLINE"
      }]
    }
    

    좋은 웹페이지 즐겨찾기