I am trying to animate a rotating sphere in Matlab, however the lighting on the sphere rotates with it. Instead, I want the ball to rotate and the lighting to remain fixed using the coordinate system. Here's a gif of what my code is currently producing: Animation . And here is my code:
% Simulation Time dt = 0.05; time = 0:dt:5; % Prep Figure figure('Color',[1 1 1],'Renderer','zbuffer','ColorMap', [1,0,0; 0,0,1]) % Generate Sphere [X,Y,Z] = sphere(20); r = 0.75*25.4; h = surf(r*X,r*Y,r*Z,Z,'FaceColor','interp'); hold on % Adjust Axes, Lighting, and Shading axis equal view([40 25]); light('Position',[1 1 1]) set(findobj(gca,'type','surface'),... 'FaceLighting','phong',... 'AmbientStrength',.3,'DiffuseStrength',.8,... 'SpecularStrength',.9,'SpecularExponent',25,... 'BackFaceLighting','unlit','EdgeColor','k') filename = 'Rotation.gif'; for n = 1:36 rotate(h,[0 0 1],10,[0 0 0]) im = frame2im(getframe(1)); [imind,cm] = rgb2ind(im,256); if n == 1; imwrite(imind,cm,filename,'gif', 'Loopcount',inf,'DelayTime',dt); else imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',dt); end end