如何保持从 Blender 导出的 Three.js JSON 文件的向后兼容性

Posted

技术标签:

【中文标题】如何保持从 Blender 导出的 Three.js JSON 文件的向后兼容性【英文标题】:How to maintain backwards compatibility for Three.js JSON files exported from Blender 【发布时间】:2016-09-18 03:41:33 【问题描述】:

我们使用 Three.js Blender exporter r69 导出了数千个模型,其中“翻转 YZ”选项未选中。应用程序中还有代码可以将它们以正确的方式向上翻转,因此在 Blender 和应用程序之间它们是相同的。

自 (r76+) 以来,我们已经升级了导出器 - 现在移除了翻转 XY 的选项,并且新模型支持他们。显而易见的解决方案是首先在我们的应用程序中删除将它们翻转回来的应用程序代码,这可行,但会破坏与以前使用 r69 导出的所有模型的兼容性。

以下是一些我想过/尝试但无济于事的方法:

我可以检查 JSON 文件的版本并仅翻转使用旧导出器导出的文件。 JSON 确实有一个“元数据”字段,但它不会暴露给 JSONLoader.load() 的结果。不行。

对版本之间的导出器差异进行反向工程,看看我是否可以编写脚本将数千个模型从 69 更新到 76。

导入所有原始模型并重新导出为 r76。这对数千个模型来说是很多工作,而且由于我们无法导入 JSON,我们需要有原始的 Blend 文件,这并不总是正确的。

有人遇到过类似的问题吗?有没有我错过的方法?有没有更好的方法将多个模型从一个导出器 JSON 版本迁移到另一个?

【问题讨论】:

【参考方案1】:

更改是 mentioned a bit ago,但我在其他任何地方都找不到它的记录。正如您所发现的,这种转变现在是自动的。该代码似乎在object.py 中的第 366 行定义了向上轴,但我不使用 Blender。交换值,看看会发生什么。

我的回答是,您的用例提供了一个令人信服的理由来重新设置该选项。我建议您自己修改 object.py 以满足您的需要,将其作为拉取请求提交,并打开一个问题以允许讨论修复@repsac

【讨论】:

以上是关于如何保持从 Blender 导出的 Three.js JSON 文件的向后兼容性的主要内容,如果未能解决你的问题,请参考以下文章

如何将项目从 Blender 导出到 Unity?

如何将模型从Blender导出到Unity3d

如何从Blender导出fbx纹理以用于Monogame

从 Blender 导出多个 .fbx 文件

blender导出fbx材质颜色错误

如何在 Blender 导出脚本中导出每个顶点的 UV 坐标