three.js 中的分层纹理

Posted

技术标签:

【中文标题】three.js 中的分层纹理【英文标题】:Layered textures in three.js 【发布时间】:2021-01-29 01:54:00 【问题描述】:

我正在加载一个 fbx 模型,其中包含多个使用 Cinema4D 制作的对象。 加载模型时,我会收到此警告控制台消息。

THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer.

我知道这条消息是关于普通图层、凹凸贴图或其他的,但在 fbx 文件中加载了它自己的 url。任何人都知道是否有任何方法可以正确加载它?还是以不同于 C4D 的方式导出?

谢谢

【问题讨论】:

【参考方案1】:

默认情况下,Three.js 只为每个网格绘制一种纹理类型。例如,您只能将一个纹理分配给material.map,而不能将它们一层层叠加。听起来您的 Cinema4D 对象有两个或多个纹理,一个层叠在另一个之上。

为了将多个纹理叠加在一起,您需要为每个纹理创建一个网格。也许在位置上给它们一个非常小的偏移量,以便以正确的顺序将它们分层。或者,您可以将分层纹理拼合为单个图像。

【讨论】:

【参考方案2】:

如何使用具有略微不同缩放和不同纹理的多个网格?就像马特罗什卡木偶一样。 因此,如果纹理是透明的,您也可以看到底层的纹理。

【讨论】:

以上是关于three.js 中的分层纹理的主要内容,如果未能解决你的问题,请参考以下文章

修复了 Three.js 中的纹理大小

在 three.js 中的球体上使用纹理

Three.js中同一网格面上的多个透明纹理

如何等待纹理完成从 Three.js 中的 JSON 模型加载?

three.js 改变材质上的纹理

three.js如何使纹理“生成”纹理坐标,就像搅拌器循环一样