﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Dev%3APy%2FScripts%2FCookbook%2FCode_snippets%2FMaterials_and_textures</id>
	<title>Dev:Py/Scripts/Cookbook/Code snippets/Materials and textures - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Dev%3APy%2FScripts%2FCookbook%2FCode_snippets%2FMaterials_and_textures"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Py/Scripts/Cookbook/Code_snippets/Materials_and_textures&amp;action=history"/>
	<updated>2026-06-03T15:21:41Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Dev:Py/Scripts/Cookbook/Code_snippets/Materials_and_textures&amp;diff=104671&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Py/Scripts/Cookbook/Code_snippets/Materials_and_textures&amp;diff=104671&amp;oldid=prev"/>
		<updated>2018-06-28T19:43:18Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2018年6月28日 (木) 19:43時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Yamyam</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Dev:Py/Scripts/Cookbook/Code_snippets/Materials_and_textures&amp;diff=104670&amp;oldid=prev</id>
		<title>wiki&gt;Brecht: moved Dev:2.5/Py/Scripts/Cookbook/Code snippets/Materials and textures to Dev:Py/Scripts/Cookbook/Code snippets/Materials and textures: remove version namespace</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Py/Scripts/Cookbook/Code_snippets/Materials_and_textures&amp;diff=104670&amp;oldid=prev"/>
		<updated>2015-12-27T19:24:32Z</updated>

		<summary type="html">&lt;p&gt;moved &lt;a href=&quot;/Dev:2.5/Py/Scripts/Cookbook/Code_snippets/Materials_and_textures&quot; class=&quot;mw-redirect&quot; title=&quot;Dev:2.5/Py/Scripts/Cookbook/Code snippets/Materials and textures&quot;&gt;Dev:2.5/Py/Scripts/Cookbook/Code snippets/Materials and textures&lt;/a&gt; to &lt;a href=&quot;/Dev:Py/Scripts/Cookbook/Code_snippets/Materials_and_textures&quot; title=&quot;Dev:Py/Scripts/Cookbook/Code snippets/Materials and textures&quot;&gt;Dev:Py/Scripts/Cookbook/Code snippets/Materials and textures&lt;/a&gt;: remove version namespace&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Page/Header|2.5x|Dev:2.5/Py/Scripts/Cookbook/Code_snippets/Three_ways_to_create_objects|&lt;br /&gt;
