Книга: Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода

Текстуры

Текстуры

Эта программа создает материал с двумя текстурами: текстура image, отображаемая на цвет и альфу, и процедурная bump-текстура. (Может я чего-то недопонимаю, но их там три вообще-то... - прим. пер.)


Используйте этот рисунок как текстуру и измените имя на color.png:


#----------------------------------------------------------
# File texture.py
#----------------------------------------------------------
import bpy, os 
def run(origin):
 # Загрузка файла с рисунком. Измените здесь, если каталог snippets
 # расположен не в Вашем домашнем каталоге.
    realpath = os.path.expanduser('~/snippets/textures/color.png')
    try:
        img = bpy.data.images.load(realpath)
    except:
        raise NameError("Cannot load image %s" % realpath)
    # Создание текстуры image из загруженного рисунка
    cTex = bpy.data.textures.new('ColorTex', type = 'IMAGE')
    cTex.image = img
    # Создание процедурной текстуры
    sTex = bpy.data.textures.new('BumpTex', type = 'STUCCI')
    sTex.noise_basis = 'BLENDER_ORIGINAL'
    sTex.noise_scale = 0.25
    sTex.noise_type = 'SOFT_NOISE'
    sTex.saturation = 1
    sTex.stucci_type = 'PLASTIC'
    sTex.turbulence = 5
    # Создание текстуры blend с цветовой полосой (color ramp)
    # Не знаю, как добавлять элементы к полосе, так что сейчас только два
    bTex = bpy.data.textures.new('BlendTex', type = 'BLEND')
    bTex.progression = 'SPHERICAL'
    bTex.use_color_ramp = True
    ramp = bTex.color_ramp
    values = [(0.6, (1,1,1,1)), (0.8, (0,0,0,1))]
    for n,value in enumerate(values):
        elt = ramp.elements[n]
        (pos, color) = value
        elt.position = pos
        elt.color = color
    # Создание материала
    mat = bpy.data.materials.new('TexMat')
    # Добавление текстурного слота для цветной текстуры
    mtex = mat.texture_slots.add()
    mtex.texture = cTex
    mtex.texture_coords = 'UV'
    mtex.use_map_color_diffuse = True
    mtex.use_map_color_emission = True
    mtex.emission_color_factor = 0.5
    mtex.use_map_density = True
    mtex.mapping = 'FLAT'
    # Добавление текстурного слота для bump-текстуры
    mtex = mat.texture_slots.add()
    mtex.texture = sTex
    mtex.texture_coords = 'ORCO'
    mtex.use_map_color_diffuse = False
    mtex.use_map_normal = True
    #mtex.rgb_to_intensity = True
    # Добавление текстурного слота
    mtex = mat.texture_slots.add()
    mtex.texture = bTex
    mtex.texture_coords = 'UV'
    mtex.use_map_color_diffuse = True
    mtex.diffuse_color_factor = 1.0
    mtex.blend_type = 'MULTIPLY'
    # Создание нового куба и наложение на него UV-раскладки
    bpy.ops.mesh.primitive_cube_add(location=origin)
    bpy.ops.object.mode_set(mode='EDIT')
    bpy.ops.uv.smart_project()
    bpy.ops.object.mode_set(mode='OBJECT')
    # Добавление материала к текущему объекту
    ob = bpy.context.object
    me = ob.data
    me.materials.append(mat)
    return 
if __name__ == "__main__":
    run((0,0,0))

Оглавление книги


Генерация: 8.380. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз