关于 materials
Materials & Textures 是一项为 Three.js 材质分配 PBR 纹理贴图的技能,涵盖色彩空间设置与纹理平铺。它还指导按表面选择合适的素材,或标出素材缺口,而非使用纯色代替。
主要功能
- 01成套分配 PBR 纹理贴图
- 02正确设置贴图色彩空间
- 03在大面积表面平铺纹理
- 04为场景表面匹配纹理
适用场景
- 01为地形和地面添加纹理
- 02为悬崖应用石材纹理
- 03为地板和墙面添加纹理
- 04查找缺少适配素材的表面
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ drawcall-ai/ skills --skill materials安装后在 Claude Code 中输入/materials确认已加载。
详细介绍
材质与纹理
只设置 color 的 MeshStandardMaterial 看起来会平平无奇,像塑料一样,呈现「未贴纹理的灰色」——这是场景尚未完成的最明显标志。完整的表面应带有纹理贴图。将表面保留为纯色,是适配缺口,而不是材质。
应用一组纹理
市场上的 texture 资源会提供一组 PBR 贴图(基础颜色 + 法线 + 粗糙度/金属度/环境光遮蔽)。加载并一起指定这些贴图:
const loader = new TextureLoader()
const base = loader.load('/texture/grass/basecolor.jpg')
base.colorSpace = SRGBColorSpace // base color is sRGB
const normal = loader.load('/texture/grass/normal.jpg') // every other map is linear (leave default)
const rough = loader.load('/texture/grass/roughness.jpg')
const material = new MeshStandardMaterial({ map: base, normalMap: normal, roughnessMap: rough })
色彩空间——最常见的错误
- 基础颜色和自发光贴图 →
SRGBColorSpace。 忘记设置会让所有内容看起来褪色、发灰。 - 法线/粗糙度/金属度/环境光遮蔽贴图保持线性(默认值——不要将它们标记为 sRGB)。
在当前版本的 Three.js 中,aoMap 默认与主 uv 集共用——无需创建第二个 uv2 属性(这是旧版本的要求)。
大面积表面的平铺
地面和墙壁必须重复平铺纹理,而不是将单张纹理拉伸到整个网格上:
for (const t of [base, normal, rough]) {
t.wrapS = t.wrapT = RepeatWrapping
t.repeat.set(surfaceMeters / tileMeters, surfaceMeters / tileMeters) // ~1 tile per few meters
}
为每个表面匹配合适的纹理——地形用草地/地面纹理,悬崖用石材纹理,地板和墙壁用木板/金属纹理。从资源调查中挑选纹理;如果没有适合某个表面的纹理,请指出这一缺口,不要用纯色凑数。
评论
支持 Markdown