• Remix
  • Share
  • New Entry

on 15 Nov 2023
  • 23
  • 65
  • 0
  • 2
  • 657
drawframe(1);
Write your drawframe function below
function drawframe(f)
persistent S cdata
if f==1 || isempty(S)
imshow(tonemap(hdrread('office.hdr')));
set(gca,'Position',[0 0 1 1])
hold on
for k = 1:2
F=getframe(gca);
cdata = F.cdata;
% I used [x,y]=ginput(4) to capture the corners of the monitor
[xm, ym] = meshgrid(linspace(0,207,size(cdata,2)),linspace(-70,70,size(cdata,1)));
skewVals = fliplr(xm/207)*.07+.93;
ym = ym.*skewVals;
S=surf(xm+200,ym+410,xm*0,'FaceColor','texturemap','CData',cdata,'EdgeColor','none');
rotate(S,[0 0 1],-2.8);
end
end
blur = f/48*4.9+0.1; % 0.1 to 5
B = imgaussfilt(cdata,blur);
S.CData = cdata;
% Start camera
q = exp(f/20)/35+.7; % ~0.4 to 1
viewAngle = q*f/48*4.4+2;
camva(viewAngle)
startTarget = [307 432 0];
endTarget = [500.5 333 0];
deltaTarget = (q*(f-1))/47 * (endTarget - startTarget);
camtarget(startTarget + deltaTarget)
end
Animation
Remix Tree