首页/文章/ 详情

Matlab光源材质设置技巧

3年前浏览2586

image.png

 过冷水诚挚邀请你加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载,qq:927550334 

QQ图片20210424105303.png

过冷水在往期的推文中经常会和大家分享一些绘图的程序,以及Matlab绘图图片,对于不太熟悉Matlab绘图设置的用户来说,会习惯性吐槽Matlab绘图太难看,本期过冷水就和大家分享一些不常见的图像绘图命令,让图像绘制上一个台阶。

(1) 绘图色彩调整

Matlab中提供了colormap 函数,可以根据颜色映像矩阵对图像对象的颜色进行调整。所谓颜色映像矩阵就是k*3的矩阵,k表示有k种颜色,每行3个元素分别表示红、绿、蓝三元色的灰度值,取值[0,1]之间。

colormap(map)  %map为当前颜色映像矩阵

colormap('default')  %映像默认值

cmap = colormap  %获取当前映像矩阵

colormap(ax,…)   %获取当前axes对象的颜色映像矩阵

(2) 着色方式调整

有了颜色之后,颜色的着色效果可以通过shading函数来调整。shading函数的训用格式如下;

shading flat  平面着色,同一个小网格面和相应的线段用同一种颜色着色。

shading faceted类似于shading flat,平面着色只是网格线都用色,属于默认着色。

 shading interp 通过颜色插值方式着色。

 shading(axes handle,…) 为句柄值为axes_handle 的坐标的图形对象设置着色方式。

(3)透明度调整

可以训过alpha数调整图形对象透明度,最简单调用格式

alpha ( alpha_data),%% alpha_data是0~1之间的数,alpha_data=0表示完全透明, alpha_dat=1表示完全不透明。

image.png

figure;
figure1=figure;
subplot1=subplot(1,2,1,'Parent',figure1);
hold(subplot1,'on');
[X,Y,Z] = sphere;
surf(X,Y,Z,'Parent',subplot1); 
colormap(subplot1,lines);
shading interp
mesh(2*X,2*Y,2*Z,'Parent',subplot1)
view(subplot1,[-1.21330827067669 32.2499982888347]);
title(subplot1,'网格透视')
hidden off 
axis equal 
axis off
subplot2=subplot(1,2,2,'Parent',figure1);
hold(subplot2,'on');
surf(X,Y,Z,'Parent',subplot2,'FaceColor','r'); 
hold on; 
surf(2*X,2*Y,2*Z,'Parent',subplot2,'FaceAlpha',0.4);
title(subplot2,'面格透视')
view(subplot2,[-0.303327067669173 43.5374986232897]);
axis equal
axis off

(4)光源设置与属性调整

用light函数可在当前坐标系中建立一个光源,该函数的调用格式

light( 'ProDertName',propertyvalue,…)  %光源对象的主要属性有:'Position' , 'Color'和Style' .'Position'是位置属性

 handle = light(…) %建立一个光源,开句柄handle ,之后可通过get(handle)查看光源所有属性

(5)调整完照模式

建立光源之后,可使用lighting函数调整光照模式,使用方法

lighting flat  %产生均匀光照

lighting gouraud  %计算顶点法线并作线性插值修改表面颜色

lighting phong  %做线性插值并计算每个像素反射率来修改表面颜色

lighting none %关掉照明。

(6)图形表面对光照反射属性设置

不同材质物体对光照反射效果是不同的。MATLAB中提供了material函数,用来设置图形表面的材质属性,从而按制图形表面对光昭的反射效果。

material shiny  %镜面效果,使图形对象有相对较高的镜面反射,镜而光的颜色仅取决于光源颜色。

 material dull  %类似于木质表面效果,健图形对象有事多的反时,反射光颜色取决于光源颜色。

materlal metal  %金属面效果,使图形对有非高的镜面反射,反射光颜色取决于光源颜色。

material([ka kd ks])

material([ka kd ks n])

material([a kd ks n sc])

 用ka , kd和ks分别设置图形对环境光、漫反射和镜面反射,n表示镜面指数,sc表示镜面颜色反射系数。

(7)调,视.点位置

在绘制三维图形时,视点位置决定了坐标轴方向,从不同视点来看,图形对象之间也可能有不同网挡关系。

view 函数调用格式:

view(az,el)  %设置三维绘图视角,方位角az表示从y轴负向开始绕z轴旋转度数,逆时针旋转时z取正值,el表示相对于xoy平面仰角,在xoy平面上方取正值,在xoy平面的下方取负值。

view([x,y,z])  %设置视点的三维直角坐标[x,y,z]。

view(2)  %设置默认的二维视角,az=0,el=90

view(3)  %设置默认的三维视角az=-37.5, el=30。

view(ax,…) %设置句柄值为ax的坐标系的视角。

[az,el] = view

返回当前方向角和仰角。

image.png 

t=0:pi/20:2*pi;
[x,y,z]= cylinder(2 sin(t),100);
surf(x,y,z);
xlabel('X'); ylabel('Y'); zlabel('Z');
set(gca,'color','none');
set(gca,'XColor',[0.5 0.5 0.5]);
set(gca,'YColor',[0.5 0.5 0.5]);
set(gca,'ZColor',[0.5 0.5 0.5]);
shading interp;
colormap(copper);
light('Posi',[-4 -1 0]); 
lighting phong;
material metal; 
hold on;
axis off


image.png 

vert = [0 0 0;0 200 0;200 200 0;200 0 0;0 0 100;...
           0 200 100;200 200 100;200 0 100];
fac = [1 2 3 4;2 6 7 3;4 3 7 8;1 5 8 4;1 2 6 5;5 6 7 8];
view(3);
h = patch('faces',fac,'vertices',vert,'FaceColor','g');
set(h,'FaceAlpha',0.25);
hold on;
[x0,y0,z0] = sphere;
x = 30   30*x0; y = 50   30*y0; z = 50   30*z0;
h1 = surf(x,y,z,'linestyle','none','FaceColor','r','EdgeColor','none');
x = 110   30*x0; y = 110   30*y0; z = 50   30*z0;
h2 = surf(x,y,z,'linestyle','none','FaceColor','b','EdgeColor','none');
x = 110   30*x0; y = 30   30*y0; z = 50   30*z0;
h3 = surf(x,y,z,'linestyle','none','FaceColor','y','EdgeColor','none');
xlabel('X'); ylabel('Y'); zlabel('Z');
lightangle(45,30);
lighting phong;
axis equal;
axis off

本期过冷水要和大家分享的图像处理命令就这么多,学会上述技巧,使用起来,让图像变的与众不同。

图片

        过冷水发表于 仿真秀 平台原创文章,未经授权禁止私自转载,如需转载请需要和作者沟通表明授权声明,未授权文章皆视为侵权行为,必将追责。如果您希望加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载均可加群:927550334。

精品回顾

 matlab绘制农夫过河动态图

分子动力学的原子空间运动轨迹演示编程

过冷水带你用matlab制作演示动画

python批量移动文件&重命名代码分享

过冷水和你分享 matlab读取存储各种文件的方法 文末有独家金曲分享

image.png

MATLAB
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2021-07-26
最近编辑:3年前
过冷水
博士 | 讲师 讨论号:927550334
获赞 361粉丝 184文章 107课程 11
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