有什么方法可以检查 C# 中的 GLB 文件是有效还是损坏的文件?

问题描述 投票:0回答:1

我想在对该 GLB 文件执行任何处理之前检查该 GLB 文件是有效的 GLB 文件还是损坏的文件。

我尝试使用以下代码加载文件,但我拥有的一些有效的 GLB 文件出现异常。因此,尝试加载glb文件并不是判断glb文件有效或损坏的glb文件的正确方法。 代码:

try
{
    var model = SharpGLTF.Schema2.ModelRoot.Load("model.glb");
    // Successfully loaded the GLB file; it's valid.
    Console.WriteLine("GLB file is valid.");
}
catch (Exception ex)
{
    // Handle validation errors.
    Console.WriteLine($"Error loading GLB: {ex.Message}");
}

我收到有效 GLB 文件的以下异常:

SharpGLTF.Validation.DataException:'访问器[13]切线[181]: 生成的 TangentModel 无效 看起来是畸形的;请检查该文件 https://github.khronos.org/glTF-Validator/'

c# .net unity-game-engine 3d gltf
1个回答
0
投票

正如您在维基百科条目 glTF 中看到的那样,它是:

由 Khronos Group 开发和维护的开放标准。

也来自上面的链接:

glTF 文件使用两种可能的文件扩展名之一:.gltf (JSON/ASCII) 或 .glb(二进制)

即.glb 文件是 glTF 文件格式的二进制版本,Khronos Group 负责此格式。

如果您的文件被 Khronos glTF 验证器拒绝,则意味着它无效。

根据您发布的异常消息,Microsoft GLTF Exporter 2.8.3.40 似乎不符合要求(根据您的评论,3D 查看器支持不符合要求的部分)。

尽管如此,该文件不是有效的 glTF/glb 文件。

底线:
您尝试使用

SharpGLTF
加载文件的方法是确定文件有效性的正确方法。

© www.soinside.com 2019 - 2024. All rights reserved.