【问题标题】:Three.JS Blender Is Only Exporting A Single ObjectThree.JS Blender 只导出单个对象
【发布时间】:2015-03-28 00:53:42
【问题描述】:

Blender 中的模型由多组对象组成。模型作为 .obj 从 C4D 导出到 Blender。每组对象都放在 Blender 中的 Null 下。当我在 three.js 中导出时,只有 Blender 中最后选择的对象会导出为 .json 文件。

我尝试选择几个不同的对象,但同样只有一个对象会导出。我通过在编辑器中查看生成的 .json 文件来验证这一点。事实上,它显示只有一个对象被导出。

我将每个对象分开,我可以轻松地进行选择并将不同的材料应用于每个对象。在过去,我在从 C4D 导出 .obj 之前将所有对象组合到一个网格中,并且在 Blender 和生成的 .json 文件中一切正常

在搅拌机中,我所做的是尝试将所有对象链接到一个父对象,以期将整个模型导出。这不起作用。

我的问题是这种正常行为吗?

在 Blender 中为每个单独的部分应用材质后,如何将所有单独的部分转换为单个网格?

或者在处理多个对象时我是否有某种导出设置错误,每个对象都有自己的 null?

【问题讨论】:

    标签: three.js blender


    【解决方案1】:

    小心在 Blender 中将对象分组到 Null(空)下。不久前,我尝试使用我的灯光设置进行此操作,因为它通常是一个合乎逻辑的工作流程,但发现在 three 中构建场景时存在转换问题。

    当我在 three.js 中导出时,只有 Blender 中最后选择的对象会导出为 .json 文件。

    这里的关键词是“最后选择”,它告诉我您可能没有点击导出的Scene 选项。默认情况下,导出只生成一个带有单个几何图形的 .json,这是 Blender 中的当前选择。

    发布日志文件的输出有助于了解您的选择。您不需要为此粘贴整个内容,只需找到如下所示的一行(朝向日志顶部):

    Three.Export - DEBUG: 
    Scene().__init__(G:\cleanflight_json_test\cfc_gui_def_green_a.json, 
    {'animation': False, 'cameras': False, 'embedGeometry': True, 
    'faces': True, 'colors': False, 'influencesPerVertex': 2, 
    'scene': True, 'faceMaterials': False, 'precision': 6, 'embedAnimation': True, 'lights': False, 'logging': 'debug', 
    'scale': 1.0, 'frameStep': 1, 'bones': False, 'vertices': True, 
    'uvs': False, 'copyTextures': True, 'geometryType': 
    'geometry', 'mixColors': False, 'maps': False, 'compression': 
    'None', 'normals': False, 'enablePrecision': False, 'materials': False, 
    'skinning': False, 'morphTargets': False})
    

    这至少会告诉我你的选择是什么

    【讨论】:

    • 昨天每当我选择导出的场景选项时,模型都不会出现在模型所在的 gui 中。 gui中已经有灯光和相机,它只需要带有材料的模型。这是昨天使用该立方体模型的 gui 的简短视频youtube.com/…
    • 这里还有一个链接到搅拌机模型和.json文件lilsamedia.com/three_js_blender
    • 这是四轴飞行器的屏幕截图,我在其中组合了所有网格(Ctrl+J 组合选定的网格)。我更改了每种材质的颜色,以便您可以看到保留了材质分配。 i.imgur.com/KAzcZle.png
    • 如果您只是使用颜色(无纹理),您还可以考虑将材质烘焙为顶点颜色。
    • 您的资产(结合到具有多种材料的单个网格)对我来说加载得很好。 i.imgur.com/LyZSpXH.png 还没来得及测试场景版本(保持对象分开)。
    【解决方案2】:

    正如 Repsac 所说,检查 Three.js json 导出器设置中的 Scene 选项很重要。但重要的是要知道导出的 json 文件不再只是 Geometry。它现在被标记为 Scene 类型,必须以不同的方式处理。

    您可以在我的answer to this post 上了解从 Blender 导出整个场景的完整过程以及处理导出网格的正确方法。

    此外,正如你们所说,所有网格都可以合并为一个网格,并使用THREE.MeshFaceMaterial 处理它的多种材质,如下代码所示:

    var mat1 = new THREE.MeshLambertMaterial( { map: texture1 } );
    var mat2 = new THREE.MeshLambertMaterial( { map: texture2 } );
    var materials = [mat1, mat2];
    var faceMat = new THREE.MeshFaceMaterial(materials);
    mesh = new THREE.Mesh( geometry, faceMat );
    scene.add( mesh );
    

    希望这可以进一步清除步骤。谢谢你们的帮助,伙计们:)

    【讨论】:

      猜你喜欢
      • 2017-09-29
      • 2012-04-04
      • 2017-08-24
      • 2012-09-06
      • 2016-02-24
      • 2023-03-20
      • 2015-03-26
      • 2016-08-17
      • 2018-05-01
      相关资源
      最近更新 更多