โ† All examples

procedural textures

Overlapping fish scales with growth rings

Generate tileable PBR maps of fish skin: round overlapping scales showing their rear crescents, with growth rings, radial grooves, pigmented edges, a silver colour sheen and koi patches or trout spots. Use for fish, mermaid tails, sea creatures, fantasy armour and aquarium props.

Recorded render of Overlapping fish scales with growth rings

What this component contains

  • ATTRIBUTION.md
  • LICENSE
  • README.md
  • blender_material.py
  • component.json
  • fish_scales.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, metallic, height, ao
Parameters
columns, exposure, circuli, radii, edge_pigment, iridescence, pattern, gloss and 3 more
Presets
default, koi_kohaku, carp_bronze, trout_spotted
Tileable
yes
Command line
python fish_scales.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

Scales are round discs of one size in regular offset rows; the lateral line, fins, the change of scale size along the body and ctenoid spines are out of scope. The head is toward the top of the tile. The sheen is a hue turning across each scale, a stylized stand-in for thin-film reflection that does not change with view angle. Patches and spots are noise fields sampled once per scale. Growth rings fade out where they would be finer than a couple of pixels. Occlusion is a blurred-height estimate.