"""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)