我在Blender中的模型由许多对象组成。模型作为.obj从C4D导出到Blender。每组对象都放在Blender中的Null下。当我在three.js中导出时,只有Blender中最后选择的对象将被导出为.json文件。
我尝试选择几个不同的对象,并且只会导出一个对象。我通过在编辑器中查看生成的.json文件来验证这一点。事实上,它只显示一个对象正在导出。
我将每个对象分开,我可以轻松地进行选择,并为每个对象应用不同的材质。在过去,我将所有对象组合成一个网格,然后从C4D导出.obj,并且所有对象都可以正常使用Blender和生成的.json文件
在搅拌机中,我所做的是尝试将所有对象链接到单个父对象,希望整个模型可以导出。这没用。
我的问题是这种正常行为吗?
在Blender中为每个片段应用材质后,如何将所有单独的片段转换为单个网格?
或者是否存在某种导出设置我在处理多个对象时出错了,每个对象都有自己的null?
答案 0 :(得分:2)
小心在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})
这至少会告诉我你的选择是什么
答案 1 :(得分:1)
正如 Repsac 所说,检查Three.js json导出器设置中的Scene
选项非常重要。但重要的是要知道导出的json文件不再是 Geometry 。它现在标有 Scene 类型,必须以不同的方式处理。
您可以按照从Blender导出整个场景的完整过程以及在answer to this post上处理导出的网格的正确方法。
此外,正如你们所说,所有网格都可以合并为一个网格,并使用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 );
希望这会更多地清除步骤。谢谢你的帮助,伙计们:)