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.meta
和 Item.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": {...}
}
}
}
}