Cotton fiber spun into yarn, then woven into cloth on a loom. The default fabric of T-shirts, denim, bedsheets, canvas, prototype upholstery. Soft, absorbent, breathable, wrinkles. Grown by the millions of tons each year, with a sustainability story that depends heavily on origin and irrigation.
Cellulose fiber from Gossypium spp. seed bolls, ~95% cellulose, 5% other (waxes, pectin, ash). Spun staple-fiber yarn (vs. continuous-filament synthetics). Plain weave is the simplest interlacing — 1-over, 1-under. Mass per area expressed in oz/yd² (US) or g/m² (rest of world). Weights span 1 oz/yd² (voile) to 24 oz/yd² (heavy duck).
Go back three centuries and you'd be much more likely to have close, even personal connections with those who made the things you needed — from tailors to potters, butchers to bakers, blacksmiths to carpenters. I am not naively painting some rose-tinted picture of pre-industrial revolution life, but a shorter distance between production and consumption had some advantages. Local production made visible to the immediate community any waste or pollution being generated in the process; we would know about poor working conditions because the people enduring them would be from our village or town.
Nothing should be made by man's labour which is not worth making or which must be made by labour degrading to the makers.
Although he worked with others on designs for furniture, Morris was, in the end, a designer of surfaces, and his textiles, wallpapers and carpets testify to his skill as a pattern-maker.
Principled BSDF defaults derived from the sphere fibrous finish. Reasonable seed for Blender, Substance, Keyshot, Rhino — tune per material. Or grab the whole library at once: ForMaterials library →
# finish: fibrous albedo #1f2d55 metallic 0.00 roughness 0.70 ior 1.45 transmission 0.00 clearcoat 0.00 sheen 0.70 anisotropic 0.50
{
"albedo": "#1f2d55",
"metallic": 0.0,
"roughness": 0.7,
"ior": 1.45,
"transmission": 0.0,
"clearcoat": 0.0,
"sheen": 0.7,
"anisotropic": 0.5
}
# Blender 4.x — Principled BSDF
# Woven Cotton (Plain Weave) · finish: fibrous
import bpy
mat = bpy.data.materials.new(name="mat_cotton_woven")
mat.use_nodes = True
bsdf = mat.node_tree.nodes["Principled BSDF"]
bsdf.inputs["Base Color"].default_value = (0.0137, 0.0262, 0.0908, 1.0)
bsdf.inputs["Metallic"].default_value = 0.000
bsdf.inputs["Roughness"].default_value = 0.700
bsdf.inputs["IOR"].default_value = 1.450
bsdf.inputs["Transmission Weight"].default_value = 0.000
bsdf.inputs["Coat Weight"].default_value = 0.000
bsdf.inputs["Sheen Weight"].default_value = 0.700
bsdf.inputs["Anisotropic"].default_value = 0.500
# KeyShot 11+ — lux Python API, Generic material
# Woven Cotton (Plain Weave) · finish: fibrous
# Run from Window → Scripting Console
import lux
mat = lux.createMaterial(name="mat_cotton_woven", materialType="Generic")
mat.setProperty("diffuse", (31, 45, 85)) # 8-bit sRGB
mat.setProperty("metallic", 0.000)
mat.setProperty("roughness", 0.700)
mat.setProperty("indexOfRefraction", 1.450)
mat.setProperty("transparency", 0.000)
mat.setProperty("coatingWeight", 0.000)
{
"_format": "Substance Designer / Painter \u2014 pbrMetalRough constants",
"_about": "Woven Cotton (Plain Weave) \u00b7 finish: fibrous",
"baseColor": {
"r": 0.0137,
"g": 0.0262,
"b": 0.0908
},
"metallic": 0.0,
"roughness": 0.7,
"ior": 1.45,
"opacity": 1.0,
"anisotropyLevel": 0.5,
"_notes": "Channels listed are the standard Substance pbrMetalRough output. Drop into a Uniform Color node per channel, or as the constant input on a layered stack."
}
{
"asset": {
"version": "2.0",
"generator": "ForMatter"
},
"materials": [
{
"name": "mat_cotton_woven",
"pbrMetallicRoughness": {
"baseColorFactor": [
0.0137,
0.0262,
0.0908,
1.0
],
"metallicFactor": 0.0,
"roughnessFactor": 0.7
},
"extensions": {
"KHR_materials_ior": {
"ior": 1.45
},
"KHR_materials_sheen": {
"sheenColorFactor": [
1.0,
1.0,
1.0
],
"sheenRoughnessFactor": 0.7
}
}
}
]
}
# USD Preview Surface — UsdShade.MaterialLook prim attributes
# Woven Cotton (Plain Weave) · finish: fibrous
def Material "mat_cotton_woven" {
token outputs:surface.connect = </mat_cotton_woven/PreviewSurface.outputs:surface>
def Shader "PreviewSurface" {
uniform token info:id = "UsdPreviewSurface"
color3f inputs:diffuseColor = (0.0137, 0.0262, 0.0908)
float inputs:metallic = 0.000
float inputs:roughness = 0.700
float inputs:ior = 1.450
float inputs:opacity = 1.000
float inputs:clearcoat = 0.000
token outputs:surface
}
}
Editorial pass 2026-04-28; Better Cotton Initiative literature; Textile Reference Book.
Block-printed indigo-discharged cotton by William Morris; first design adding red alizarin and yellow weld to the indigo discharge ground at Merton Abbey.
House vocabulary — terms ForMatter uses with intent.
Materials and processes for people who design and make things.
A local-first library of materials, processes, applications, and finishes — equal weight, citable everywhere, so a student can move from "what is this" toward "what's actually buildable here, now, by me." Part of the renato.design ecosystem — sibling of Plenum, Specimen, Ingenue, gesture, graf, and the Renato Rhino plug-ins. Form and matter, inseparable.
Half of teaching materials is teaching how the material is made into the thing. The standard subscription library was always light on that half. The wedge here isn't better samples or a prettier interface — it's treating Process as a peer entity, not a footnote.
Conway, Lefteri, Forty, Sparke, ASM, GIA. Every voice: Voices.
Local to this browser. No telemetry.