1

一般问题:目前广泛使用的用于加载 3d 模型的稳定 JSON 格式是什么?

扩展问题:

我是一名从事 WebGL 工作的程序员,尤其是使用Elm 编程语言。我一直在研究不同的模型格式,似乎使用 three.js JSON 格式作为一种标准对我的项目很有意义(并且可能对一般的语言)。

然而,在 three.js github 上,它说模型语言的第 3 版即将被弃用。

所以,我想在转换之前知道模型格式的当前状态。版本3暂时稳定吗?版本 4 发布了吗?会有版本 4 模型格式,还是被几何格式取代?即将发生的变化是否如此严重以至于在此时采用这种格式是一个坏主意?

我见过新的 ObjectLoader 类,它们与 Json 网格格式有什么关系?它是我可以将 .obj 转换为的格式吗?

4

2 回答 2

2

跟进我的 github 帖子:

老实说,我不认为可以肯定地说版本 3 永远不会太稳定。3 一直存在问题,并且支持的 SceneLoader 类变得对维护不友好。现在 4 相当稳定,只是缺少对纹理的支持。它适用于对象、几何体和材质,但还没有导出器(我知道)。

现在我认为您最好奇的是实际的模型格式,即: https ://github.com/mrdoob/three.js/wiki/JSON-Geometry-format-4#example-of-geometry

老实说,我能说的实际几何格式并没有真正改变太多。3 和 4(到目前为止)之间的最大变化是场景格式。事实上几何是用 JSONLoader 类解析的。事实上,几天前我向 dev 分支提交了一个用于 msgpack 压缩 JSON 场景的新示例文件。 https://github.com/mrdoob/three.js/blob/dev/examples/webgl_loader_msgpack.html

msgpack 只是 JSON 压缩,所以当它被解码时它是一个 JSON 对象。这个 msgpack 文件是从 three.js/blob/dev/examples/scenes/robo_pigeon.js 转换而来的

这个场景是版本 4 的场景格式。“几何”表中的每个条目实际上是一个嵌入的几何格式。这种格式也可以存在于外部文件中。如果您将其与第一个链接进行比较,您将看到格式相同。几何文件可以使用 JSONLoader 单独加载到场景中。

现在您询问了转换器:查看 convert_obj_three.py 它在文档中显示“JSON 模型版本”,所以我猜它会吐出基本几何模型格式而不是场景格式,因此这可能是可用的。即使是搅拌机导出器仍然可以导出兼容的几何场景(选中“场景”选项)。我怎么知道?因为我用于 robo_pigeon.js 的几何图形来自那个导出器,所以我只需要手动构建版本 4 的场景。

这是否开始回答您的问题?

于 2014-05-21T03:54:42.053 回答
0

根据 mrdoob 的说法,他正计划更改几何格式,但目前版本 3 模型格式在版本 4 场景中运行良好,因为 ObjectLoader 将这些几何(模型)定义传递给 JSONLoader。因此,在实际指定新格式并更新 JSONLoader 之前,版本 3 模型是当前模型。

还有一点需要注意:场景加载器(SceneLoader、ObjectLoader)本身不会加载几何体。他们总是将任务分派给正确的班级。不确定版本 4 中是否支持它,但在版本 3 中,您可以直接将场景链接到 OBJ 文件。说到 OBJ 文件,如果您刚刚开始研究 three.js 并在 OBJ 中拥有资产,那么您是否考虑过直接使用 OJBLoader?

于 2014-05-21T18:48:06.920 回答