如何在three.js中使用GLTF加载器?纹理和材质显示为黑色

6
我有问题在加载gltf模型时,模型可以成功加载,但是所有的纹理和材质(已嵌入到.gltf文件中)全都是黑色的。当我在gltfviewer中查看时,所有的纹理和材质都显示出来了。由于我对three.js不熟悉,如果有人能指导我如何使用GLTF加载器,我将不胜感激!

场景中有任何光源吗? - prisoner849
我相信是这样的。如果我添加一个Phong材质并将颜色设置为白色,黑色就会变成白色。 - Ayma
什么样的灯光?你能分享一下型号或演示吗?请注意,金属材料可能需要环境贴图。在 gltf 查看器(http://gltf-viewer.donmccurdy.com/)中,您可以调整直接和环境光以查看效果。 - Don McCurdy
谢谢回复。我该如何分享模型?我已经在GitHub上上传了gltf文件...另外,这是一个半球光(我只是从另一篇帖子中复制了代码);光应该是正常工作的吧?因为当我添加一个白色的Phong材质时,我可以看到物体的材质。 - Ayma
一个指向GitHub项目的链接可能就足够了。否则,Google Drive、Dropbox、Gist或其他文件链接也可以。 - Don McCurdy
1个回答

10
这个问题本质上与如何在MeshStandardMaterial中使用AmbientLight?相同 - 您的模型具有100%的金属材料,而纯金属不会反射漫散(环境和半球)光。理想情况下,始终向PBR模型添加环境映射。另一种解决方案是添加非漫射/直接光源,例如PointLight或DirectionalLight实例。如果您可以编辑模型,则减少其金属度也会起作用。有关更多详细信息,请参见https://github.com/mrdoob/three.js/issues/9228

你真是救星啊!我只是在Blender中改变了金属因素,现在一切都正常了。非常感谢!! - Ayma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接