set_texture
Apply Polyhaven textures to 3D objects in Blender by specifying the object name and texture ID, enabling material application for enhanced visual appearance.
Instructions
Apply a previously downloaded Polyhaven texture to an object.
Parameters:
object_name: Name of the object to apply the texture to
texture_id: ID of the Polyhaven texture to apply (must be downloaded first)
Returns a message indicating success or failure.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| texture_id | Yes |
Implementation Reference
- src/blender_mcp/server.py:467-525 (handler)The handler function for the 'set_texture' MCP tool. It is registered via the @mcp.tool() decorator and implements the tool logic by sending a 'set_texture' command to the Blender connection with the provided object_name and texture_id parameters. Includes detailed response formatting with material information.@mcp.tool() def set_texture( ctx: Context, object_name: str, texture_id: str ) -> str: """ Apply a previously downloaded Polyhaven texture to an object. Parameters: - object_name: Name of the object to apply the texture to - texture_id: ID of the Polyhaven texture to apply (must be downloaded first) Returns a message indicating success or failure. """ try: # Get the global connection blender = get_blender_connection() result = blender.send_command("set_texture", { "object_name": object_name, "texture_id": texture_id }) if "error" in result: return f"Error: {result['error']}" if result.get("success"): material_name = result.get("material", "") maps = ", ".join(result.get("maps", [])) # Add detailed material info material_info = result.get("material_info", {}) node_count = material_info.get("node_count", 0) has_nodes = material_info.get("has_nodes", False) texture_nodes = material_info.get("texture_nodes", []) output = f"Successfully applied texture '{texture_id}' to {object_name}.\n" output += f"Using material '{material_name}' with maps: {maps}.\n\n" output += f"Material has nodes: {has_nodes}\n" output += f"Total node count: {node_count}\n\n" if texture_nodes: output += "Texture nodes:\n" for node in texture_nodes: output += f"- {node['name']} using image: {node['image']}\n" if node['connections']: output += " Connections:\n" for conn in node['connections']: output += f" {conn}\n" else: output += "No texture nodes found in the material.\n" return output else: return f"Failed to apply texture: {result.get('message', 'Unknown error')}" except Exception as e: logger.error(f"Error applying texture: {str(e)}") return f"Error applying texture: {str(e)}"
- src/blender_mcp/server.py:467-467 (registration)The @mcp.tool() decorator registers the set_texture function as an MCP tool.@mcp.tool()
- src/blender_mcp/server.py:473-481 (schema)Docstring defining the input parameters and return type for the set_texture tool, serving as the schema description.""" Apply a previously downloaded Polyhaven texture to an object. Parameters: - object_name: Name of the object to apply the texture to - texture_id: ID of the Polyhaven texture to apply (must be downloaded first) Returns a message indicating success or failure. """