工作流

WebGL 材质工作流

为 Three.js、自定义 WebGL renderer 和浏览器材质预览使用紧凑、可预测的程序化贴图通道。

导出目标
目标
Three.js / 自定义 WebGL
推荐路径
GLB 快速加载,或用 PNG 贴图接入自定义 shader
主要输出
GLB 材质或独立 PNG 贴图

通道设置

Color map

Three.js 中可见 base color texture 使用 sRGB color space,自定义 shader 使用等效颜色转换。

Normal

Normal map 按数据纹理采样,并在材质中调 normal scale,而不是重新烘焙贴图。

Roughness 和 AO

Roughness 与 AO 保持 linear。Three.js 中 AO 还需要 UV2 或对应的第二 UV 处理。

Repeat 和 wrapping

Seamless 材质启用 repeat wrapping,并在代码中设置 repeat 值,让同一导出适配不同模型尺寸。

导入步骤

1

选择 GLB 或贴图文件

需要快速材质载体时使用 GLB;如果 renderer 自己管理 shader 和 texture binding,则使用独立 PNG 贴图。

2

配置纹理色彩空间

Color map 使用 sRGB;roughness、normal、height 和 AO 保持 linear 数据纹理。

3

启用 repeat 行为

为 seamless 表面将 wrapS 和 wrapT 设为 repeat,再通过 material repeat 值或 shader uniforms 控制比例。

4

评估贴图预算

在目标设备上测试分辨率、压缩和通道数量,再把大型贴图组用于生产场景。

常见检查

AO 缺少 UV2

如果 Three.js 中 AO 没有效果,确认几何体具备材质所需的 UV 集。

colorSpace 错误

Base color 被当作 linear 会偏暗;数据贴图被当作 sRGB 会破坏 roughness 或 normal 响应。

大贴图过多

浏览器场景对纹理显存敏感。使用能满足镜头距离的最小分辨率。

工作流 FAQ

GLB 是最简单的 WebGL 路径吗?

用于快速材质查看时是。生产 renderer 通常用独立贴图获得更好的压缩、加载和 shader 输入控制。

Seamless 贴图能在 Three.js 中 repeat 吗?

可以。把 texture wrapping mode 设为 repeat,并在 material 或 texture 实例上控制 repeat scale。