【问题标题】:Is there any good reason to use Json instead of obj for Three.jsThree.js 是否有充分的理由使用 Json 而不是 obj
【发布时间】:2018-02-11 17:36:35
【问题描述】:

我正在使用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 ) {...

【问题讨论】:

  • 在我看来,使用其他人广泛使用的东西通常也很好。 JSON 被普遍使用。它很容易被许多其他语言解析。即使此时,我也不知道.obj 文件格式,所以如果需要,我更愿意从您那里获取.json 文件。
  • OBJ 是一种用于 3D 模型的格式。 JSON 作为一种语法 是通用的,但它本身并不是一种 3D 模型格式。在这里,PlayCanvas 使用 JSON 来存储 PlayCanvas 数据。如果您的工作流程与 PlayCanvas 密切相关,那么使用它可能是有意义的,但在 3D 世界中,OBJ 更为常见。

标签: javascript json three.js


【解决方案1】:

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

  1. 功能。 OBJ (Wavefront) 是一种较旧的格式,不支持动画、PBR 材质、灯光、相机等许多功能。我不熟悉 PlayCanvas JSON 格式,但它可能会做更多的事情。
  2. 工作流程。根据您获取模型的位置以及您计划更新它们的方式(或是否),某些格式更容易导出且不易出错。例如,Autodesk 软件适合导出 FBX。如果您有一些有用的东西,请随时坚持下去。
  3. 性能。某些格式可以比其他格式更快地加载。 OBJ 可能在这里较慢。但无论如何,场景的运行时性能(在模型加载后)将是相同的,所以这并不总是一个问题。

还要注意,three.js 支持多种 JSON 格式。 THREE.JSONLoaderTHREE.ObjectLoader 都接受与 THREE.PlayCanvasLoader 不同类型的 JSON。这些 JSON 格式在 three.js 中运行良好,但在 Maya 或 Blender 等建模工具中更难导入和编辑。

【讨论】:

    猜你喜欢
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 2010-10-01
    • 2011-04-12
    相关资源
    最近更新 更多