I wanted to have a number of videos tiled on the dome, maybe six or nine videos in the front upper surface of our tilted dome. The classical method would have been to use blender and a video texture. But that is very time consuming, and my blender skills are extremely rusty. Looking around for shortcuts, the General quadrilateral transform in Virtualdub was the first thing I thought of. But that filter does not support overlays - background remains a single colour. The Reform and Reformer plugins for avisynth did support overlay, but..... Reformer turned out to be buggy, the background video kept moving forward and back and turning green etc.... and Reform's output was too jaggy and aliased.
So, used the General Quadrilateral transform in Vdub, created a mask for each video, and used simple overlay calls in an avisynth script to overlay all the videos.
lrmask=Imagesource("lower_right_white0.jpg",end=450)
lr=avisource("lower_right.avi")
bg=overlay(bg,ul,mask=ulmask)
bg=overlay(bg,ll,mask=llmask)
bg=overlay(bg,um,mask=ummask)
bg=overlay(bg,ur,mask=urmask)
overlay(bg,lr,mask=lrmask)
For getting the shapes right, first I did a trial and error using the warped mesh as a template. But that was not getting me the shapes so easily - the warped mesh has latitudinal and longitudinal lines, not rectangular lines. Not so suitable for placing rectangular videos. Finally, thought of directly painting with gimp on the dome - put the mesh as a background layer for aligning the frame to the dome approximately, then painted the desired rectangles on a new layer. Using those rough outlines, noted the vertex co-ordinates as below.
lower middle video = 440x248 - 1.774
lbotx= 740
ltopx= 740
lboty=1079 #default
rboty=1079 #default
rtopx=1180
rbotx=1180
rtopy= 832
ltopy= 832
upper middle video = 340x220 - 1.54
lbotx= 800
ltopx= 800
lboty= 740
rboty= 740
rtopx=1140
rbotx=1140
rtopy= 520
ltopy= 520
lower right video
lbotx=1264
ltopx=1264
lboty=1079 #default
rboty=1079 #default
rtopx=1560 #changed from 1600
rbotx=1600
rtopy= 780
ltopy= 832
calculated lower left
rbotx= 656
rtopx= 656
rboty=1079 #default
lboty=1079 #default
ltopx= 360 #changed from 320
lbotx= 320
ltopy= 780
rtopy= 832
upper right video
lbotx=1260
ltopx=1220
lboty= 770
rboty= 730
rtopx=1480
rbotx=1550 #changed from 1590
rtopy= 530
ltopy= 600
calculated upper left
rbotx= 660
rtopx= 700
rboty= 770
lboty= 730
ltopx= 440
lbotx= 370 #changed from 330
ltopy= 530
rtopy= 600
So, used the General Quadrilateral transform in Vdub, created a mask for each video, and used simple overlay calls in an avisynth script to overlay all the videos.
lrmask=Imagesource("lower_right_white0.jpg",end=450)
lr=avisource("lower_right.avi")
and so on, where lower_right_white0.jpg looked like
bg=overlay(bg,ul,mask=ulmask)
bg=overlay(bg,ll,mask=llmask)
bg=overlay(bg,um,mask=ummask)
bg=overlay(bg,ur,mask=urmask)
overlay(bg,lr,mask=lrmask)
For getting the shapes right, first I did a trial and error using the warped mesh as a template. But that was not getting me the shapes so easily - the warped mesh has latitudinal and longitudinal lines, not rectangular lines. Not so suitable for placing rectangular videos. Finally, thought of directly painting with gimp on the dome - put the mesh as a background layer for aligning the frame to the dome approximately, then painted the desired rectangles on a new layer. Using those rough outlines, noted the vertex co-ordinates as below.
lower middle video = 440x248 - 1.774
lbotx= 740
ltopx= 740
lboty=1079 #default
rboty=1079 #default
rtopx=1180
rbotx=1180
rtopy= 832
ltopy= 832
upper middle video = 340x220 - 1.54
lbotx= 800
ltopx= 800
lboty= 740
rboty= 740
rtopx=1140
rbotx=1140
rtopy= 520
ltopy= 520
lower right video
lbotx=1264
ltopx=1264
lboty=1079 #default
rboty=1079 #default
rtopx=1560 #changed from 1600
rbotx=1600
rtopy= 780
ltopy= 832
calculated lower left
rbotx= 656
rtopx= 656
rboty=1079 #default
lboty=1079 #default
ltopx= 360 #changed from 320
lbotx= 320
ltopy= 780
rtopy= 832
upper right video
lbotx=1260
ltopx=1220
lboty= 770
rboty= 730
rtopx=1480
rbotx=1550 #changed from 1590
rtopy= 530
ltopy= 600
calculated upper left
rbotx= 660
rtopx= 700
rboty= 770
lboty= 730
ltopx= 440
lbotx= 370 #changed from 330
ltopy= 530
rtopy= 600
No comments:
Post a Comment