С питоном, в блендер вставьте ЭФФЕКТ ПОЛОСУ, как ВИП в РЕДАКТОРЕ ВИДЕОСЛЕДОВАТЕЛЬНОСТИ - PullRequest
0 голосов
/ 08 ноября 2018

В Blender с помощью VIDEO SEQUENCE EDITOR вы можете вставлять неподвижные изображения (.jpg или png) в виде ПОЛОСА ИЗОБРАЖЕНИЯ и создавать карусель.

In Blender using VIDEO SEQUENCE EDITOR you can insert still images (.jpg or png) as an IMAGE STRIP and create a carrousel

Между каждым изображением / ПОЛОЖКОЙ ИЗОБРАЖЕНИЯ вы можете вставить ЭФФЕКТУ ПОЛОСУ как WIPE, чтобы создать переход между изображениями / ПОЛОЖКОЙ ИЗОБРАЖЕНИЯ.

Between each image / IMAGE STRIP you can insert an EFFECT STRIP as WIPE to create a transition between images

Результат:

enter image description here

Я могу вставлять изображения в виде полоски изображения в редактор видеопоследовательности, используя python.

Пример:

Я вставляю изображения в виде ПОЛОСА ИЗОБРАЖЕНИЯ в РЕДАКТОР ВИДЕОСЛЕДОВАТЕЛЬНОСТИ, используя этот код:

import bpy, os

def importar():
    bpy.context.area.type = 'SEQUENCE_EDITOR'
    bpy.ops.sequencer.image_strip_add(directory="D:\\_webpages\\", files=[{"name": "000.jpg","name":"000.jpg" }], relative_path=True, show_multiview=False, frame_start=1, frame_end=289, channel=1);
    bpy.ops.sequencer.image_strip_add(directory="D:\\_webpages\\", files=[{"name": "001.jpg","name":"001.jpg" }], relative_path=True, show_multiview=False, frame_start=241, frame_end=529, channel=2);
    bpy.ops.sequencer.image_strip_add(directory="D:\\_webpages\\", files=[{"name": "002.jpg","name":"002.jpg" }], relative_path=True, show_multiview=False, frame_start=481, frame_end=770, channel=1);
    bpy.ops.sequencer.image_strip_add(directory="D:\\_webpages\\", files=[{"name": "003.jpg","name":"003.jpg" }], relative_path=True, show_multiview=False, frame_start=722, frame_end=1012, channel=2);
    bpy.ops.sequencer.image_strip_add(directory="D:\\_webpages\\", files=[{"name": "004.jpg","name":"004.jpg" }], relative_path=True, show_multiview=False, frame_start=964, frame_end=1255, channel=1);
    bpy.ops.sequencer.image_strip_add(directory="D:\\_webpages\\", files=[{"name": "005.jpg","name":"005.jpg" }], relative_path=True, show_multiview=False, frame_start=1207, frame_end=1499, channel=2);

importar()

Результат: я вставляю несколько изображений, каждое в свой чередующийся канал и в свою собственную ПОЛОСУ ИЗОБРАЖЕНИЯ.

Существует наложение между изображениями / ПОЛОСА ИЗОБРАЖЕНИЯ, чтобы разрешить переход.

В настоящее время я хочу создать EFFECT STRIP как WIPE, используя python.

Вручную, чтобы создать ЭФФЕКТ ПОЛОСУ в виде WIPE, вам необходимо:

а) выберите одно изображение / ПОЛОСУ ИЗОБРАЖЕНИЯ с помощью мыши

b) нажмите клавишу Shift и выберите другое изображение / ПОЛОСА ИЗОБРАЖЕНИЯ с помощью мыши

c) добавьте эффект стирания, выбрав опцию ADD> EFFECT STRIP> WIPE

При выборе первого изображения / ПОЛОСА ИЗОБРАЖЕНИЯ в информационном окне появляется следующий код:

bpy.ops.sequencer.select(extend=False, linked_handle=False, left_right='NONE', linked_time=False)

При выборе второго изображения / ПОЛОСА ИЗОБРАЖЕНИЯ в информационном окне появляется такой код:

bpy.ops.sequencer.select(extend=True, linked_handle=False, left_right='NONE', linked_time=False)

Когда вы добавляете эффект стирания, нажимая на опцию ADD> EFFECT STRIP> WIPE, в информационном окне появляется такой код:

bpy.ops.sequencer.effect_strip_add(frame_start=71, frame_end=96, type='WIPE')

enter image description here

Я пытался создать EFFECT STRIP с помощью python, но не могу понять, как выбрать изображение / IMAGE STRIP A, затем выбрать изображение / IMAGE STRIP B и затем создать EFFECT STRIP.

