mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-04 18:03:14 +02:00
* works for cornell now, will be extended to import others * works for all scenes * can load environments and blur them * minor cleanup * Example commands added to README.md
55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
from .scene import Scene
|
|
import numpy as np
|
|
from pathlib import Path
|
|
|
|
|
|
def create_animation(scene,samples_per_pixel, fps, start_time, final_time, update_scene, name):
|
|
|
|
"""
|
|
this function render a list of frames and saves them in ./frames folder. You can make an animation the using ffmpeg running
|
|
from the command prompt:
|
|
"""
|
|
#ffmpeg -r 60 -f image2 -s 854x480 -i your_image_%d.png -vcodec libx264 -crf 1 -pix_fmt yuv420p your_video.mp4
|
|
#fps #resoluion #crf = quality (less is better)
|
|
|
|
|
|
number_of_frames = int(fps*(final_time - start_time))
|
|
dt = (final_time - start_time)/number_of_frames
|
|
t = start_time
|
|
|
|
try:
|
|
Path("./frames").mkdir()
|
|
|
|
except FileExistsError:
|
|
pass
|
|
|
|
|
|
for i in range(0,number_of_frames):
|
|
update_scene(scene, t)
|
|
img = scene.render(samples_per_pixel)
|
|
t += dt
|
|
img.save("frames/" + name + "_" + str(i) + ".png")
|
|
|
|
|
|
|
|
|
|
def create_animation_using_opencv(scene, samples_per_pixel , fps, start_time, final_time, update_scene, name):
|
|
|
|
import cv2
|
|
number_of_frames = int(fps*(final_time - start_time))
|
|
dt = (final_time - start_time)/number_of_frames
|
|
t = start_time
|
|
|
|
|
|
videodims = (scene.camera.screen_width, scene.camera.screen_height)
|
|
fourcc = cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')
|
|
video = cv2.VideoWriter(name,fourcc, fps,videodims)
|
|
|
|
for i in range(0,number_of_frames):
|
|
update_scene(scene, t)
|
|
frame = scene.render(samples_per_pixel)
|
|
video.write(cv2.cvtColor(np.array(frame), cv2.COLOR_RGB2BGR))
|
|
t += dt
|
|
|
|
video.release()
|