three.js中JSON网格格式的当前状态是什么?

What is the current status of JSON mesh formats in three.js?

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

扩展问题:

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

但是,在three.js github上,它表示模型langauge的版本3即将被使用。

因此,我想在转换之前了解模型格式的当前状态。版本3暂时稳定吗?版本4是否已发布?是否会有版本4的模型格式,或者被几何格式取代?即将发生的变化是否如此之大,以至于在此时采用这种格式不是一个好主意吗?

我已经看到了新的ObjectLoader类,它们与Json网格格式如何相关?我可以将.obj转换为这种格式吗?


跟进我的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版场景。

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


根据mrdoob的说法,他正计划更改几何格式,但是到目前为止,由于ObjectLoader将这些几何(模型)定义传递给JSONLoader,因此第3版模型格式在第4版场景中可以正常工作。因此,在实际指定新格式并更新JSONLoader之前,版本3模型是当前的模型。

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