โ† All examples

procedural textures

Fur pelt from strands along a flow field

Generate tileable PBR maps of animal fur: thousands of tapered strands combed along a smooth flow field, gathered into locks, with banded hairs and coat patterns (solid, tabby stripes, spots or rosettes). Use for creature and animal skins, fur trims, rugs, plush toys and stylized characters.

Recorded render of Fur pelt from strands along a flow field

What this component contains

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

How it works

Entry point
generate
Maps
albedo, normal, roughness, height, ao
Parameters
length, thickness, coverage, swirl, clumping, pattern, banding, gloss and 3 more
Presets
default, leopard_rosettes, black_glossy, white_fluffy, dalmatian_spots
Tileable
yes
Command line
python fur_strands.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

Fur is painted as flat strands in a height field, so it reads as fur lying flat seen from above; it is not hair geometry, cards or shells, and it has no silhouette fuzz, anisotropic hair shading or translucency. Strands are three straight segments each, so long fur looks combed rather than tangled. Coat patterns are stylized periodic fields (stripes, spots, rings), not species markings. Strands are drawn at least about a pixel wide, so the strand count drops at small sizes. Occlusion is a blurred-height estimate.