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

Слои

Слои

Эта программа иллюстрирует три метода установки объекта на новом слое:

1. Создать его на правильном слое.

2. Создать его в слое 1, и изменить Object.layer.

3. Создать его в слое 1, и использовать оператор для его перемещения.

Также показано, как изменять видимость слоёв.


#----------------------------------------------------------
# File layers.py
#----------------------------------------------------------
import bpy 
def createOnLayer(mat):
    for n in range(3, 8):
    # Создание n-угольника в слое n+11
        layers = 20*[False]
        layers[n+11] = True
        bpy.ops.mesh.primitive_circle_add(
            vertices=n,
            radius=0.5,
            fill=True,
            view_align=True,
            layers=layers,
            location=(n-3,0,0)
        )
        bpy.context.object.data.materials.append(mat)
    return 
def changeLayerData(mat):
    for n in range(3, 8):
        # Создание n-угольника в слое 1
        bpy.ops.mesh.primitive_circle_add(
            vertices=n,
            radius=0.5,
            fill=True,
            view_align=True,
            location=(n-3,1,0)
        )
        bpy.context.object.data.materials.append(mat)
        # Затем перемещение его на новый слой
        ob = bpy.context.object
        ob.layers[n+11] = True
        # Удаление его из других слоев.
        layers = 20*[False]
        layers[n+11] = True
        for m in range(20):
            ob.layers[m] = layers[m]
    return 
def moveLayerOperator(mat):
    for n in range(3, 8):
        # Создание n-угольника в слое 1
        bpy.ops.mesh.primitive_circle_add(
            vertices=n,
            radius=0.5,
            fill=True,
            view_align=True,
            location=(n-3,2,0)
        )
        bpy.context.object.data.materials.append(mat)
        # Затем перемещение его на новый слой
        layers = 20*[False]
        layers[n+11] = True
        bpy.ops.object.move_to_layer(layers=layers)
    return  
def run():
    # Создание нескольких материалов
    red = bpy.data.materials.new('Red')
    red.diffuse_color = (1,0,0)
    green = bpy.data.materials.new('Green')
    green.diffuse_color = (0,1,0)
    blue = bpy.data.materials.new('Blue')
    blue.diffuse_color = (0,0,1)
    # Три метода перемещения объектов в новый слой
    createOnLayer(red)
    changeLayerData(green)
    moveLayerOperator(blue)
    # Выбор слоёв 14 - 20
    scn = bpy.context.scene
    bpy.ops.object.select_all(action='SELECT')
    for n in range(13,19):
        scn.layers[n] = True
    # Отмена выбора слоёв 1 - 13, но только впоследствии.
    # Похоже, по крайней мере один слой должен быть выбран всегда.
    for n in range(0,13):
        scn.layers[n] = False
    # Отмена выбора слоя 16
    scn.layers[15] = False
    return
if __name__ == "__main__":
    run()

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


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