Zmatrix 仅包含用于表示表面的 3D 数据,它不受您稍后应用于其可视化的照明/阴影设置的影响。
如果你想重现你通过加载“一些保存的数据”获得的图形,你必须沿着值保存Z矩阵(最好也保存X和Y)照明设置。
为此,您首先必须通过将 lightig 值分配给相应的一组变量来修改您的代码,然后您必须使用此变量来设置光照。
最后你必须保存所有这些变量。
[X,Y] = meshgrid(-2:.025:2);
Z = peaks(X,Y);
h = surf(X,Y,Z);
% Necessary for task
%h.AmbientStrength = 0.;
%h.SpecularStrength = 0.;
%h.DiffuseStrength = 1.;
%h.BackFaceLighting = 'unlit';
%h.FaceLighting = 'gouraud';
% Assign the setting values to a set of varialbles
AmbientStrength_val=0.;
SpecularStrength_val=0.;
DiffuseStrength_val=1.;
BackFaceLighting_val='unlit';
FaceLighting_val='gouraud';
h.AmbientStrength = AmbientStrength_val;
h.SpecularStrength = SpecularStrength_val;
h.DiffuseStrength = DiffuseStrength_val;
h.BackFaceLighting = BackFaceLighting_val;
h.FaceLighting = FaceLighting_val;
view_val=2;
%view(2);
view(view_val);
light_pos=[-2, -2, 50]
light_style='local'
light_color=[1 1 1]
%l = light('Position',[-2, -2, 50],'Style','local','Color',[1 1 1]);
l = light('Position',light_pos,'Style',light_style,'Color',light_color);
save('data_peaks.mat','X','Y','Z','AmbientStrength_val','SpecularStrength_val', ...
'DiffuseStrength_val','BackFaceLighting_val', ...
'FaceLighting_val','light_pos','light_style', ...
'light_color','view_val')
为了重现该图,将来您可以使用如下脚本:
% Load the saved values
load data_peaks
% Plot the surface
h = surf(X,Y,Z);
% Set the parameters
h.AmbientStrength = AmbientStrength_val;
h.SpecularStrength = SpecularStrength_val;
h.DiffuseStrength = DiffuseStrength_val;
h.BackFaceLighting = BackFaceLighting_val;
h.FaceLighting = FaceLighting_val;
view(view_val);
l = light('Position',light_pos,'Style',light_style,'Color',light_color);