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 extension,每个节点需要一个 ClusterItemNode extension。
PITM 的基本结构对于工艺品和配件来说是相同的,但各自可用的功能不同。
工艺品
请遵循 工艺品限制。可以使用 glTF 标准材质,例如 pbrMetallicRoughness。
配件
请遵循 配件限制。
Item 仅有 Item.meta
和 Item.accessory_item
可用,并且这两个字段是必填字段。
ItemNode 中的字段不可用于配件,但需要一个空的 ItemNode。
材质只能使用 MToon。MToon 参数在 glTF 材料的 ClusterVRM0MToon extra 中进行了描述。
ClusterItem extension 和 ClusterItemNode extension
顶层需要 ClusterItem extension。
"extensions": [
"ClusterItem": {
{"item": "URL-safe base64 编码的 message Item"}
}
]
每个节点都需要 ClusterItemNode extension。
"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": {...}
}
}
}
}