Dev:2.5/Py/Scripts/Cookbook/Code_snippets/Actions_and_drivers}}&lt;br /&gt;
=Materials and textures=&lt;br /&gt;
==Materials==&lt;br /&gt;
This program adds a red, opaque material and a blue, semi-transparent one, add assigns them to a cube an sphere, respectively.&lt;br /&gt;
[[File:Code_Snippets_Material.png|640px]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#----------------------------------------------------------&lt;br /&gt;
# File material.py&lt;br /&gt;
#----------------------------------------------------------&lt;br /&gt;
import bpy&lt;br /&gt;
&lt;br /&gt;
def makeMaterial(name, diffuse, specular, alpha):&lt;br /&gt;
    mat = bpy.data.materials.new(name)&lt;br /&gt;
    mat.diffuse_color = diffuse&lt;br /&gt;
    mat.diffuse_shader = 'LAMBERT' &lt;br /&gt;
    mat.diffuse_intensity = 1.0 &lt;br /&gt;
    mat.specular_color = specular&lt;br /&gt;
    mat.specular_shader = 'COOKTORR'&lt;br /&gt;
    mat.specular_intensity = 0.5&lt;br /&gt;
    mat.alpha = alpha&lt;br /&gt;
    mat.ambient = 1&lt;br /&gt;
    return mat&lt;br /&gt;
&lt;br /&gt;
def setMaterial(ob, mat):&lt;br /&gt;
    me = ob.data&lt;br /&gt;
    me.materials.append(mat)&lt;br /&gt;
&lt;br /&gt;
def run(origin):&lt;br /&gt;
    # Create two materials&lt;br /&gt;
    red = makeMaterial('Red', (1,0,0), (1,1,1), 1)&lt;br /&gt;
    blue = makeMaterial('BlueSemi', (0,0,1), (0.5,0.5,0), 0.5)&lt;br /&gt;
&lt;br /&gt;
    # Create red cube&lt;br /&gt;
    bpy.ops.mesh.primitive_cube_add(location=origin)&lt;br /&gt;
    setMaterial(bpy.context.object, red)&lt;br /&gt;
    # and blue sphere&lt;br /&gt;
    bpy.ops.mesh.primitive_uv_sphere_add(location=origin)&lt;br /&gt;
    bpy.ops.transform.translate(value=(1,0,0))&lt;br /&gt;
    setMaterial(bpy.context.object, blue)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    run((0,0,0))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Textures==&lt;br /&gt;
This program creates a material with two textures: an image texture mapped to color and alpha, and a procedural bump texture.&lt;br /&gt;
[[File:Code_Snippets_Texture.png|640px]]&lt;br /&gt;
Use this pic like texture and change the name in color.png:&lt;br /&gt;
[[File:Code_Snippets_color.png|640px]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#----------------------------------------------------------&lt;br /&gt;
# File texture.py&lt;br /&gt;
#----------------------------------------------------------&lt;br /&gt;
import bpy, os&lt;br /&gt;
&lt;br /&gt;
def run(origin):&lt;br /&gt;
    # Load image file. Change here if the snippet folder is &lt;br /&gt;
    # not located in you home directory.&lt;br /&gt;
    realpath = os.path.expanduser('~/snippets/textures/color.png')&lt;br /&gt;
    try:&lt;br /&gt;
        img = bpy.data.images.load(realpath)&lt;br /&gt;
    except:&lt;br /&gt;
        raise NameError(&amp;quot;Cannot load image %s&amp;quot; % realpath)&lt;br /&gt;
&lt;br /&gt;
    # Create image texture from image&lt;br /&gt;
    cTex = bpy.data.textures.new('ColorTex', type = 'IMAGE')&lt;br /&gt;
    cTex.image = img&lt;br /&gt;
&lt;br /&gt;
    # Create procedural texture &lt;br /&gt;
    sTex = bpy.data.textures.new('BumpTex', type = 'STUCCI')&lt;br /&gt;
    sTex.noise_basis = 'BLENDER_ORIGINAL' &lt;br /&gt;
    sTex.noise_scale = 0.25 &lt;br /&gt;
    sTex.noise_type = 'SOFT_NOISE' &lt;br /&gt;
    sTex.saturation = 1 &lt;br /&gt;
    sTex.stucci_type = 'PLASTIC' &lt;br /&gt;
    sTex.turbulence = 5 &lt;br /&gt;
&lt;br /&gt;
    # Create blend texture with color ramp&lt;br /&gt;
    # Don't know how to add elements to ramp, so only two for now&lt;br /&gt;
    bTex = bpy.data.textures.new('BlendTex', type = 'BLEND')&lt;br /&gt;
    bTex.progression = 'SPHERICAL'&lt;br /&gt;
    bTex.use_color_ramp = True&lt;br /&gt;
    ramp = bTex.color_ramp&lt;br /&gt;
    values = [(0.6, (1,1,1,1)), (0.8, (0,0,0,1))]&lt;br /&gt;
    for n,value in enumerate(values):&lt;br /&gt;
        elt = ramp.elements[n]&lt;br /&gt;
        (pos, color) = value&lt;br /&gt;
        elt.position = pos&lt;br /&gt;
        elt.color = color&lt;br /&gt;
&lt;br /&gt;
    # Create material&lt;br /&gt;
    mat = bpy.data.materials.new('TexMat')&lt;br /&gt;
&lt;br /&gt;
    # Add texture slot for color texture&lt;br /&gt;
    mtex = mat.texture_slots.add()&lt;br /&gt;
    mtex.texture = cTex&lt;br /&gt;
    mtex.texture_coords = 'UV'&lt;br /&gt;
    mtex.use_map_color_diffuse = True &lt;br /&gt;
    mtex.use_map_color_emission = True &lt;br /&gt;
    mtex.emission_color_factor = 0.5&lt;br /&gt;
    mtex.use_map_density = True &lt;br /&gt;
    mtex.mapping = 'FLAT' &lt;br /&gt;
&lt;br /&gt;
    # Add texture slot for bump texture&lt;br /&gt;
    mtex = mat.texture_slots.add()&lt;br /&gt;
    mtex.texture = sTex&lt;br /&gt;
    mtex.texture_coords = 'ORCO'&lt;br /&gt;
    mtex.use_map_color_diffuse = False&lt;br /&gt;
    mtex.use_map_normal = True &lt;br /&gt;
    #mtex.rgb_to_intensity = True&lt;br /&gt;
&lt;br /&gt;
    # Add texture slot &lt;br /&gt;
    mtex = mat.texture_slots.add()&lt;br /&gt;
    mtex.texture = bTex&lt;br /&gt;
    mtex.texture_coords = 'UV'&lt;br /&gt;
    mtex.use_map_color_diffuse = True &lt;br /&gt;
    mtex.diffuse_color_factor = 1.0&lt;br /&gt;
    mtex.blend_type = 'MULTIPLY'&lt;br /&gt;
&lt;br /&gt;
    # Create new cube and give it UVs&lt;br /&gt;
    bpy.ops.mesh.primitive_cube_add(location=origin)&lt;br /&gt;
    bpy.ops.object.mode_set(mode='EDIT')&lt;br /&gt;
    bpy.ops.uv.smart_project()&lt;br /&gt;
    bpy.ops.object.mode_set(mode='OBJECT')&lt;br /&gt;
&lt;br /&gt;
    # Add material to current object&lt;br /&gt;
    ob = bpy.context.object&lt;br /&gt;
    me = ob.data&lt;br /&gt;
    me.materials.append(mat)&lt;br /&gt;
&lt;br /&gt;
    return&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    run((0,0,0))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Multiple materials==&lt;br /&gt;
This program adds three materials to the same mesh.&lt;br /&gt;
[[File:Code_Snippets_MultiMaterial.png|640px]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#----------------------------------------------------------&lt;br /&gt;
# File multi_material.py&lt;br /&gt;
#----------------------------------------------------------&lt;br /&gt;
import bpy&lt;br /&gt;
&lt;br /&gt;
def run(origin):&lt;br /&gt;
    # Create three materials&lt;br /&gt;
    red = bpy.data.materials.new('Red')&lt;br /&gt;
    red.diffuse_color = (1,0,0)&lt;br /&gt;
    blue = bpy.data.materials.new('Blue')&lt;br /&gt;
    blue.diffuse_color = (0,0,1)&lt;br /&gt;
    yellow = bpy.data.materials.new('Yellow')&lt;br /&gt;
    yellow.diffuse_color = (1,1,0)&lt;br /&gt;
&lt;br /&gt;
    # Create mesh and assign materials&lt;br /&gt;
    bpy.ops.mesh.primitive_uv_sphere_add(&lt;br /&gt;
        segments = 16,&lt;br /&gt;
        ring_count = 8, &lt;br /&gt;
        location=origin)&lt;br /&gt;
    ob = bpy.context.object&lt;br /&gt;
    ob.name = 'MultiMatSphere'&lt;br /&gt;
    me = ob.data&lt;br /&gt;
    me.materials.append(red)&lt;br /&gt;
    me.materials.append(blue)&lt;br /&gt;
    me.materials.append(yellow)&lt;br /&gt;
&lt;br /&gt;
    # Assign materials to faces&lt;br /&gt;
    for f in me.faces:&lt;br /&gt;
        f.material_index = f.index % 3&lt;br /&gt;
&lt;br /&gt;
    # Set left half of sphere smooth, right half flat shading&lt;br /&gt;
    for f in me.faces:&lt;br /&gt;
        f.use_smooth = (f.center[0] &amp;lt; 0)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    run((0,0,0))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==UV layers==&lt;br /&gt;
This program adds two UV layers to a mesh.&lt;br /&gt;
[[File:Code_Snippets_UVS.png|640px]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#----------------------------------------------------------&lt;br /&gt;
# File uvs.py&lt;br /&gt;
#----------------------------------------------------------&lt;br /&gt;
import bpy&lt;br /&gt;
import os&lt;br /&gt;
&lt;br /&gt;
def createMesh(origin):&lt;br /&gt;
    # Create mesh and object&lt;br /&gt;
    me = bpy.data.meshes.new('TetraMesh')&lt;br /&gt;
    ob = bpy.data.objects.new('Tetra', me)&lt;br /&gt;
    ob.location = origin&lt;br /&gt;
    # Link object to scene&lt;br /&gt;
    scn = bpy.context.scene&lt;br /&gt;
    scn.objects.link(ob)&lt;br /&gt;
    scn.objects.active = ob&lt;br /&gt;
    scn.update()&lt;br /&gt;
&lt;br /&gt;
    # List of verts and faces&lt;br /&gt;
    verts = [&lt;br /&gt;
        (1.41936, 1.41936, -1), &lt;br /&gt;
        (0.589378, -1.67818, -1), &lt;br /&gt;
        (-1.67818, 0.58938, -1), &lt;br /&gt;
        (0, 0, 1)&lt;br /&gt;
    ]&lt;br /&gt;
    faces = [(1,0,3), (3,2,1), (3,0,2), (0,1,2)]&lt;br /&gt;
    # Create mesh from given verts, edges, faces. Either edges or&lt;br /&gt;
    # faces should be [], or you ask for problems&lt;br /&gt;
    me.from_pydata(verts, [], faces)&lt;br /&gt;
&lt;br /&gt;
    # Update mesh with new data&lt;br /&gt;
    me.update(calc_edges=True)&lt;br /&gt;
&lt;br /&gt;
    # First texture layer: Main UV texture&lt;br /&gt;
    texFaces = [&lt;br /&gt;
        [(0.6,0.6), (1,1), (0,1)],&lt;br /&gt;
        [(0,1), (0.6,0), (0.6,0.6)],&lt;br /&gt;
        [(0,1), (0,0), (0.6,0)],&lt;br /&gt;
        [(1,1), (0.6,0.6), (0.6,0)]&lt;br /&gt;
    ]&lt;br /&gt;
    uvMain = createTextureLayer(&amp;quot;UVMain&amp;quot;, me, texFaces)&lt;br /&gt;
&lt;br /&gt;
    # Second texture layer: Front projection&lt;br /&gt;
    texFaces = [&lt;br /&gt;
        [(0.732051,0), (1,0), (0.541778,1)],&lt;br /&gt;
        [(0.541778,1), (0,0), (0.732051,0)],&lt;br /&gt;
        [(0.541778,1), (1,0), (0,0)],&lt;br /&gt;
        [(1,0), (0.732051,0), (0,0)]&lt;br /&gt;
    ]&lt;br /&gt;
    uvFront = createTextureLayer(&amp;quot;UVFront&amp;quot;, me, texFaces)&lt;br /&gt;
&lt;br /&gt;
    # Third texture layer: Smart projection&lt;br /&gt;
    bpy.ops.mesh.uv_texture_add()&lt;br /&gt;
    uvCyl = me.uv_textures.active&lt;br /&gt;
    uvCyl.name = 'UVCyl'&lt;br /&gt;
    bpy.ops.object.mode_set(mode='EDIT')&lt;br /&gt;
    bpy.ops.uv.cylinder_project()&lt;br /&gt;
    bpy.ops.object.mode_set(mode='OBJECT')&lt;br /&gt;
&lt;br /&gt;
    # Set Main Layer active&lt;br /&gt;
    me.uv_textures[&amp;quot;UVMain&amp;quot;].active = True&lt;br /&gt;
    me.uv_textures[&amp;quot;UVMain&amp;quot;].active_render = True&lt;br /&gt;
    me.uv_textures[&amp;quot;UVFront&amp;quot;].active_render = False&lt;br /&gt;
    me.uv_textures[&amp;quot;UVCyl&amp;quot;].active_render = False&lt;br /&gt;
&lt;br /&gt;
    return ob&lt;br /&gt;
&lt;br /&gt;
def createTextureLayer(name, me, texFaces):&lt;br /&gt;
    uvtex = me.uv_textures.new()&lt;br /&gt;
    uvtex.name = name&lt;br /&gt;
    for n,tf in enumerate(texFaces):&lt;br /&gt;
        datum = uvtex.data[n]&lt;br /&gt;
        datum.uv1 = tf[0]&lt;br /&gt;
        datum.uv2 = tf[1]&lt;br /&gt;
        datum.uv3 = tf[2]&lt;br /&gt;
    return uvtex&lt;br /&gt;
&lt;br /&gt;
def createMaterial():    &lt;br /&gt;
    # Create image texture from image. Change here if the snippet &lt;br /&gt;
    # folder is not located in you home directory.&lt;br /&gt;
    realpath = os.path.expanduser('~/snippets/textures/color.png')&lt;br /&gt;
    tex = bpy.data.textures.new('ColorTex', type = 'IMAGE')&lt;br /&gt;
    tex.image = bpy.data.images.load(realpath)&lt;br /&gt;
    tex.use_alpha = True&lt;br /&gt;
&lt;br /&gt;
    # Create shadeless material and MTex&lt;br /&gt;
    mat = bpy.data.materials.new('TexMat')&lt;br /&gt;
    mat.use_shadeless = True&lt;br /&gt;
    mtex = mat.texture_slots.add()&lt;br /&gt;
    mtex.texture = tex&lt;br /&gt;
    mtex.texture_coords = 'UV'&lt;br /&gt;
    mtex.use_map_color_diffuse = True &lt;br /&gt;
    return mat&lt;br /&gt;
&lt;br /&gt;
def run(origin):&lt;br /&gt;
    ob = createMesh(origin)&lt;br /&gt;
    mat = createMaterial()&lt;br /&gt;
    ob.data.materials.append(mat)&lt;br /&gt;
    return&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    run((0,0,0))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Page/Footer|Dev:2.5/Py/Scripts/Cookbook/Code_snippets/Three_ways_to_create_objects|&lt;br /&gt;
Dev:2.5/Py/Scripts/Cookbook/Code_snippets/Actions_and_drivers}}&lt;/div&gt;</summary>
		<author><name>wiki&gt;Brecht</name></author>
		
	</entry>
</feed>