GltiExporter
GltiExporter 将一个已存在的 VFP 打包为 GLTI MP4。它从 VFP 的权威数据和 PMSH 构建标准 GLB,并按选项生成或复用 H.264 视频。默认将输入 VFP 原样嵌入 GLB,因而可由 GltiPackageReader 无损恢复。
from voxelkit import GltiExporter
export()
GltiExporter.export(
vfp_path: str | pathlib.Path,
output_path: str | pathlib.Path,
*,
video_path: str | pathlib.Path | None = None,
options: GltiExportOptions | None = None,
) -> GltiExportResult
该方法是静态方法,不需要创建 GltiExporter 实例。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
vfp_path | str | Path | 必填 | 输入 VFP。必须能被 Vfp.parse() 读取,并包含用于导出预览网格的 PMSH。 |
output_path | str | Path | 必填 | 输出 GLTI MP4 路径。父目录不存在时自动创建;同名文件会被覆盖。 |
video_path | str | Path | None | None | 已有兼容 MP4。提供后直接复用其视频容器,不触发 SDK 转台渲染。 |
options | GltiExportOptions | None | None | 输出视频与编辑源策略。省略时采用默认的 1024² / 24fps / 3秒 可编辑导出。 |
默认行为
当 video_path 与 options.include_video=False 均未设置时,SDK 会:
- 从 VFP 的
PMSH和调色板重建标准 GLB; - 将原始 VFP 嵌入 GLB 的
CHARACTECH_voxel_vfp扩展; - 离线渲染指定帧数的转台图像;
- 使用本机
ffmpeg编码 H.264; - 写出带
glticompatible brand、视频轨和顶层meta/idatGLB 项的 MP4。
embed_editable_vfp=False 会跳过第 2 步,输出仍可播放/浏览,但不能恢复为 VFP。
返回值
返回 GltiExportResult:
output:实际写出的Path;glb_bytes:嵌入 GLB 的字节数;vfp_sha256:输入 VFP 原始字节的 SHA-256;has_video:是否包含视频轨。静态include_video=False输出为False。
异常
| 异常 | 条件 |
|---|---|
FileNotFoundError / OSError | 输入、输出或提供的视频文件无法访问。 |
VfpError / ValueError | VFP 结构、PMSH、调色板或选项不符合要求。 |
RuntimeError | 没有 ffmpeg,或转台渲染/H.264 编码子进程失败。 |
示例:默认可编辑交付
from voxelkit import GltiExporter
delivery = GltiExporter.export("house.vfp", "house.glti.mp4")
assert delivery.has_video
print(delivery.output, delivery.vfp_sha256)
示例:固定演示帧数
from voxelkit import GltiExporter, GltiExportOptions
options = GltiExportOptions(width=768, height=768, fps=30, duration_seconds=2.0)
assert options.frame_count() == 60
GltiExporter.export("house.vfp", "house-60f.glti.mp4", options=options)
更多工作流和恢复语义见 GLTI 交付与恢复。