import bpy from mathutils import noise import bmesh from math import * def make_vertex_color_material(): mat = bpy.data.materials.new(name="VertexColorMaterial") mat.use_nodes = True bsdf = mat.node_tree.nodes.get("Principled BSDF") color_node = mat.node_tree.nodes.new(type='ShaderNodeVertexColor') color_node.layer_name = "Col" mat.node_tree.links.new(color_node.outputs['Color'], bsdf.inputs['Base Color']) return mat bpy.ops.mesh.primitive_ico_sphere_add(subdivisions=7) obj = bpy.context.active_object for v in obj.data.vertices: v.co *= 1.0 + noise.noise(v.co)/3 for v in obj.data.vertices: v.co *= 1.0 + noise.noise(2 * v.co)/3 obj.data.materials.append(make_vertex_color_material()) bpy.ops.object.mode_set(mode='EDIT') bm = bmesh.from_edit_mesh(obj.data) bm.faces.ensure_lookup_table() color_layer = bm.loops.layers.color.new("Col") face_color = (1, 1, 1, 1) for i, face in enumerate(bm.faces): for loop in face.loops: d_center = loop.vert.co.length loop[color_layer] = (0.5 + noise.noise(20 * loop.vert.co), 0, 0, 1.0) bmesh.update_edit_mesh(obj.data) bpy.ops.object.mode_set(mode='OBJECT') for v in obj.data.vertices: v.co *= 1.0 + noise.noise(20 * v.co)/10