6
Matlab에서 회전하는 구의 애니메이션을 만들려고하지만 구형의 조명이 함께 회전합니다. 필자는 구가 좌표계로 고정 된 채로 회전하는 동안 구를 원합니다. 여기 내 코드가 현재 생산하고있는 GIF가 있습니다 : Animation.Matlab에 애니메이션 표면이있는 채로 유지
% 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
귀하의 요청을 이해할 수 있는지 확실하지 않습니다. 구체가 자체 중심에서 회전하고 색상 (또는 조명 효과)이 계속 유지되면 더 이상 애니메이션이 없습니다. 나중에 추가되는 대륙과 대양을 원한다는 뜻이 아니라면? 그렇지 않으면 어떤 색상 값을 계속 (= 밝게) 유지하고 다른 색상 값 (= 대륙과 대양)을 회전시키고 각 이미지에 대해 둘 다 convoluate (multiplicate)해야합니다. – Wli
@Wli 더 나은 질문 인 것 같습니다 : "[1 1 1]에서의 절대 좌표계에서 설정된 조명 객체가 구와 함께 회전하는 이유는 무엇입니까? 실제로 회전은 광원 객체가 아닌 구 객체에 대해서만 호출됩니다 ". 루프의 위치를 확인 했으므로 절대 바뀌지 않습니다. 그럼, 좋은 또는 나쁜, matlab에 빛을 업데이 트하지 않는 것 같습니다 (직관적이지 않습니다) 회전 호출 후. – CitizenInsane
'VertexNormals' 서페이스가 업데이트되지 않는 문제가있는 것처럼 보입니다. http://www.mathworks.co.uk/matlabcentral/fileexchange/35210-rotate-m-function-fixed – nkjt