No description
Find a file
2026-07-02 18:46:42 -07:00
docs Texturly v0.12.0 — Blender 2.93 support, distance-field trim, Unity texture export 2026-07-02 18:46:18 -07:00
.gitignore Stop tracking built release zips; gitignore Texturly-*.zip (release assets, not source) 2026-07-01 13:07:04 -07:00
__init__.py Texturly v0.12.0 — Blender 2.93 support, distance-field trim, Unity texture export 2026-07-02 18:46:18 -07:00
ASSESSMENT.md Texturly v0.10.0 — correctness pass + baked-texture trim redesign + edge polish 2026-07-01 20:22:56 -07:00
blender_manifest.toml Texturly v0.12.0 — Blender 2.93 support, distance-field trim, Unity texture export 2026-07-02 18:46:18 -07:00
compat.py Texturly v0.12.0 — Blender 2.93 support, distance-field trim, Unity texture export 2026-07-02 18:46:18 -07:00
LICENSE feat: Texturly 0.1.0 — quick materials & textures for VRChat worlds 2026-06-30 22:09:25 -07:00
operators.py Texturly v0.12.0 — Blender 2.93 support, distance-field trim, Unity texture export 2026-07-02 18:46:18 -07:00
patterns.py fix: patterns now visibly textured + trim actually shows + install fixes (0.3.1) 2026-06-30 23:03:22 -07:00
presets.py feat: trim PBR + depth, more presets, Export-for-Unity (0.7.0) 2026-07-01 02:26:12 -07:00
README.md Texturly v0.12.0 — Blender 2.93 support, distance-field trim, Unity texture export 2026-07-02 18:46:18 -07:00
ui.py Texturly v0.12.0 — Blender 2.93 support, distance-field trim, Unity texture export 2026-07-02 18:46:18 -07:00
updater.py Texturly v0.10.0 — correctness pass + baked-texture trim redesign + edge polish 2026-07-01 20:22:56 -07:00

Texturly

Quick materials & textures for VRChat worlds — a standalone Blender add-on by Unity AI Lab. Point it at world / instance geometry (not avatars): pick a material, trim your edges, bake a texture, done.

What it does

Materials

  • One-click PBR materials — pick a preset (Concrete, Asphalt, Brick, Wood, Plastic, Rubber, Glass, Gold, Silver, Chrome, Copper, Iron, Brushed Metal, Emission) or dial it in yourself with Base Color, Reflectivity (metallic), Roughness, Shine (specular), and Emission. Go from concrete to gold in one click.
  • Procedural patterns — layer a surface pattern between two colors: Checker, Bricks, Noise (concrete/grime/stone), Gradient, Wood Grain, Voronoi Cells, or Dots, with adjustable scale. Optionally let the pattern vary roughness for natural surface break-up.

Edges & trim

  • Selection helpers — let Texturly do the selecting: Select by Angle (auto-pick edges sharper than N°), Select Boundaries, Select Seams, plus Mark Sharp / Mark Seam. Or just select edges yourself in Edit Mode.
  • Edge trim — lay a real trim material (gold, silver, chrome, a solid color, anything) along the edges you choose (Selected / Sharp / UV Seams / Boundary / Auto) at a set Width (thin gold line ↔ thick gold band). The trim is baked into the object's texture as a band along those edges — no geometry is added, so your base mesh (verts, normals, corners, smooth shading) is left exactly as-is, there's no floating plate and no see-through gap. It works the same on cubes, arches, n-gons, curved low-poly and messy meshes like Suzanne. Stack as many trims as you like (gold on the corners, silver on the seams, …) and remove them individually; it's fully undoable. Because it's a standard Principled material + baked maps, what you see in Blender is what you get in Unity / VRChat — trim needs UVs (Texturly auto-unwraps if there are none).

Textures

  • Generate Texture — bake the current pattern + colors to a standalone image texture (PNG), no object required. "Create a texture for me."
  • Bake to texture — bake an object's material color to an image (auto-unwraps if needed).
  • Bake PBR map set — bake Diffuse / Roughness / Metallic / Normal / Emission / AO each to its own image (roughness/metallic/normal/AO in Non-Color space). (Metallic is baked via an emission-swap, since Cycles has no native metallic pass.) Saves PNGs next to your .blend (or packs them if unsaved).

Exporting to Unity / VRChat — the trim previews live in Blender as a node material, but Unity can't reconstruct a node graph, so bake it to textures first:

  1. Bake for Unity — bakes the trim + base into image textures (base colour / metallic / roughness / emission) and replaces the material with a plain Principled that uses those images. Now it's a normal textured material.
  2. Export for Unity — writes FBX + glTF (GLB) with Unity/VRChat-friendly settings, textures carried through, into a TexturlyExport folder next to your .blend.

Both buttons are in the Bake panel. (If you Export before baking, Texturly warns you the trim isn't baked yet.) Tip: if trim lines look harsh, raise Bake Size (2048/4096).

Where it lives

3D View → Sidebar (N) → Texturly tab: Material, Trim, Bake, and Lab Plugins panels.

Updates

Texturly checks the Unity AI Lab Forgejo for newer releases so you never have to hunt the zip and reinstall by hand. When a newer version exists, an update banner appears in the Material panel — click Download & Install and it pulls the release zip from git.unityailab.com, installs it over the top, and a Blender restart finishes the swap. You can also check manually from Edit → Preferences → Add-ons → Texturly (there's a Check for updates on startup toggle there too, on by default). The check is anonymous and non-blocking; if the host is unreachable it just quietly does nothing.

Blender version support

Single codebase spanning 2.93 LTS → 3.x → 4.2 LTS → 5.x via a compatibility layer (compat.py) + dual packaging (legacy bl_info for 2.934.1, blender_manifest.toml extension for 4.2+). 2.93 LTS is a first-class target — it's a top-recommended Blender for VRChat authoring.

The compat layer feature-detects per version and loads the path that works rather than hard-coding one API: the edge-trim material uses the unified Mix node on Blender 3.4+ and falls back to the classic MixRGB on 2.933.3; scalar channels are built from Math nodes (present on every version); the Blender 4.0 Principled BSDF socket renames are resolved automatically; images are created as data/Non-Color without the newer is_data= argument. Verified on Blender 2.93.18 and 5.1.2 (the trim + PBR bake pipeline runs identically, producing standard textures on both). On startup the console prints which mix path loaded.

Updating: after installing a new version, restart Blender — Python add-ons keep the old code in memory until a restart, so reinstalling over a running Blender (or just opening a new file) won't load the update. The built-in updater (Preferences → Add-ons → Texturly → Check for UpdatesDownload & Install) does the swap and reminds you to restart.

Standalone + plays nice

Texturly is fully standalone. It detects sibling Unity AI Lab plugins (Cats Blender Expanded, Deform Doctor, Jiggle Lab) for a friendly note in the Lab Plugins panel, but shares no namespace with them (texturly.* vs cats_* / deformdr.* / jigglelab.*), so there are zero registration conflicts.

License

GPL-3.0-or-later. Original work by Unity AI Lab. See LICENSE.