有没有什么好的理由使用Json而不是obj for Three.js

时间:2017-09-03 06:16:42

标签: javascript json three.js

我使用threejs加载3D对象。有不同的加载器,一个使用JSON文件,另一个使用OBJ文件。 我想知道使用JSON(示例1)而不是OBJ文件(示例2)是否有任何好处。

Example1 loading JSON:

var loader = new THREE.PlayCanvasLoader();
                loader.load( './models/playcanvas/hand.json', function ( model ) {...

Example2 loading OBJ:
                var loader = new THREE.OBJLoader( manager );
                loader.load( 'obj/brain.obj', function ( object ) {...

1 个答案:

答案 0 :(得分:2)

选择格式时有以下三个标准:

  1. 功能。 OBJ(Wavefront)是一种较旧的格式,并且不支持许多功能,如动画,PBR材质,灯光,相机等。我不熟悉PlayCanvas JSON格式,但它可能会做更多的事情。
  2. 工作流。根据您获取模型的位置以及您计划更新它们的方式(或是否),某些格式更容易导出并且不易出错。例如,Autodesk软件适合导出FBX。如果你有一些有用的东西,请随时坚持下去。
  3. 性能。某些格式可以比其他格式更快地加载。 OBJ可能在这里较慢的一端。但是场景的运行时性能 - 在模型加载之后 - 将是相同的,所以这并不总是一个问题。
  4. 另请注意,three.js支持多种JSON格式。 THREE.JSONLoaderTHREE.ObjectLoader都接受与THREE.PlayCanvasLoader不同类型的JSON。这些JSON格式在three.js中运行良好,但在Maya或Blender等建模工具中更难导入和编辑。