跳到主要内容

第 8 章:VOX0 区段

VOX0 是唯一权威体素源。每个 Chunk 必须恰好有一个 VOX0 目录项;它没有私有 32 B Header。

tag = "VOX0"
chunkId = CHIX 中的 chunkId
codec = 0 RAW8 或 1 RLE8
flags = 0
rawLength = localSizeX * localSizeY * localSizeZ

局部及完整缓冲均采用 offset=((z*sizeY)+y)*sizeX+x,即 x 最快、y 次之、z 最慢。0 是空体素,1..255 必须是 PAL0 中存在的 index。

RAW8​

RAW8 的 Payload 是连续 palette-index 字节,length=rawLength。

RLE8​

RLE8 Payload 是连续 (paletteIndex:u8, runLength:ULEB128) 对。Run 必须大于零,完整解码长度必须恰好等于 rawLength;截断 ULEB128、零 Run、溢出或不足都必须拒绝。示例 [0,0,0,2,2,1] 编码为 00 03 02 02 01 01。

Reader 按 chunkId 解码全部 VOX0 到完整线性缓冲后,必须验证 PAL0 引用、CHIX 非空统计与 sourceHash。不得用 PMSH、PRVW 或任何缓存代替该恢复。