Three.JS Blender 仅导出单个对象
Three.JS Blender Is Only Exporting A Single Object
我在 Blender 中的模型由许多对象组组成。模型作为 .obj 从 C4D 导出到 Blender。每组对象都放在 Blender 中的 Null 下。当我在 three.js 中导出时,只有 Blender 中最后选择的对象将导出为 .json 文件。
我尝试选择几个不同的对象,但同样只会导出一个对象。我通过在编辑器中查看生成的 .json 文件来验证这一点。事实上,它显示只有一个对象被导出。
我将每个对象分开,这样我就可以轻松地进行选择并为每个对象应用不同的材质。过去,在从 C4D 导出 .obj 之前,我将所有对象合并到一个网格中,并且在 Blender 和生成的 .json 文件
中一切正常
在 blender 中,我所做的是尝试 link 所有对象到单个父对象,希望整个模型都能导出。这没有用。
我的问题是这是正常现象吗?
在 Blender 中为每个单独的部分应用材质后,如何将所有单独的部分转换为单个网格?
或者在处理多个对象时是否存在某种导出设置错误,每个对象都有自己的 null?
注意在 Blender 中将对象分组到 Null(空)下。我不久前用我的灯光设置尝试过这个,因为它通常是一个合乎逻辑的工作流程,但发现在 three
.
中构建场景时存在转换问题
When I export in three.js, only the last selected object in Blender will be exported as a .json file.
这里的关键字是"last selected",这告诉我你可能没有点击导出的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})
这至少会告诉我你的选择是什么
正如Repsac所说,检查Three.js中的Scene
选项很重要json 导出器设置。但重要的是要知道导出的 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 );
希望这能使步骤更清晰一些。谢谢你们的帮助,伙计们:)
我在 Blender 中的模型由许多对象组组成。模型作为 .obj 从 C4D 导出到 Blender。每组对象都放在 Blender 中的 Null 下。当我在 three.js 中导出时,只有 Blender 中最后选择的对象将导出为 .json 文件。
我尝试选择几个不同的对象,但同样只会导出一个对象。我通过在编辑器中查看生成的 .json 文件来验证这一点。事实上,它显示只有一个对象被导出。
我将每个对象分开,这样我就可以轻松地进行选择并为每个对象应用不同的材质。过去,在从 C4D 导出 .obj 之前,我将所有对象合并到一个网格中,并且在 Blender 和生成的 .json 文件
中一切正常在 blender 中,我所做的是尝试 link 所有对象到单个父对象,希望整个模型都能导出。这没有用。
我的问题是这是正常现象吗?
在 Blender 中为每个单独的部分应用材质后,如何将所有单独的部分转换为单个网格?
或者在处理多个对象时是否存在某种导出设置错误,每个对象都有自己的 null?
注意在 Blender 中将对象分组到 Null(空)下。我不久前用我的灯光设置尝试过这个,因为它通常是一个合乎逻辑的工作流程,但发现在 three
.
When I export in three.js, only the last selected object in Blender will be exported as a .json file.
这里的关键字是"last selected",这告诉我你可能没有点击导出的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})
这至少会告诉我你的选择是什么
正如Repsac所说,检查Three.js中的Scene
选项很重要json 导出器设置。但重要的是要知道导出的 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 );
希望这能使步骤更清晰一些。谢谢你们的帮助,伙计们:)