PITM資料格式

PITM 是 glTF-2.0 和獨特擴充及附加功能的組合。PITM 以 GLB 容器格式序列化。擴充的規範在 Protocol Buffers 中進行了描述。

Python 範例程式碼包括一個實用程式類,用於使用某些 PITM 規範導出工藝品和配件。請參閱下面的文件。

https://github.com/ClusterVR/PITMSample/blob/main/python/pitm.py

glTF結構

PITM 必須是有效的 glTF。

PITM 有一個場景。此外,對外部資源(例如緩衝區 URI)的引用也不可用。所有紋理、網格等資料必須包含在 GLB 檔案內。

您需要在 glTF 頂層有一個 ClusterItem 擴充,並且在每個節點上都有一個 ClusterItemNode 擴充

PITM 的基本結構對於工藝品和配件來說是相同的,但各自可用的功能不同。

工藝品

請遵循 工藝品限制。可以使用 glTF 標準材質,例如 pbrMetallicRoughness。

配件

請遵循 配件限制

Item 僅有 Item.metaItem.accessory_item 可用,且這兩個欄位是必填欄位。
ItemNode 中的欄位不可用於配件,但需要一個空的 ItemNode。

材質只能使用 MToon。MToon 參數在 glTF 材質的 ClusterVRM0MToon extra 中進行了描述。

ClusterItem 擴充和 ClusterItemNode 擴充

頂層需要 ClusterItem 擴充。

"extensions": [
    "ClusterItem": {
      {"item": "URL-safe base64 編碼的 message Item"}
    }
]

每個節點都需要 ClusterItemNode 擴充。

"extensions": [
    "ClusterItemNode": {
      {"itemNode": "URL-safe base64 編碼的 message ItemNode"}
    }
]

Item 和 ItemNode 的規範在 proto3 中描述。請參閱下面的文件。

https://github.com/ClusterVR/PITMSample/blob/main/pitm.proto

對於 URL 安全的 Base64 編碼,請使用 RFC 4648 的 Base 64 編碼(URL 和檔案名稱安全字母表) 的變種。

  • 後面沒有 =
  • 使用 -_ 代替 +/

範例:URL 安全的 base64 編碼的 ItemNode “OiQKIgogCg4KDAAAAAAAAAAAmpmZPRIOCgwAAAA_AAAAP5qZGT4”

ClusterVRM0MToon extra

在 PITM 中,MToon 存儲在 glTF 材質的 extras 中,作為 ClusterVRM0MToon

MToonMat 中的資料遵循與 VRM-0.x 中 materialProperties 的每個元素相同的格式。

{
  ..., // material 的其他內容
  "extras": {
    "ClusterVRM0MToon": {
      "MToonMat": {
        "shader": "VRM/MToon",
        "renderQueue": {...},
        "keywordMap": {...},
        "tagMap": {...},
        "floatProperties": {...},
        "textureProperties": {...},
        "vectorProperties": {...}
      }
    }
  }
}