Private
Public Access
43 lines
2.6 KiB
Python
43 lines
2.6 KiB
Python
"""Append a simulated saved group snapshot of the four synthetic visitors."""
|
|
from pathlib import Path
|
|
import array, math, random, wave
|
|
from PIL import Image, ImageEnhance
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
OUT = ROOT / 'preview/v4'
|
|
image = Image.open(OUT/'frames/review_185.png').convert('RGB')
|
|
image = ImageEnhance.Brightness(image).enhance(1.7)
|
|
image.save(OUT/'group_photo.png')
|
|
image.save(OUT/'gruppenfoto_demo_001.png')
|
|
import bpy
|
|
bpy.ops.wm.open_mainfile(filepath=str(OUT/'halloween_cone_demo_audio_v2.blend'))
|
|
s=bpy.context.scene
|
|
seq=s.sequence_editor.sequences
|
|
photo=seq.new_image('Group snapshot - four fictional visitors',str(OUT/'group_photo.png'),channel=30,frame_start=481)
|
|
photo.frame_final_duration=72
|
|
photo.transform.scale_x=.88;photo.transform.scale_y=.88
|
|
for name,body,y,size,color in [
|
|
('Photo title','GRUPPENFOTO GESPEICHERT',.96,30,(.4,1,.8,1)),
|
|
('Photo file','gruppenfoto_demo_001.png | 4 fiktive Besucher',.085,20,(.9,.9,.9,1)),
|
|
('Simulation','SIMULATION / 3D-FIGUREN',.045,17,(.65,.8,.8,1))]:
|
|
strip=seq.new_effect(name,type='TEXT',channel=31+len([x for x in seq if x.name.startswith('Photo')]),frame_start=481,frame_end=553)
|
|
strip.text=body;strip.font_size=size;strip.color=color;strip.location=(.5,y);strip.align_x='CENTER';strip.use_shadow=True
|
|
flash=seq.new_effect('Camera flash',type='COLOR',channel=40,frame_start=481,frame_end=486)
|
|
flash.color=(1,1,1);flash.blend_type='ALPHA_OVER'
|
|
flash.blend_alpha=.75;flash.keyframe_insert('blend_alpha',frame=481)
|
|
flash.blend_alpha=0;flash.keyframe_insert('blend_alpha',frame=485)
|
|
rate=24000;random.seed(51);sound=[]
|
|
for i in range(rate*3):
|
|
t=i/rate
|
|
click=.16*random.uniform(-1,1)*math.exp(-t*75)
|
|
click+=.08*random.uniform(-1,1)*math.exp(-max(0,t-.11)*90) if t>=.11 else 0
|
|
sound.append(round(click*32767))
|
|
with wave.open(str(OUT/'group_photo_shutter.wav'),'wb') as w:
|
|
w.setparams((1,2,rate,len(sound),'NONE','not compressed'));w.writeframes(array.array('h',sound).tobytes())
|
|
seq.new_sound('Camera shutter',str(OUT/'group_photo_shutter.wav'),channel=41,frame_start=481)
|
|
s.frame_end=552
|
|
s.render.image_settings.file_format='FFMPEG';s.render.ffmpeg.format='MPEG4';s.render.ffmpeg.codec='H264';s.render.ffmpeg.constant_rate_factor='HIGH';s.render.ffmpeg.audio_codec='AAC';s.render.ffmpeg.audio_bitrate=192
|
|
s.render.filepath=str(OUT/'halloween_group_photo.mp4')
|
|
bpy.ops.file.pack_all();bpy.ops.wm.save_as_mainfile(filepath=str(OUT/'halloween_group_photo.blend'))
|
|
bpy.ops.render.render(animation=True)
|
|
s.render.image_settings.file_format='PNG';s.frame_set(510);s.render.filepath=str(OUT/'group_photo_end.png');bpy.ops.render.render(write_still=True)
|