You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

three.js中用于视频播放的3D纹理数组数据格式咨询

Three.js 用于视频播放的3D纹理数组数据格式规范

你对存储逻辑的推测基本正确,该格式没有隐藏的特殊封装,具体规则如下:

  • 整体是无文件头的连续原始二进制块,所有数据从偏移量0开始按帧顺序连续写入,没有额外的元数据段、分隔标记或者压缩逻辑,直接用Uint8ClampedArray读取即可,每个数组元素对应0-255区间的单通道像素值。
  • 单帧像素排列规则和普通2D纹理完全一致:逐行逐像素存储,每个像素占4字节,通道顺序固定为R→G→B→A,单帧总字节长度固定为 帧宽度 * 帧高度 * 4。
  • 帧排列严格对应纹理数组的Z轴索引:第0帧对应Z=0层,从偏移量0开始写入;第1帧对应Z=1层,起始偏移量为 1 * 帧宽度 * 帧高度 * 4,以此类推,帧和帧之间没有任何填充补位字节。
  • 加载后绑定纹理的匹配要求:
    • 纹理类型使用DataTexture2DArray
    • 传入构造函数的width、height参数必须和单帧视频分辨率完全一致
    • depth参数必须等于你打包进去的总视频帧数
    • 纹理格式指定为RGBAFormat,纹素类型用默认的UnsignedByteType即可,不需要额外做像素解码
  • 注意避坑:不要自行给每帧数据加行对齐补位,three.js在把纹理提交给WebGL2时会自动处理行对齐逻辑,手动加补位反而会导致帧错位、花屏、颜色通道错乱的问题。

你可以先用3-5帧低分辨率测试素材按这个规则打包,渲染时手动切换Z轴采样索引,能正常逐帧显示就说明格式完全匹配。

内容的提问来源于stack exchange,提问作者Ash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 16:34:47