How do you get realistic textures when shading graphs?

2 次查看(过去 30 天)
x = @(r, t) r.*cos(t);
y = @(r, t) r.*sin(t);
z = @(r) 3.*r;
r = linspace(0, 2, 30);
t = linspace(0, 2*pi, 15);
[R, T] = meshgrid(r,t);
X = x(R,T);
Y = y(R,T);
Z = z(R);
surf(X, Y, Z)
hold on
x = @(r, t, p) r.*cos(t).*sin(p);
y = @(r, t, p) r.*sin(t).*sin(p);
z = @(r, p) r.*cos(p) + 6;
r = 2;
t = linspace(0, 2*pi, 100);
p = linspace(0, pi/2, 100);
[T, P] = meshgrid(t, p);
X = x(r, T, P);
Y = y(r, T, P);
Z = z(r, P);
surf(X, Y, Z)
shading interp
hold off
axis off
mycolors = [0.9 0.66 0.4;
0.9 0.66 0.4;
0.9 0.66 0.4;
0.9 0.66 0.4;
0.9 0.66 0.4;
0.222 0.184 0.135;
0.635 0.078 0.184;
1 0 1];
colormap(mycolors)
axis equal
This is the code for an ice-cream shaped 3D graph. I would like to colour/shade the graph to look like a realistic ice cream but I cannot seem to find any information about how this is done if anyone can please help me.

回答(2 个)

Star Strider
Star Strider 2022-9-13
编辑:Star Strider 2022-9-14
I am not certain what result you want.
One option is to interpolate the ‘mycolors’ matrix —
x = @(r, t) r.*cos(t);
y = @(r, t) r.*sin(t);
z = @(r) 3.*r;
r = linspace(0, 2, 30);
t = linspace(0, 2*pi, 15);
[R, T] = meshgrid(r,t);
X = x(R,T);
Y = y(R,T);
Z = z(R);
surf(X, Y, Z)
hold on
x = @(r, t, p) r.*cos(t).*sin(p);
y = @(r, t, p) r.*sin(t).*sin(p);
z = @(r, p) r.*cos(p) + 6;
r = 2;
t = linspace(0, 2*pi, 100);
p = linspace(0, pi/2, 100);
[T, P] = meshgrid(t, p);
X = x(r, T, P);
Y = y(r, T, P);
Z = z(r, P);
surf(X, Y, Z)
shading interp
hold off
axis off
icecream = [0.222 0.184 0.135;
0.635 0.078 0.184;
1 0 1]; % Original 'icecream' Part
icecreami = interp1((0:2), icecream, (0:0.1:2)); % Interpolate
mycolors = [0.9 0.66 0.4;
0.9 0.66 0.4;
0.9 0.66 0.4;
0.9 0.66 0.4;
0.9 0.66 0.4;
icecreami];
mycolors = [repmat(mycolors(1,:),50,1);
icecreami]; % New 'mycolors' Matrix
colormap(mycolors)
axis equal
shading('interp')
See the documentation on the interp1 function for detailed information on it.
EDIT — (14 Sep 2022 at 1:06)
I just now remembered that the Lighting Overview may provide some help in working with the lighting propperties of your surface object. I am not experimenting with them here, because I am not certain what you want to do.
.

Image Analyst
Image Analyst 2022-9-14
Try
Sorry - I have no MATLAB code for bump mapping.

类别

Help CenterFile Exchange 中查找有关 Antennas, Microphones, and Sonar Transducers 的更多信息

产品


版本

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by