THREE.js FBXLoader将.png视为.psd,并且不加载材质

时间:2019-05-27 19:58:51

标签: javascript three.js 3d textures fbx

使用THREE.js FBXLoader加载.fbx文件时,它正在部分加载模型,而模型的alpha纹理部分未加载。

我遇到了错误:

  

FBXLoader:不支持PSD纹理,从而为pinebranchColor.psd创建空的占位符纹理

尽管materials文件夹中没有.psd文件。从下面的屏幕截图中可以看到,似乎认为在材质alphaMap中,纹理名称为pinebranchColor.psd

.png file treated as a .psd

这就是FBX模型的呈现方式:

Tree without leaves loaded

这就是它呈现的效果,就像我加载GLTF版本一样(请注意:叶子的透明部分没有被拾取为透明的)-与它的外观更接近,但并不完整。

GLTF version of the model, with leaves, but no transparency

根据sketchfab ,这就是模型的外观:

Desired result

您为什么认为Alpha材质是.psd?这可以在.fbx文件本身中引用吗?最初的问题是如何获得叶子的Alpha /透明度以正确渲染,而不是块状颜色。也许我可以在GLTF版本的THREE.js资料中设置一个属性,这行得通吗?

这是我刚刚开始学习的第一个导入THREE.js的模型,所以请尽力解释。

编辑: 在开发工具中,我找到了叶子的材质,并将其设置为true透明。这工作了!在一定程度上。但是仍然存在一些渲染问题。所以我认为这是要走的路。

1 个答案:

答案 0 :(得分:0)

我不确定为什么无法加载FBX alpha材质,但是我通过使用THREE.js scene.traverse函数并设置了material {对于场景中的所有叶子材质,将{1}}属性设置为transparent

这解决了核心问题,但是在这张图片中仍然看到了一些伪像,其中的叶子被涂黑了:

transparent with artifact

解决方案是还将材料上的true设置为alphaTest,得到以下结果:

transparent without artifacts

代码如下:

0.5