17
$\begingroup$

How can I assign a new material to an object in the scene via Python?

$\endgroup$
37
$\begingroup$

Here you go, code with some safety checks:

import bpy
ob = bpy.context.active_object

# Get material
mat = bpy.data.materials.get("Material")
if mat is None:
    # create material
    mat = bpy.data.materials.new(name="Material")

# Assign it to object
if ob.data.materials:
    # assign to 1st material slot
    ob.data.materials[0] = mat
else:
    # no slots
    ob.data.materials.append(mat)
$\endgroup$
  • $\begingroup$ Thanks for your answer. Is it also possible to specifiy which material (glossy, glass, diffuse) and also the different properties (r,g,b, shinyness)? $\endgroup$ – binaryBigInt Jan 19 '15 at 13:13
  • 1
    $\begingroup$ Yes, it is also possible to manipulate the material nodes with python, but that is for another question $\endgroup$ – Jaroslav Jerryno Novotny Jan 19 '15 at 13:15
  • 1
    $\begingroup$ Amazing. These sanity checks actually helped me understand how the things work a lot! $\endgroup$ – Sibbs Gambling Nov 17 '16 at 19:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.