Skip to content
Back to skills

Polyhaven Texture Apply

ASecurity

Apply realistic PBR textures from PolyHaven to any Blender object. Supports metals, wood, concrete, fabric, and more. Trigger when asked to texture an object, apply a material from PolyHaven, make something look like metal/wood/marble, or change object surface.

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 22, 2026
ai-agentspythongonodesecurity

Works with

  • mcp

Security analysis

A100/100

Scanned September 22, 2026

npx -y skills add MAX-786/claude-3d-harness --skill polyhaven-texture-apply --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Polyhaven Texture Apply?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Polyhaven Texture Apply
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/max-786-polyhaven-texture-apply/badge)](https://www.skillsdirectory.com/skills/max-786-polyhaven-texture-apply)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: polyhaven-texture-apply
description: Apply realistic PBR textures from PolyHaven to any Blender object. Supports metals, wood, concrete, fabric, and more. Trigger when asked to texture an object, apply a material from PolyHaven, make something look like metal/wood/marble, or change object surface.
---

# PolyHaven Texture Apply

Downloads a full PBR texture set (diffuse, roughness, normal, displacement) from PolyHaven and applies it to a specific object in the Blender scene.

> Adapted for claude-3d-harness. The original ran a bundled Node script that opened Blender's add-on socket itself and
> sent it Python built from command-line text. The same steps now go through the MCP server, where each one is visible
> and asks for permission. See `docs/security-review.md`.

## Parameters

| Parameter | Description | Default |
|-----------|-------------|---------|
| `object` | Blender object name to apply the texture to | **required** |
| `texture` | PolyHaven texture asset ID | **required** |
| `resolution` | Texture resolution: 1k, 2k, 4k | `2k` |
| `scale` | UV mapping scale | `1.0` |

## Flow

### Step 1: Find a texture (when the user named a look, not an ID)

`search_polyhaven_assets(asset_type="textures", categories=<keyword>)` lists IDs with their categories.

### Step 2: Download the PBR set

`download_polyhaven_asset(asset_id=<texture>, asset_type="textures", resolution=<resolution>, file_format="jpg")`
returns the name of the material it created and the maps it found.

### Step 3: Apply it

`set_texture(object_name=<object>, texture_id=<texture>)`

If that fails, assign the material by hand. This replaces the material in the object's first slot, which is what was
asked for; the material that was there stays in the file.

```python
import bpy

OBJECT = "<object name>"
MATERIAL = "<material name the download returned>"
SCALE = 1.0

obj = bpy.data.objects.get(OBJECT)
mat = bpy.data.materials.get(MATERIAL)
if obj and mat:
    if obj.data.materials:
        obj.data.materials[0] = mat
    else:
        obj.data.materials.append(mat)
    # Adjust UV scale
    for node in mat.node_tree.nodes:
        if node.type == 'MAPPING':
            node.inputs['Scale'].default_value = (SCALE, SCALE, SCALE)
    print(f"Applied {mat.name} to {obj.name}")
else:
    print(f"Error: obj={'found' if obj else 'missing'}, mat={'found' if mat else 'missing'}")
```

## Popular Textures

- `brushed_metal` — Brushed aluminum/steel
- `carbon_fiber` — Carbon fiber weave
- `marble_01` — White marble
- `wood_cabinet_worn_long` — Aged wood
- `concrete_wall_003` — Raw concrete
- `leather_red_02` — Red leather
- `fabric_pattern_07` — Woven fabric

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…