我有超过10万个GLTF 1.0模型。我们正在转换为2.0,并且正在碰壁。
最初的模型是Collada,我们使用Collada2GLTF转换器生成GLTF文件。但是我们使用KHR_materials_common设置来做到这一点,它为我们创造了完美的结果。
但是现在我们想将GLTF文件转换为2.0,这被证明是非常有问题的。该过程工作正常,但转换后的模型获得了'KHR_materials_common'扩展名。正是通过这种材料来绑定纹理。
当我们使用三个JS渲染器时,其GLTF加载器尚不支持此扩展,并且不会显示任何纹理。它只会得到全黑的表面。
我已经给它(一个快速的方法)使用MeshBasicMaterial在本地添加该扩展名,但是效果不佳。
所以,我的问题是,我有什么选择?
答案 0 :(得分:2)
截至2018年底的glTF 1.0和glTF 2.0材料类型的快速摘要:
glTF 1.0
glTF 2.0
请注意,glTF 2.0中没有blinn,phong或lambert材料。您是否知道100,000个模型使用的是哪种材料或纹理?这将有助于回答您应该使用哪种glTF 2.0材料。
Three.js实现了所有glTF 2.0材质选项,但KHR_techniques_webgl
除外,其规范不完整。 Three.js没有实现KHR_materials_common
,因为它不是glTF 2.0的一部分。
最有可能的是,如果您在glTF 1.0中使用了不发光的材质,则应该在glTF 2.0中使用KHR_materials_unlit
扩展名。如果使用blinn,phong或lambert,则应在glTF 2.0中使用金属/粗糙或规格/光泽PBR。这些材料的PBR转换应该看起来相当不错,尽管如果您要与旧材料精确匹配,则可能需要考虑自定义GLSL扩展名。
我不认为glTF-Pipeline可以进行此转换,但是值得在那里提出一个问题(看起来您已经拥有了?)来请求它。如果没有,则转换可能是您可以自己实现的。例如,这比将任何内容转换为GLSL材质容易得多。