Three.js 转换为GLTF 2.0模型的THREEJS中的问题

Three.js 转换为GLTF 2.0模型的THREEJS中的问题,three.js,gltf,Three.js,Gltf,我有超过10万个GLTF 1.0型号。我们正处于转换到2.0的过程中,并且遇到了困难 源模型首先是Collada,我们使用Collada2GLTF转换器生成GLTF文件。但我们确实使用了KHR_材料_公共设置,这为我们创造了完美的结果 但是现在我们想要将GLTF文件转换为2.0,这被证明是相当有问题的。该过程运行良好,但转换后的模型得到了“KHR_materials_common”扩展。纹理是通过该材质绑定的 当我们使用三个JS渲染器时,它的GLTF加载程序还不支持此扩展,并且没有显示纹理。它只

我有超过10万个GLTF 1.0型号。我们正处于转换到2.0的过程中,并且遇到了困难

源模型首先是Collada,我们使用Collada2GLTF转换器生成GLTF文件。但我们确实使用了KHR_材料_公共设置,这为我们创造了完美的结果

但是现在我们想要将GLTF文件转换为2.0,这被证明是相当有问题的。该过程运行良好,但转换后的模型得到了“KHR_materials_common”扩展。纹理是通过该材质绑定的

当我们使用三个JS渲染器时,它的GLTF加载程序还不支持此扩展,并且没有显示纹理。它只有一个完全黑色的表面

我已经给了它(一个快速的)局部添加扩展,使用MeshBasicMaterial,但是没有好的结果

所以,我的问题是,我有什么选择,如果有的话

  • 有没有办法从GLTF 1.0源代码中转换和删除KHR_材料_公共代码
  • 转换进程()是否可以删除扩展
  • 在THREEJS GLTFLoader中添加支持是否有任何工作正在进行
  • 从源代码到GLTF2.0的转换是有效的,但我没有所有可用的源代码。有些是客户的财产,我们不储存
  • 不支持反转回COLLADA()

截至2018年底,glTF 1.0和glTF 2.0中材料类型的快速总结:

glTF 1.0

  • (核心):自定义GLSL着色器
  • KHR_材料_常见:Blinn、Phong、Lambert和常量/无照明
glTF 2.0

  • (芯材):金属/粗PBR
  • KHR材料PBR特殊损耗:规格/光泽PBR
  • KHR_材料未发光:恒定/未发光
  • KHR_技术_webgl:自定义GLSL着色器。(进行中)
请注意,glTF 2.0中没有blinn、phong或lambert材质。你知道你的100000个模型使用什么类型的材料或什么类型的纹理吗?这将有助于回答您应该使用哪种GLTF2.0材料

Three.js实现了所有glTF 2.0材料选项,除了规范不完整的
KHR\u technologies\u webgl
。Three.js没有实现KHR\u materials\u common,因为它不是glTF 2.0的一部分

最可能的情况是,如果您在glTF 1.0中使用了未照亮的材质,则应该使用glTF 2.0中的
KHR\u materials\u unlight
扩展。如果使用blinn、phong或lambert,则应在glTF 2.0中使用金属/粗糙或等级/光泽PBR。这些材料的PBR转换应该看起来很好,虽然如果您正在寻找与传统材料的精确匹配,您可能需要考虑自定义GLSL扩展。
我不认为glTF管道可以进行这种转换,但它非常值得在那里提交一个问题(看起来你已经有了?)。如果没有,转换可能是您可以自己实现的。例如,它比将任何东西转换成GLSL材料要容易得多。

您好,感谢您提供了详细的答案。我继续并实现了一个简短的脚本,用于加载gltf,并确定它是否使用KHR_材料。如果是这样,请转换为另一种材质(我使用PBR,因为它在GLTFLoader中充当默认材质),然后按预期工作。渲染结果中存在一些差异,因此我可能会再次尝试使用GLTF 1.0模拟结果。太棒了!如果同时调整
roughnessFactor
metalnnessfactor
,结果可能会更接近,但听起来你的思路是正确的。