Как выбрать изображение / ПОЛОСА ИЗОБРАЖЕНИЯ A, а затем выбрать изображение / ПОЛОСУ ИЗОБРАЖЕНИЯ B с кодом?

Можно назвать полоску изображения и выбрать ее по имени?

В настоящее время я создал вручную ЭФФЕКТ ПОЛОСУ

У каждой ЭФФЕКТНОЙ ПОЛОСЫ есть имя

С помощью python я могу изменить свойства EFFECT STRIP, например, установить эффект размытия:

bpy.context.scene.sequence_editor.sequences_all["Wipe"].blur_width = 0.5
bpy.context.scene.sequence_editor.sequences_all["Wipe.001"].blur_width = 0.5
bpy.context.scene.sequence_editor.sequences_all["Wipe.002"].blur_width = 0.5
bpy.context.scene.sequence_editor.sequences_all["Wipe.003"].blur_width = 0.5
bpy.context.scene.sequence_editor.sequences_all["Wipe.004"].blur_width = 0.5
bpy.context.scene.sequence_editor.sequences_all["Wipe.005"].blur_width = 0.5
bpy.context.scene.sequence_editor.sequences_all["Wipe.006"].blur_width = 0.5
bpy.context.scene.sequence_editor.sequences_all["Wipe.007"].blur_width = 0.5
bpy.context.scene.sequence_editor.sequences_all["Wipe.008"].blur_width = 0.5
bpy.context.scene.sequence_editor.sequences_all["Wipe.009"].blur_width = 0.5
bpy.context.scene.sequence_editor.sequences_all["Wipe.010"].blur_width = 0.5

С помощью python я могу изменить свойства EFFECT STRIP, например, тип перехода, направление,

bpy.context.scene.sequence_editor.sequences_all["Wipe.001"].transition_type = 'IRIS';

bpy.context.scene.sequence_editor.sequences_all["Wipe.002"].transition_type = 'IRIS';
bpy.context.scene.sequence_editor.sequences_all["Wipe.002"].direction = 'IN';

bpy.context.scene.sequence_editor.sequences_all["Wipe.003"].transition_type = 'SINGLE';

bpy.context.scene.sequence_editor.sequences_all["Wipe.004"].transition_type = 'SINGLE';
bpy.context.scene.sequence_editor.sequences_all["Wipe.004"].direction = 'IN';

bpy.context.scene.sequence_editor.sequences_all["Wipe.005"].transition_type = 'SINGLE';
bpy.context.scene.sequence_editor.sequences_all["Wipe.005"].angle = 0.785398;

bpy.context.scene.sequence_editor.sequences_all["Wipe.006"].transition_type = 'SINGLE';
bpy.context.scene.sequence_editor.sequences_all["Wipe.006"].direction = 'IN';
bpy.context.scene.sequence_editor.sequences_all["Wipe.006"].angle = 0.785398;

bpy.context.scene.sequence_editor.sequences_all["Wipe.007"].transition_type = 'SINGLE';
bpy.context.scene.sequence_editor.sequences_all["Wipe.007"].angle = 1.5708;

bpy.context.scene.sequence_editor.sequences_all["Wipe.008"].transition_type = 'SINGLE';
bpy.context.scene.sequence_editor.sequences_all["Wipe.008"].direction = 'IN';
bpy.context.scene.sequence_editor.sequences_all["Wipe.008"].angle = 1.5708;

bpy.context.scene.sequence_editor.sequences_all["Wipe.009"].transition_type = 'DOUBLE';

bpy.context.scene.sequence_editor.sequences_all["Wipe.010"].transition_type = 'DOUBLE';
bpy.context.scene.sequence_editor.sequences_all["Wipe.010"].direction = 'IN';

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Большое спасибо, Сэмблер.

Это работает очень хорошо!

Рабочий пример, просто скопируйте и вставьте для тестирования на консоли Python (измените реальные пути и имена изображений)

import bpy, os

from bpy import context

scene = context.scene

