2
$\begingroup$

I am attempting to create a plane and set the color; the following code throws an error at this line:

bpy.data.materials['RSgreen'].diffuse_color=(0,0,0)

the error is: ValueError: bpy_struct: item.attr = val: sequences of dimension 0 should contain 4 items, not 3

which makes no sense to me; diffuse_color calls for 3 parameters in the documentation.

bpy.ops.mesh.primitive_plane_add(size=4,enter_editmode=False,location=(-2,-2,0.01))
bpy.context.active_object.name='Plane2'
bpy.ops.material.new()
bpy.data.materials[1].name='RSgreen'
bpy.data.materials['RSgreen'].diffuse_color=(0,0,0)
bpy.context.object.data.materials.append(bpy.data.materials['RSgreen'])
$\endgroup$
3
$\begingroup$

You saw the wrong version of document, 2.80 change a lot. Ones should always use new document page for 2.80 version:

Material(ID) - Blender 2.80 API

diffuse_color

Diffuse color of the material

Type: float array of 4 items in [0, inf], default (0.0, 0.0, 0.0, 0.0)

$\endgroup$
  • $\begingroup$ What do the parameters mean? R,G,B,? ?? $\endgroup$ – vndep Jul 12 at 23:53
  • 1
    $\begingroup$ @vndep RGB and Alpha $\endgroup$ – Sazerac Jul 13 at 0:30
  • $\begingroup$ I am trying to get a green color (RGB=0,113,57; hex=#007139). When I pass the array (0,113,57,1) to .diffuse_color I get a light blue color instead. Same result when I convert the 0-255 values to percentiles. Any suggestions as to how to get that green? Maybe diffusion_color isn't the right property? $\endgroup$ – vndep Jul 13 at 1:17
  • 2
    $\begingroup$ @vndep The description say it is an float number, and you should always consider the color value is in 0 to 1 rather 0 to 255. Divide your color value by 255 to fix it $\endgroup$ – Hikariztw Jul 13 at 1:40
  • $\begingroup$ Thanks! That solves it. $\endgroup$ – vndep Jul 13 at 9: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.