使用Three.js r64 我想从Blender导入一个带有平滑组的动画对象,该文件通过Three.js Blender导出器导出为JSON。
动画部分工作正常。
在Blender中,模型看起来很好(中央部分周围有一个小的平滑组)。
图片:http://www.defresne.fr/demo/so/three/smooth_shading/gears.png
在OBJ中导出“平滑组”和“包含法线”选项时,我可以获得相同的结果。但是,在导出JSON文件(带法线)时,我无法正常工作。接下来是场景图片,带有现场演示。
图片 :( 追加的下一个链接) three_gears.png
现场演示:http://www.defresne.fr/demo/so/three/smooth_shading/
我在整个网络上进行了强烈的查找,无法找到正确的信息。最好是关于SO的另一个问题,有点旧( r55 )并且从未得到任何接受的答案。
我确实尝试用
计算对象的法线geometry.computeFaceNormals();
geometry.computeVertexNormals();
但显然,它会计算整个对象法线并产生一个完全平滑的对象。
那么,什么应该是使JSON平滑组在three.js中工作的正确方法?等待内置功能?自己建造?修改导出器?
由于three.js似乎正确加载了具有平滑组的OBJ和Collada模型,也许我可以借用这些加载器中的一些代码来获取逻辑?
感谢您的帮助
[编辑]
我发现了一些很棒的东西!
在Blender中,生成2个模型导出:第一个是JSON文件,第二个是OBJ文件。使用three.js在线编辑器加载第二个然后转换它以获得几何JSON ... 我可以收集这个新导出的几何体的顶点,法线和面,并将其复制到第一个导出的文件中。
工作正常!我有很好的着色组。即使剥皮也能正常工作。
但这是一种繁琐的处理方式,我希望能为自己节省一些额外的转换。
这是否意味着从Blender导出几何体时出现问题?知道为什么吗?
非常感谢任何帮助!
答案 0 :(得分:0)
好的,我终于找到了会发生什么。
r64 Three.js Blender导出器不导出平滑组,因此如果需要保留这些,除了将几何体导出到OBJ文件之外没有其他解决方案,然后使用python脚本'convert_obj_three.py'进行转换。在Three.js存储库中可用。转换后的文件将具有正确的法线。 (导出OBJ文件时不要忘记检查正常选项)