โ† All examples

procedural textures

Quilted and deep-buttoned fabric

Generate tileable PBR maps of quilted fabric: diamond, square or channel quilting with puffed panels, stitched seams, crinkles and a fine weave, or deep-buttoned tufting. Use for bedspreads, puffer jackets, moving blankets, padded walls, headboards and Chesterfield sofas.

Recorded render of Quilted and deep-buttoned fabric

What this component contains

  • ATTRIBUTION.md
  • LICENSE
  • README.md
  • blender_material.py
  • component.json
  • material.tres
  • pngio.py
  • preview.png
  • quilted_fabric.py
  • test_package.py
  • texkit.py
  • verification/native.json

How it works

Entry point
generate
Maps
albedo, normal, roughness, height, ao
Parameters
pattern, cells, aspect, puff, stitches, buttons, wrinkles, sheen and 4 more
Presets
default, puffer_channel, square_satin, chesterfield, moving_blanket
Tileable
yes
Command line
python quilted_fabric.py --size 1024 --seed 7 --preset NAME --out DIR [--width W --height H] [--set NAME=VALUE] [--directx-normal] [--orm]
Godot material
material.tres
Blender builder
blender_material.build_material(folder)

Recorded checks

godot 4.7.2.stable.official.ed1daf0bf

  • command_line_generates_declared_maps
  • maps_decode
  • maps_have_declared_size_and_channels
  • maps_tile_without_a_seam
  • normal_vectors_unit_length_facing_out
  • maps_carry_detail
  • godot_imports_the_maps
  • godot_material_template_loads_every_map
  • godot_compatibility_render
  • capture_shows_the_textured_surface
  • blender_builds_the_material

Limits to consider

Panels are pillow profiles between straight seam lines, not cloth simulation: there is no drape, gathering or sagging, and tufting folds follow the seams instead of radiating from each button. Diamonds keep whole panel counts across and down the tile, so the aspect is quantized. Stitches are dashes in the seam groove; thread twist is not modelled. The weave is a fine cosine grid that fades out when it would be finer than a few pixels. Occlusion is a blurred-height estimate, not ray traced.