def importar():
    scene.sequence_editor_create()
    bpy.context.area.type = 'SEQUENCE_EDITOR'
    #
    # import images as image strip
    #
    s1= scene.sequence_editor.sequences.new_image('p01', '/real_path_to_file/000.jpg',1,1);
    s2= scene.sequence_editor.sequences.new_image('p02', '/real_path_to_file/001.jpg',2,241);
    s3= scene.sequence_editor.sequences.new_image('p03', '/real_path_to_file/002.jpg',1,481);
    s4= scene.sequence_editor.sequences.new_image('p04', '/real_path_to_file/003.jpg',2,722);
    s5= scene.sequence_editor.sequences.new_image('p05', '/real_path_to_file/004.jpg',1,964);
    #
    # set duration for each strip
    #
    s1.frame_final_duration = 288;
    s2.frame_final_duration = 288;
    s3.frame_final_duration = 288;
    s4.frame_final_duration = 288;
    s5.frame_final_duration = 288;
    #
    # create wipe effect
    #
    w1= scene.sequence_editor.sequences.new_effect('wipe01', 'WIPE', 3,s2.frame_start,s1.frame_final_end,seq1=s1, seq2=s2);
    w2= scene.sequence_editor.sequences.new_effect('wipe02', 'WIPE', 3,s3.frame_start,s2.frame_final_end,seq1=s2, seq2=s3);
    w3= scene.sequence_editor.sequences.new_effect('wipe03', 'WIPE', 3,s4.frame_start,s3.frame_final_end,seq1=s3, seq2=s4);
    w4= scene.sequence_editor.sequences.new_effect('wipe04', 'WIPE', 3,s5.frame_start,s4.frame_final_end,seq1=s4, seq2=s5);
    #
    # set blur property for wipe effect
    #
    bpy.context.scene.sequence_editor.sequences_all["wipe01"].blur_width = 0.5;
    bpy.context.scene.sequence_editor.sequences_all["wipe02"].blur_width = 0.5;
    bpy.context.scene.sequence_editor.sequences_all["wipe03"].blur_width = 0.5;
    bpy.context.scene.sequence_editor.sequences_all["wipe04"].blur_width = 0.5;    
    #
    # set properties for wipe effects
    #
    bpy.context.scene.sequence_editor.sequences_all["wipe01"].transition_type = 'SINGLE';
    bpy.context.scene.sequence_editor.sequences_all["wipe01"].direction = 'IN';
    bpy.context.scene.sequence_editor.sequences_all["wipe02"].transition_type = 'SINGLE';
    bpy.context.scene.sequence_editor.sequences_all["wipe02"].angle = 0.785398;
    bpy.context.scene.sequence_editor.sequences_all["wipe03"].transition_type = 'SINGLE';
    bpy.context.scene.sequence_editor.sequences_all["wipe03"].direction = 'IN';
    bpy.context.scene.sequence_editor.sequences_all["wipe03"].angle = 0.785398;
    bpy.context.scene.sequence_editor.sequences_all["wipe04"].transition_type = 'SINGLE';
    bpy.context.scene.sequence_editor.sequences_all["wipe04"].angle = 1.5708;

importar()

Для пояснения некоторых методов этот код добавляет вручную каждую полосу изображения, эффект стирания и свойства эффекта.

Очевидно, что с python вы можете автоматизировать и добавлять все файлы png или jpgs в каталог ... автоматизировать создание эффекта стирания ... автоматизировать или рандомизировать свойства каждого эффекта стирания.

0 голосов
/ 09 ноября 2018

Вместо того, чтобы использовать операторы Blender, рекомендуется обращаться к данным непосредственно в сценариях, кроме соображений производительности часто с ними проще и понятнее работать с данными.

Вы можете найти список последовательностей VSE в свойствах сцены

import bpy
seqs = bpy.context.scene.sequence_editor.sequences

Затем вы можете добавить новые полосы последовательности в этот список и настроить любые свойства полосы -

s1 = seqs.new_image('img001', '//renders/img001.jpg', 1, 1)
s1.frame_final_duration = 288
s2 = seqs.new_image('img002', '//renders/img002.jpg', 2, 241)
s2.frame_final_duration = 288

Затем, используя ссылку на две полоски, создайте эффект стирания

w = seqs.new_effect('wipe01', 'WIPE', 3,
            s2.frame_start, s1.frame_final_end, seq1=s1, seq2=s2)
w.transition_type = 'IRIS'

Затем, начиная со второй полосы, добавьте еще одну полосу и протрите их

s1 = s2
s2 = seqs.new_image('img003', '//renders/img003.jpg', 1, 481)
s2.frame_final_duration = 288
w = seqs.new_effect('wipe02', 'WIPE', 3,
            s2.frame_start, s1.frame_final_end, seq1=s1, seq2=s2)
w.transition_type = 'SINGLE'

s1 = s2
s2 = seqs.new_image('img004', '//renders/img004.jpg', 2, 722)
s2.frame_final_duration = 288
w = seqs.new_effect('wipe03', 'WIPE', 3,
            s2.frame_start, s1.frame_final_end, seq1=s1, seq2=s2)
w.transition_type = 'DOUBLE'
...