首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Three.JS搅拌机只输出一个对象

Three.JS搅拌机只输出一个对象
EN

Stack Overflow用户
提问于 2015-01-28 22:42:43
回答 2查看 3.6K关注 0票数 4

My Model in Blender是由许多组对象组成的。该模型作为.obj从C4D导出到Blender。每一组物体都放置在搅拌机的空壳下。当我在three.js中导出时,只有Blender中最后选定的对象将作为.json文件导出。

我试着选择了几个不同的对象,而且同样只有一个对象会导出。我在编辑器中看到了生成的.json文件,从而验证了这一点。实际上,它只显示正在导出的单个对象。

我把每个物体分开,我可以很容易地做出选择,并将不同的材料应用到每个物体上。过去,在从.obj导出C4D之前,我将所有对象合并到一个网格中,所有事情都可以很好地处理Blender和生成的.json文件。

在搅拌机中,我所做的就是尝试将所有的对象链接到一个单亲父母,希望整个模型能够导出。这是行不通的。

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

我如何将所有的独立的部分转换成一个单一的网格后,我已经申请材料的每一个搅拌机?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-28 23:04:46

在Blender中,要小心将对象分组在空(空)下。不久前,我尝试用我的轻量级设置作为正常的逻辑工作流程,但发现在用three构建场景时存在转换问题。

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

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

发布日志文件的输出有助于查看您的选项。您不需要对整个程序进行粘贴,只需找到一行(指向日志顶部),如下所示:

代码语言:javascript
复制
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})

至少可以告诉我你有什么选择

票数 2
EN

Stack Overflow用户

发布于 2016-09-09 16:14:04

正如Repsac所说,在Three.js json出口商设置中检查Scene选项非常重要。但是重要的是要知道导出的json文件不再仅仅是一个几何学了。它现在被标记为场景类型,它必须以不同的方式处理。

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

此外,正如两位所说的,所有网格都可以合并成一个网格,并使用THREE.MeshFaceMaterial处理它的多个材料,如下面的代码所示:

代码语言:javascript
复制
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 );

希望这能让我们的步骤更清晰一点。谢谢你的帮助,各位:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28203846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档