Tôi đang cố gắng tạo hiệu ứng một quả cầu quay trong Matlab, tuy nhiên ánh sáng trên quả cầu quay với nó. Thay vào đó, tôi muốn quả cầu xoay trong khi ánh sáng vẫn cố định với hệ tọa độ. Dưới đây là gif mã của tôi hiện đang sản xuất: Animation. Và đây là mã của tôi:Chiếu sáng với bề mặt hoạt hình trong 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
Tôi không chắc mình hiểu yêu cầu của bạn. Nếu một hình cầu quay xung quanh chính trung tâm của nó và màu sắc (hoặc hiệu ứng ánh sáng) vẫn còn, thì không còn hoạt hình nữa. Trừ khi bạn có nghĩa là bạn muốn châu lục và đại dương, thêm vào sau, để quay? Nếu không, bạn cần giữ một số giá trị màu vẫn còn (= ánh sáng) và xoay một số giá trị màu khác (= lục địa và đại dương) và cho mỗi hình ảnh bạn co giãn (nhân) cả hai. – Wli
@Wli Câu hỏi có vẻ tốt hơn là: "Tại sao đối tượng ánh sáng được đặt trong hệ tọa độ tuyệt đối ở '[1 1 1]' có vẻ như xoay với hình cầu. Thực tế xoay được gọi chỉ cho đối tượng hình cầu chứ không phải đối tượng ánh sáng ". Tôi đã kiểm tra vị trí của ánh sáng trong vòng lặp, nó không bao giờ thay đổi. Vì vậy, đối với hàng hóa tốt hay xấu, có vẻ như MATLAB không cập nhật các hiệu ứng ánh sáng sau khi cuộc gọi quay (không trực quan). – CitizenInsane
Dường như nó có thể là một vấn đề với bề mặt 'VertexNormals' không cập nhật. http://www.mathworks.co.uk/matlabcentral/fileexchange/35210-rotate-m-function-fixed – nkjt