Three.js(r64)-Blender JSON导出未命中法线以实现平滑着色

Three.js(r64)-Blender JSON导出未命中法线以实现平滑着色,json,three.js,export,blender,normals,Json,Three.js,Export,Blender,Normals,使用Three.jsr64我想从Blender导入一个动画对象及其平滑组,该文件通过Three.js Blender exporter导出为JSON 动画部分工作正常 在Blender中,模型看起来很好(中心部分周围有一个小的平滑组) 图片: 如果选中“平滑组”和“包含法线”选项,则在OBJ中导出时可以获得相同的结果。但是,在导出JSON文件(使用法线)时,我无法使其正常工作。接下来是现场的照片和现场演示 图片:(添加下一个链接)three_gears.png 现场演示: 我在网上做了大量的查找

使用Three.jsr64我想从Blender导入一个动画对象及其平滑组,该文件通过Three.js Blender exporter导出为JSON

动画部分工作正常

在Blender中,模型看起来很好(中心部分周围有一个小的平滑组)

图片

如果选中“平滑组”和“包含法线”选项,则在OBJ中导出时可以获得相同的结果。但是,在导出JSON文件(使用法线)时,我无法使其正常工作。接下来是现场的照片和现场演示

图片:(添加下一个链接)three_gears.png

现场演示

我在网上做了大量的查找,但找不到正确的信息。最好是关于SO的另一个问题,这个问题有点老了(r55),从来没有得到任何公认的答案

我试着用计算机计算物体的法线

geometry.computeFaceNormals();
geometry.computeVertexNormals();
但是,显然,它会计算整个对象的法线,并生成完全平滑的对象

那么,让JSON平滑组在three.js中工作的正确方法应该是什么呢?等待内置函数?自己造?修改导出器

由于three.js似乎正确加载了带有平滑组的OBJ和Collada模型,也许我可以借用这些加载程序中的一些代码来获取逻辑

谢谢你的帮助

[编辑]

我刚刚发现了一些很棒的东西

在Blender中,生成模型的两个导出:第一个是JSON文件,第二个是OBJ文件。使用three.js online editor加载第二个,然后将其转换为几何体JSON。。。 我可以收集这个新导出的几何体的顶点、法线和面,并将其复制到第一个导出的文件中

很好用!我有很好的阴影组。甚至剥皮也可以

但这是一个乏味的处理方式,我希望我可以节省自己一些额外的转换

那么这是否意味着从Blender导出几何体时出现问题?知道为什么吗


任何帮助都将不胜感激

好吧,我终于找到了发生的事情

r64 Three.js Blender exporter不导出平滑组,因此如果需要保留这些平滑组,除了将几何体导出到OBJ文件,然后使用Three.js存储库中可用的python脚本“convert_OBJ_Three.py”进行转换之外,没有其他解决方案。转换后的文件将具有正确的法线。(导出OBJ文件时,不要忘记选中“正常”选项)